From a0a273350eb30435b5061e26eb781b1120a928fc Mon Sep 17 00:00:00 2001 From: MymsMan Date: Wed, 11 Mar 2020 15:15:47 +0000 Subject: [PATCH] First commit of version 0.1.1-2 --- CONTROL/control | 11 + etc/fvConfig_default.json | 1 + etc/fvConfig_fixed size table.json | 1 + webif/plugin/flexview/DirColModel.json | 98 + webif/plugin/flexview/FlColModel.json | 266 + webif/plugin/flexview/configlist.jim | 10 + webif/plugin/flexview/contextmenu.js | 130 + webif/plugin/flexview/css/ui.jqgrid.css | 341 + webif/plugin/flexview/css/ui.multiselect.css | 30 + webif/plugin/flexview/deleteConfig.jim | 47 + webif/plugin/flexview/events.js | 22 + webif/plugin/flexview/flexview.css | 44 + webif/plugin/flexview/flexview.hook | 85 + webif/plugin/flexview/flexview.js | 73 + webif/plugin/flexview/genJSON.jim | 358 + webif/plugin/flexview/go.hook | 7 + webif/plugin/flexview/img/NotDecrypted.png | Bin 0 -> 4551 bytes webif/plugin/flexview/img/flexview.png | Bin 0 -> 70209 bytes webif/plugin/flexview/img/flexviewB.png | Bin 0 -> 71097 bytes webif/plugin/flexview/img/refresh02.png | Bin 0 -> 566 bytes webif/plugin/flexview/img/view.gif | Bin 0 -> 225 bytes webif/plugin/flexview/index.jim | 403 + webif/plugin/flexview/js/Changes.txt | 1160 ++ .../plugin/flexview/js/i18n/grid.locale-en.js | 220 + webif/plugin/flexview/js/install.txt | 43 + webif/plugin/flexview/js/jquery.fmatter.js | 485 + webif/plugin/flexview/js/jquery.jqGrid.js | 15651 ++++++++++++++++ webif/plugin/flexview/js/jquery.jqGrid.min.js | 20 + .../flexview/js/jquery.jqGrid.min.js.map | 1 + webif/plugin/flexview/loadConfig.jim | 48 + webif/plugin/flexview/menu.hook | 7 + webif/plugin/flexview/plugins/grid.addons.js | 704 + webif/plugin/flexview/plugins/grid.postext.js | 64 + .../flexview/plugins/grid.setcolumns.js | 126 + .../flexview/plugins/jquery.contextmenu.js | 147 + .../flexview/plugins/jquery.searchFilter.js | 716 + .../flexview/plugins/jquery.tablednd.js | 383 + .../plugin/flexview/plugins/searchFilter.css | 6 + .../flexview/plugins/ui.multiselect.css | 30 + .../plugin/flexview/plugins/ui.multiselect.js | 342 + webif/plugin/flexview/saveConfig.jim | 50 + webif/plugin/flexview/script.js | 1341 ++ webif/plugin/flexview/style.css | 106 + webif/plugin/flexview/toolbar.hook | 4 + 44 files changed, 23581 insertions(+) create mode 100644 CONTROL/control create mode 100644 etc/fvConfig_default.json create mode 100644 etc/fvConfig_fixed size table.json create mode 100644 webif/plugin/flexview/DirColModel.json create mode 100644 webif/plugin/flexview/FlColModel.json create mode 100755 webif/plugin/flexview/configlist.jim create mode 100644 webif/plugin/flexview/contextmenu.js create mode 100644 webif/plugin/flexview/css/ui.jqgrid.css create mode 100644 webif/plugin/flexview/css/ui.multiselect.css create mode 100755 webif/plugin/flexview/deleteConfig.jim create mode 100644 webif/plugin/flexview/events.js create mode 100644 webif/plugin/flexview/flexview.css create mode 100644 webif/plugin/flexview/flexview.hook create mode 100644 webif/plugin/flexview/flexview.js create mode 100755 webif/plugin/flexview/genJSON.jim create mode 100644 webif/plugin/flexview/go.hook create mode 100644 webif/plugin/flexview/img/NotDecrypted.png create mode 100644 webif/plugin/flexview/img/flexview.png create mode 100644 webif/plugin/flexview/img/flexviewB.png create mode 100644 webif/plugin/flexview/img/refresh02.png create mode 100644 webif/plugin/flexview/img/view.gif create mode 100755 webif/plugin/flexview/index.jim create mode 100644 webif/plugin/flexview/js/Changes.txt create mode 100644 webif/plugin/flexview/js/i18n/grid.locale-en.js create mode 100644 webif/plugin/flexview/js/install.txt create mode 100644 webif/plugin/flexview/js/jquery.fmatter.js create mode 100644 webif/plugin/flexview/js/jquery.jqGrid.js create mode 100644 webif/plugin/flexview/js/jquery.jqGrid.min.js create mode 100644 webif/plugin/flexview/js/jquery.jqGrid.min.js.map create mode 100755 webif/plugin/flexview/loadConfig.jim create mode 100644 webif/plugin/flexview/menu.hook create mode 100644 webif/plugin/flexview/plugins/grid.addons.js create mode 100644 webif/plugin/flexview/plugins/grid.postext.js create mode 100644 webif/plugin/flexview/plugins/grid.setcolumns.js create mode 100644 webif/plugin/flexview/plugins/jquery.contextmenu.js create mode 100644 webif/plugin/flexview/plugins/jquery.searchFilter.js create mode 100644 webif/plugin/flexview/plugins/jquery.tablednd.js create mode 100644 webif/plugin/flexview/plugins/searchFilter.css create mode 100644 webif/plugin/flexview/plugins/ui.multiselect.css create mode 100644 webif/plugin/flexview/plugins/ui.multiselect.js create mode 100755 webif/plugin/flexview/saveConfig.jim create mode 100644 webif/plugin/flexview/script.js create mode 100644 webif/plugin/flexview/style.css create mode 100644 webif/plugin/flexview/toolbar.hook diff --git a/CONTROL/control b/CONTROL/control new file mode 100644 index 0000000..8bb954f --- /dev/null +++ b/CONTROL/control @@ -0,0 +1,11 @@ +Package: flexview +Priority: optional +Section: misc +Version: 0.1.1-2 +Architecture: mipsel +Maintainer: mymsman +Depends: webif(>=1.4.0) +Description: Provides an alternative 'flexible view' of your recordings through the Web Interface. + Can sort and filter on most attributes. Has a customisable display format. + +Tags: http://wiki.hummy.tv/wiki/FlexView diff --git a/etc/fvConfig_default.json b/etc/fvConfig_default.json new file mode 100644 index 0000000..0c722a8 --- /dev/null +++ b/etc/fvConfig_default.json @@ -0,0 +1 @@ +{"name":"default","curdirsel":null,"tablewidth":0,"tabledepth":0,"dircolwidth":0,"flcolwidth":0,"dircolhidden":false,"dirshrinktofit":false,"flshrinktofit":false,"datefmt":"d M y H:i","timefmt":"H:i:s","dirColChg":{},"flColChg":{},"sel":{},"exp":{"-media":true,"-media-My-Video":true},"excl":{}} diff --git a/etc/fvConfig_fixed size table.json b/etc/fvConfig_fixed size table.json new file mode 100644 index 0000000..1cd32c6 --- /dev/null +++ b/etc/fvConfig_fixed size table.json @@ -0,0 +1 @@ +{"name":"fixed size table","curdirsel":null,"tablewidth":1302,"tabledepth":458,"dircolwidth":350,"flcolwidth":930,"dircolhidden":false,"dirshrinktofit":false,"flshrinktofit":false,"datefmt":"d M y H:i","timefmt":"H:i:s","dirColChg":{"title":{"width":177}},"flColChg":{},"sel":{},"excl":{},"exp":{"-media-My-Video":true}} diff --git a/webif/plugin/flexview/DirColModel.json b/webif/plugin/flexview/DirColModel.json new file mode 100644 index 0000000..a4bc4cf --- /dev/null +++ b/webif/plugin/flexview/DirColModel.json @@ -0,0 +1,98 @@ +// Column definition for Directory tree table + +{name:"id", key:true, width: 250, hidden:true}, +{ name: "sel", label: 'Sel', + hidden:false, width: 20, sortable:false, search: false, + formatter: "checkbox", formatoptions: {disabled: false}, + }, +{ name: "title", label: "Directory", + hidden:false, width: 250, sorttype: "text", + searchoptions: {sopt: ["cn", "bw", "ew"]}, + }, +{ name:'opt', label: "Opt+", hidden:false, width:47, + sortable:false, search: false, + formatter: fmtDOpt + }, +{ name: "dir", label: "Directory path", hidden: true, + width: 250, sorttype: "text", + searchoptions: {sopt: ["cn", "bw", "ew"]}, + }, +{ name: "psize", label: "Size", hidden:false, width: 70, + align: "right", sorttype: "number", index: "dsize" , + searchoptions: {sopt: ["lt", "gt"],searchOperMenu: true, clearSearch: false}, + }, +{ name: "dsize", label: "unformatted size Kb", + hidden: true, width: 90, + align: "right", sorttype: "number" , + searchoptions: {sopt: ["lt", "gt"],searchOperMenu: true, clearSearch: false}, + }, +{ name:'autodecryptR', + label: icons.autodecryptr + ' Recursive Auto-Decrypt', + hidden:false, width:22, + stype: 'select', + searchoptions: {value: {1:"Rec Auto-Decrypt",0:"Not Auto-Decrypt",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.autodecryptr} + }, +{ name:'autodecrypt', + label: icons.autodecrypt + ' Auto-Decrypt', + hidden:false, width:22, + stype: 'select', + searchoptions: {value: {1:"Auto-Decrypt",0:"Not Auto-Decrypt",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.autodecrypt} + }, +{ name:'autoshrinkR', + label: icons.autoshrinkr + ' Recursive Auto Shrink', + hidden:false, width:22, + stype: 'select', + searchoptions: {value: {1:"Rec Auto-Shrink",0:"Not Auto-Shrink",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.autoshrinkr} + }, +{ name:'autoshrink', + label: icons.autoshrink + ' Auto-Shrink', + hidden:false, width:22, + stype: 'select', + searchoptions: {value: {1:"Auto-Shrink",0:"Not Auto-Shrink",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.autoshrink} + }, +{ name:'autodedup', + label: icons.autodedup + ' Auto-Deduplicate', + hidden:false, width:22, + stype: 'select', + searchoptions: {value: {1:"Auto-Deduplicate",0:"Not Auto-Deduplicate",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.autodedup} + }, +{ name:'autoexpire', + label: icons.autoexpire + ' Auto-Expire', + hidden:false, width:22, + stype: 'select', + searchoptions: {value: {1:"Auto-Expire",0:"Not Auto-Expire",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.autoexpire} + }, +{ name:'autompg', + label: icons.autompg + ' Auto-mpg', + hidden:false, width:22, + stype: 'select', + searchoptions: {value: {1:"Auto-mpg",0:"Not Auto-mpg",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.autompg} + }, +{ name:'automp3', + label: icons.automp3 + ' Auto-mp3', + hidden:false, width:22, + stype: 'select', + searchoptions: {value: {1:"Auto-mp3",0:"Not Auto-mp3",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.automp3} + }, +{ name:'tvdbseriesid', + label: icons.tvdb + ' theTVDB', + hidden:false, width:25, + stype: 'select', + searchoptions: {value: {1:"theTVDB",0:"Not theTVDB",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.tvdb} + }, +{ name:'series', + label: icons.series + ' Series', + hidden:false, width:35, + stype: 'select', + searchoptions: {value: {1:"Series",0:"Not Series",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.series} + }, diff --git a/webif/plugin/flexview/FlColModel.json b/webif/plugin/flexview/FlColModel.json new file mode 100644 index 0000000..2ed72d4 --- /dev/null +++ b/webif/plugin/flexview/FlColModel.json @@ -0,0 +1,266 @@ +// Column Definitions for File List table +{ name:"id", key:true, width: 250, hidden:true}, +{ name: "sel", label: ' Sel', + hidden:false, width: 20, sortable:false, search: false, + formatter: fmtCheckbox, + }, +{ name: "fname", label: "File Name", hidden: false, + width: 300, sorttype: "text", + searchoptions: {sopt: ["cn", "bw", "ew"],searchOperMenu: true}, + formatter: fmtfname + }, +{ name:'opt', label: "Opt+", + hidden:false, width:47, sortable:false, search: false, + formatter: fmtOpt + }, +{ name: "dir", label: "Directory path", hidden: true, + width: 250, sorttype: "text", + searchoptions: {sopt: ["cn", "bw", "ew"]}, + }, +{ name: "title", label: "Title", hidden: true, + width: 250, sorttype: "text", + searchoptions: {sopt: ["cn", "bw", "ew"]}, + }, +{ name: "synopsis", label: "Synopsis", hidden: true, + width: 250, sorttype: "text", + searchoptions: {sopt: ["cn", "bw", "ew"]}, + }, +{ name: "channel_name", label: "Channel name", hidden: false, + width: 22, sorttype: "text", + searchoptions: {sopt: ["cn", "bw", "ew"], searchOperMenu: false, clearSearch: false}, + formatter: fmtChannel + }, +{ name: "channel_num", label: "Channel number", hidden: true, + width: 30, sorttype: "number", + searchoptions: {sopt: ["eq", "lt", "gt"], searchOperMenu: false, clearSearch: false}, + }, +{ name: "start", label: "Start time", width: 90, hidden: false, + align: "right", sorttype: "date", + formatter: "date", + formatoptions: {srcformat:"U" ,newformat: fvConfig.datetimefmt}, + searchoptions: {sopt: ["lt", "gt"], clearSearch: false, + // dataInit is the client-side event that fires upon initializing the toolbar search field for a column + // use it to place a third party control to customize the toolbar + dataInit: function (element) { + $(element).datepicker({ + id: 'start_datePicker', + dateFormat: fvConfig.datefmt, + showOn: 'focus' + }); + } + } + }, +{ name: "duration", label: "Duration", width: 50, hidden: false, + align: "right", sorttype: "date", + formatter: "date", + formatoptions: {srcformat:"U" ,newformat: fvConfig.timefmt}, + searchoptions: {sopt: ["lt", "gt"], clearSearch: false}, + }, +{ name: "end", label: "End Time", width: 90, hidden: true, + align: "right", sorttype: "date", + formatter: "date", + formatoptions: {srcformat:"U" ,newformat: fvConfig.datetimefmt}, + searchoptions: {sopt: ["lt", "gt"], clearSearch: false, + // dataInit is the client-side event that fires upon initializing the toolbar search field for a column + // use it to place a third party control to customize the toolbar + dataInit: function (element) { + $(element).datepicker({ + id: 'end_datePicker', + dateFormat: fvConfig.datefmt, + showOn: 'focus' + }); + } + } + }, +{ name: "schedstart", label: "Scheduled Start time", width: 90, hidden: true, + align: "right", sorttype: "date", + formatter: "date", + formatoptions: {srcformat:"U" ,newformat: fvConfig.datetimefmt}, + searchoptions: {sopt: ["lt", "gt"], clearSearch: false, + // dataInit is the client-side event that fires upon initializing the toolbar search field for a column + // use it to place a third party control to customize the toolbar + dataInit: function (element) { + $(element).datepicker({ + id: 'schstart_datePicker', + dateFormat: fvConfig.datefmt, + showOn: 'focus' + }); + } + } + }, +{ name: "scheddur", label: "Scheduled Duration", width: 50, hidden: true, + align: "right", sorttype: "date", + formatter: "date", + formatoptions: {srcformat:"U" ,newformat: fvConfig.timefmt}, + searchoptions: {sopt: ["lt", "gt"], clearSearch: false}, + }, +{ name: "resume", label: "Resume point", width: 50, hidden: true, + align: "right", sorttype: "date", + formatter: "date", + formatoptions: {srcformat:"U" ,newformat: fvConfig.timefmt}, + searchoptions: {sopt: ["lt", "gt"], clearSearch: false}, + }, +{ name: "psize", label: "Size", width: 70, hidden: false, + align: "right", sorttype: "number", index: "fsize" , + searchoptions: {sopt: ["lt", "gt"], clearSearch: false}, + }, +{ name: "fsize", label: "unformatted Size", hidden: true, + width: 70, + searchoptions: {sopt: ["lt", "gt"], clearSearch: false}, + align: "right", sorttype: "number" + }, +{ name: "bookmarks", label: icons.bookmark +" Bookmark count", hidden: false, + width: 35, + searchoptions: {sopt: ["gt", "lt", "eq"], clearSearch: false}, + align: "right", sorttype: "number" + }, +{ name: "seriesnum", label: "Series number", hidden: true, + width: 22, + searchoptions: {sopt: ["gt", "lt", "eq"], clearSearch: false}, + align: "right", sorttype: "number" + }, +{ name: "episodenum", label: "Episode number", hidden: true, + width: 22, + searchoptions: {sopt: ["gt", "lt", "eq"], clearSearch: false}, + align: "right", sorttype: "number" + }, +{ name: "episodetot", label: "Episode total", hidden: true, + width: 22, + searchoptions: {sopt: ["gt", "lt", "eq"], clearSearch: false}, + align: "right", sorttype: "number" + }, +{ name: "showrow", label: "show row", hidden: true, + width: 50, align: "right", + searchoptions: {sopt: ["eq"], defaultValue: "true", searchhidden: true, searchOperMenu: false, clearSearch: false}, + }, +{ name: "status", label: "Status", hidden: false, + width: 70, align: "right", + searchoptions: {sopt: ["cn", "bw", "eq"], searchhidden: true, searchOperMenu: false, clearSearch: false}, + }, +{ name: "definition", label: "Def", hidden: false, + width: 24, sorttype: "text", + stype: 'select', + searchoptions: {sopt: ["cn"],value: {"HD":icons.HD+'HD',"SD":icons.SD+'SD','':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: 'select', editoptions: {value: {"HD":icons.HD,"SD":icons.SD,'':"Unknown"}}, + }, +{ name: "genre", label: "Genre", hidden: false, + width: 24, sorttype: "mumber", + stype: 'select', + searchoptions: {sopt: ["eq"],value: genrelist, searchOperMenu: false, clearSearch: false}, + formatter: 'select', editoptions: {value: genrelist}, + }, +{ name:'flags_list', label: "Flags", hidden: true, + width:70, + searchoptions: {sopt: ["cn"], searchOperMenu: false, clearSearch: false}, + }, +{ name: "guidance", label: icons.guidance +" Guidance text", hidden: false, + width: 22, sorttype: "text", + searchoptions: {sopt: ["cn", "bw", "ew"], searchOperMenu: false, clearSearch: false}, + formatter: fmtGuidance + }, +{ name:'Guidance', hidden: true, + label: icons.guidance + ' Guidance flag', + width:22, + stype: 'select', + searchoptions: {value: {1:"Guidance",0:"No Guidance",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.guidance} + }, +{ name:'GGuidance', hidden: true, + label: icons.Gguidance + ' General Guidance', + width:22, + stype: 'select', + searchoptions: {value: {1:"Guidance",0:"No Guidance",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.Gguidance} + }, +{ name:'inuse', hidden: false, + label: icons.inuse + ' In use', + width:45, + stype: 'select', + searchoptions: {value: {1:"In use",0:"Not in use",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.inuse} + }, +{ name:'New', hidden: false, + label: icons.new + ' New', + width:22, + stype: 'select', + searchoptions: {value: {1:"New",0:"Not New",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.new} + }, +{ name:'ODEncrypted', hidden: true, + label: icons.ODE + ' On Disk Encrypted', + width:28, + stype: 'select', + searchoptions: {value: {1:"On Disk Encrypted",0:"Not On Disk Encrypted",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.ODE} + }, +{ name:'Decrypted', hidden: false, + label: icons.DEC + ' Decrypted', + width:25, + stype: 'select', + searchoptions: {value: {1:"Decrypted",0:"Not Decrypted",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.DEC} + }, +{ name:'Encrypted', hidden: false, + label: icons.ENC + ' Encrypted (Protected)', + width:25, + stype: 'select', + searchoptions: {value: {1:"Encrypted",0:"Not Encrypted",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.ENC} + }, +{ name:'Radio', hidden: false, + label: icons.Radio + ' Radio', + width:22, + stype: 'select', + searchoptions: {value: {1:"Radio",0:"Not Radio",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.Radio} + }, +{ name:'Locked', hidden: false, + label: icons.Locked + ' Locked', + width:22, + stype: 'select', + searchoptions: {value: {1:"Locked",0:"Not Locked",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.Locked} + }, +{ name:'Shrunk', hidden: false, + label: icons.Shrunk + ' Shrunk', + width:22, + stype: 'select', + searchoptions: {value: {1:"Shrunk",0:"Not Shrunk",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.Shrunk} + }, +{ name:'Deduped', hidden: false, + label: icons.Deduped + ' De-duped', + width:25, + stype: 'select', + searchoptions: {value: {1:"De-duped",0:"Not De-duped",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.Deduped} + }, +{ name:'thmok', hidden: true, + label: icons.thumb + ' Thumbnail exists', + width:22, + stype: 'select', + searchoptions: {value: {1:"Thumbnail",0:"No Thumbnail",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.thumb} + }, +{ name:'thmimg', hidden: true, + label: icons.thumb + ' Thumbnail image', + width:140, + stype: 'select', index: 'thmok', + searchoptions: {value: {1:"Thumbnail",0:"No Thumbnail",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtThumbnail, + }, +{ name:'dlna', + label: icons.DLNA + ' DLNA indexed', + width:22, + hidden: false, + stype: 'select', + searchoptions: {value: {1:"DLNA",0:"No DLNA",'':"-   All"}, searchOperMenu: false, clearSearch: false}, + formatter: fmtIcon, formatoptions: {img: icons.DLNA} + }, +{ name:'dlnaIndex', + label: icons.DLNA + ' DLNA index', + hidden: true, + width:50, + search:false, + formatter: "link" + }, diff --git a/webif/plugin/flexview/configlist.jim b/webif/plugin/flexview/configlist.jim new file mode 100755 index 0000000..ed8d76c --- /dev/null +++ b/webif/plugin/flexview/configlist.jim @@ -0,0 +1,10 @@ +# generate selection list for fvConfig files + +set configl [glob -nocomplain /mod/etc/fvConfig_*.json] + +proc genConfigList {} { + foreach file [lsort $::configl] { + set config [string range $file 18 end-5] + puts "" + } +} diff --git a/webif/plugin/flexview/contextmenu.js b/webif/plugin/flexview/contextmenu.js new file mode 100644 index 0000000..c92e7b6 --- /dev/null +++ b/webif/plugin/flexview/contextmenu.js @@ -0,0 +1,130 @@ +// Browse context menu enablement - extracted from browse.js +// extremely unfortunate the need to duplicate code +// but needs to be (re)done whenever grids are redrawn since elements +// being tracked are not created at document ready + + +function dirListReady() { + // Bind context menu to opt+ image + $('img.dopt').contextMenu( + { + menu: 'doptmenu', + leftButton: true, + beforeShow: preparedmenu + }, + dmenuclick + ); + + $('img.doopt').contextMenu( + { + menu: 'dooptmenu', + leftButton: true, + beforeShow: preparedmenu + }, + dmenuclick + ); +}; + +function fileListReady() { + // Bind context menu to opt+ image + $('img.opt').contextMenu( + { + menu: 'optmenu', + leftButton: true, + beforeShow: preparemenu + }, + menuclick + ); + + $('img.oopt').contextMenu( + { + menu: 'ooptmenu', + leftButton: true, + beforeShow: prepareomenu + }, + omenuclick + ); + +}; + +// Cant trigger the imput.fs changed function from grid +function inputChanged() { + var num = $('input.fs:checked').size(); + if (num > 0) + $('.onesel').enable(); + else + $('.onesel').disable(); + + var num = $('input.fsts:checked').size(); + if (num > 0) + $('.tsonesel').enable(); + else + $('.tsonesel').disable(); + if (num > 1) + $('.tstwosel').enable(); + else + $('.tstwosel').disable(); +}; + + +// use browse media view dialog adapted for FV, may need changing if Browse dialog changes +function viewFile(rowid) { + + // Use jqGrid column data instead of HTML attributes + var record = $("#filelist").jqGrid('getLocalRow',rowid); + var file = record.dir +'/'+ record.fname; + var file = encodeURI(record.dir +'/'+ record.fname); + var type = record.ftype; + var dlna = record.dlna; + var decr = record.Decrypted; + // e.preventDefault(); + + // var file = $(this).attr('file'); + // var type = $(this).attr('type'); + // var opt = $(this).nextAll('a').find('img.opt'); + + var url = '/browse/file.jim?file=' + file + + '&type=' + type; + $.dialog.load(url); + + $.dialog.attr('file', file); + $.dialog.attr('type', type); + + if (type == 'ts' && + (decr == 1 || dlna == 1)) + // (opt.attr('odencd') == 0 || opt.attr('dlna') == 1)) + $.dialog.dialog("option", "buttons", $buttonsp); + else + $.dialog.dialog("option", "buttons", $buttons); + $.dialog.dialog('open'); + +}; + + + var $buttons = { + "Close" : function() {$(this).dialog('close');} + }; + var $buttonsp = $.extend( + {"Play" : function() { //doplay(); + window.location = '/play/play.jim?' + + 'dir=' + encodeURIComponent(dir) + + '&file=' + encodeURIComponent(file); + } + }, + $buttons); + +$(function() { + // Create reusable dialogue. + if (!$.dialog) + $.dialog = $('#dialogue').dialog({ + title: "Media Details", + modal: false, autoOpen: false, + height: 600, width: 700, + show: 'scale', hide: 'fade', + draggable: true, resizable: true, + buttons: $buttons, + close: function(e,u) { $('#dialogue').empty().html( + 'Retrieving data...'); } + }); +}); + diff --git a/webif/plugin/flexview/css/ui.jqgrid.css b/webif/plugin/flexview/css/ui.jqgrid.css new file mode 100644 index 0000000..7999121 --- /dev/null +++ b/webif/plugin/flexview/css/ui.jqgrid.css @@ -0,0 +1,341 @@ +/*Grid*/ +.ui-jqgrid { + position: relative; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +.ui-jqgrid .ui-jqgrid-view {position: relative;left:0; top: 0; padding: 0; font-size:11px; z-index:100;} +.ui-jqgrid .ui-common-table {border-width: 0px; border-style: none; border-spacing: 0px; padding: 0;} +/* caption*/ +.ui-jqgrid .ui-jqgrid-titlebar {height:19px; padding: .3em .2em .2em .3em; position: relative; font-size: 12px; border-left: 0 none;border-right: 0 none; border-top: 0 none;} +.ui-jqgrid .ui-jqgrid-caption {text-align: left;} +.ui-jqgrid .ui-jqgrid-title { margin: .1em 0 .2em; } +.ui-jqgrid .ui-jqgrid-titlebar-close { position: absolute;top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height:18px; cursor:pointer;} +.ui-jqgrid .ui-jqgrid-titlebar-close span { display: block; margin: 1px; } +.ui-jqgrid .ui-jqgrid-titlebar-close:hover { padding: 0; } +/* header*/ +.ui-jqgrid .ui-jqgrid-hdiv {position: relative; margin: 0;padding: 0; overflow: hidden; border-left: 0 none !important; border-top : 0 none !important; border-right : 0 none !important;} +.ui-jqgrid .ui-jqgrid-hbox {float: left; padding-right: 20px;} +.ui-jqgrid .ui-jqgrid-htable {table-layout:fixed;margin:0;border-collapse: separate;} +.ui-jqgrid .ui-jqgrid-htable th { height: 27px; padding: 0 2px 0 2px;} +.ui-jqgrid .ui-jqgrid-htable th div {overflow: hidden; position:relative;margin: .1em 0em .1em 0em;} +.ui-th-column, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column {overflow: hidden;white-space: nowrap;text-align:center;border-top : 0 none;border-bottom : 0 none;} +.ui-th-column-header, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column-header {overflow: hidden;white-space: nowrap;text-align:center;border-top : 0 none; height: 26px;} +.ui-th-ltr, .ui-jqgrid .ui-jqgrid-htable th.ui-th-ltr {border-left : 0 none;} +.ui-th-rtl, .ui-jqgrid .ui-jqgrid-htable th.ui-th-rtl {border-right : 0 none;} +.ui-first-th-ltr {border-right: 1px solid; } +.ui-first-th-rtl {border-left: 1px solid; } +.ui-jqgrid .ui-th-div-ie {white-space: nowrap; zoom :1; height:17px;} +.ui-jqgrid .ui-jqgrid-resize {height:20px !important;position: relative; cursor :e-resize;display: inline;overflow: hidden;} +.ui-jqgrid .ui-grid-ico-sort {overflow:hidden;position:absolute;display:inline; cursor: pointer !important;} +.ui-jqgrid .ui-icon-asc {margin-top:-3px; height:12px;} +.ui-jqgrid .ui-icon-desc {margin-top:3px;margin-left:-1px;height:12px;} +.ui-jqgrid .ui-i-asc {margin-top:0;height:18px;} +.ui-jqgrid .ui-i-desc {margin-top:0;margin-left:12px;height:18px;} +.ui-jqgrid .ui-single-sort-asc {margin-top:0;height:18px;} +.ui-jqgrid .ui-single-sort-desc {margin-top:-1px;height:18px;} +.ui-jqgrid .ui-jqgrid-sortable {cursor:pointer;height:14px} +.ui-jqgrid tr.ui-search-toolbar th { } +.ui-jqgrid .ui-search-table td.ui-search-clear { width:25px;} +.ui-jqgrid tr.ui-search-toolbar td > input { padding-right: 0px; width: 95%;} +.ui-jqgrid tr.ui-search-toolbar select {} +/* body */ +.ui-jqgrid .ui-jqgrid-bdiv {position: relative; margin: 0; padding:0; overflow: auto; text-align:left;z-index: 101;} +.ui-jqgrid .ui-jqgrid-btable {table-layout:fixed; margin:0; outline-style: none; border-collapse: separate;} +.ui-jqgrid tr.jqgrow { outline-style: none; } +.ui-jqgrid tr.jqgroup { outline-style: none; } +.ui-jqgrid tr.jqgrow td {font-weight: normal; overflow: hidden; white-space: pre; height: 23px;padding: 1px 2px 1px 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;} +.ui-jqgrid tr.jqgfirstrow td {padding: 0 2px 0 2px;border-right-width: 1px; border-right-style: solid; height:auto;} +.ui-jqgrid tr.jqgroup td {font-weight: normal; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;} +.ui-jqgrid tr.jqfoot td {font-weight: bold; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;} +.ui-jqgrid tr.ui-row-ltr td {text-align:left;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;} +.ui-jqgrid tr.ui-row-rtl td {text-align:right;border-left-width: 1px; border-left-color: inherit; border-left-style: solid;} +.ui-jqgrid td.jqgrid-rownum { padding: 0 2px 0 2px; margin: 0; border: 0 none;} +.ui-jqgrid .ui-jqgrid-resize-mark { width:2px; left:0; background-color:#777; cursor: e-resize; cursor: col-resize; position:absolute; top:0; height:100px; overflow:hidden; display:none; border:0 none; z-index: 99999;} +/* footer */ +.ui-jqgrid .ui-jqgrid-sdiv {position: relative; margin: 0;padding: 0; overflow: hidden; border-left: 0 none !important; border-top : 0 none !important; border-right : 0 none !important;} +.ui-jqgrid .ui-jqgrid-ftable {table-layout:fixed; margin-bottom:0;border-collapse: separate;} +.ui-jqgrid tr.footrow td {font-weight: bold; overflow: hidden; white-space:nowrap; height: 20px;padding: 0 2px 0 2px;border-top-width: 1px; border-top-color: inherit; border-top-style: solid;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;} +.ui-jqgrid tr.footrow-ltr td {text-align:left;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;} +.ui-jqgrid tr.footrow-rtl td {text-align:right;border-left-width: 1px; border-left-color: inherit; border-left-style: solid;} +/* Pager*/ +.ui-jqgrid .ui-jqgrid-pager { border-left: 0 none !important;border-right: 0 none !important; border-bottom: 0 none !important; border-top: 0 none; margin: 0 !important; padding: 0 !important; position: relative; height: auto; min-height: 28px; white-space: nowrap;overflow: hidden;font-size:11px; z-index:101} +.ui-jqgrid .ui-jqgrid-toppager .ui-pager-control, .ui-jqgrid .ui-jqgrid-pager .ui-pager-control {position: relative;border-left: 0;border-bottom: 0;border-top: 0; height: 28px;} +.ui-jqgrid .ui-pg-table {position: relative; padding: 1px 0; width:auto; margin: 0;} +.ui-jqgrid .ui-pg-table td {font-weight:normal; vertical-align:middle; padding:0px 1px;} +.ui-jqgrid .ui-pg-button { height:auto} +.ui-jqgrid .ui-pg-button span { display: block; margin: 2px; float:left;} +.ui-jqgrid .ui-pg-button:hover { padding: 0;} +.ui-jqgrid .ui-state-disabled:hover {padding:0px;} +.ui-jqgrid .ui-pg-input,.ui-jqgrid .ui-jqgrid-toppager .ui-pg-input { height:14px;width: auto;font-size:.9em; margin:0;line-height: inherit;border: none; padding: 3px 2px} +.ui-jqgrid .ui-pg-selbox, .ui-jqgrid .ui-jqgrid-toppager .ui-pg-selbox {font-size:.9em; line-height:inherit; display:block; height:19px; margin: 0; padding: 3px 0px; border:none;} +.ui-jqgrid .ui-separator {height: 18px; border-left: 2px solid #ccc ;} +.ui-separator-li {height: 2px; border : none;border-top: 2px solid #ccc ; margin: 0; padding: 0; width:100%} +.ui-jqgrid .dropdownmenu { + padding: 3px 0 3px 0; + margin-left: 4px; +} +.ui-jqgrid .ui-jqgrid-pager .ui-pg-div, +.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div +{padding:1px 0;float:left;position:relative; line-height: 20px;} +.ui-jqgrid .ui-jqgrid-pager .ui-pg-button, +.ui-jqgrid .ui-jqgrid-toppager .ui-pg-button +{ cursor:pointer; } +.ui-jqgrid .ui-jqgrid-pager .ui-pg-div span.ui-icon, +.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div span.ui-icon +{float:left;margin: 2px; width:18px;} +.ui-jqgrid td input, .ui-jqgrid td select, .ui-jqgrid td textarea { margin: 0; padding-top:5px;padding-bottom: 5px;} +.ui-jqgrid td textarea {width:auto;height:auto;} +.ui-jqgrid .ui-jqgrid-toppager {border-left: 0 none !important;border-right: 0 none !important; border-top: 0 none !important; margin: 0 !important; padding: 0 !important; position: relative;white-space: nowrap;overflow: hidden;} +.ui-jqgrid .ui-jqgrid-pager .ui-pager-table { + width:100%; + table-layout:fixed; + height:100%; +} +.ui-jqgrid .ui-jqgrid-pager .ui-paging-info { + font-weight: normal; + height:auto; + margin-top:3px; + margin-right:4px; + display: inline; +} +.ui-jqgrid .ui-jqgrid-pager .ui-paging-pager { + table-layout:auto; + height:100%; +} +.ui-jqgrid .ui-jqgrid-pager .navtable { + float:left; + table-layout:auto; + height:100%; +} + +/*.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div {padding:1px 0;float:left;position:relative; line-height: 20px; margin-right:3px;} +.ui-jqgrid .ui-jqgrid-toppager .ui-pg-button { cursor:pointer; } +.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div span.ui-icon {float:left;margin: 2px; width:18px;} +*/ + +/*subgrid*/ +.ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span {display: block;} +.ui-jqgrid .ui-subgrid {margin:0;padding:0; width:100%;} +.ui-jqgrid .ui-subgrid table {table-layout: fixed;} +.ui-jqgrid .ui-subgrid tr.ui-subtblcell td {height:18px;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;} +.ui-jqgrid .ui-subgrid td.subgrid-data {border-top: 0 none !important; border-left: 0 none !important;} +.ui-jqgrid .ui-subgrid td.subgrid-cell {border-width: 0 1px 1px 0;} +.ui-jqgrid .ui-th-subgrid {height:20px;} +/* loading */ +.ui-jqgrid .loading {position: absolute; top: 45%;left: 45%;width: auto;z-index:101;padding: 6px; margin: 5px;text-align: center;font-weight: bold;display: none;border-width: 2px !important; font-size:11px;} +.ui-jqgrid .jqgrid-overlay {display:none;z-index:100;} +/* IE * html .jqgrid-overlay {width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');} */ +* .jqgrid-overlay iframe {position:absolute;top:0;left:0;z-index:-1;} +/* IE width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');}*/ +/* end loading div */ +/* toolbar */ +.ui-jqgrid .ui-userdata {border-left: 0 none; border-right: 0 none; height : 27px;overflow: hidden; } +/*Modal Window */ +.ui-jqdialog { font-size:11px !important; } +.ui-jqdialog { display: none; width: 300px; position: absolute; padding: .2em; font-size:11px; overflow:visible;} +.ui-jqdialog .ui-jqdialog-titlebar { padding: .3em .2em; position: relative; height:20px;} +.ui-jqdialog .ui-jqdialog-title { margin: .3em .2em .2em .2em;} +.ui-jqdialog .ui-jqdialog-titlebar-close { position: absolute; top: 50%; width: 19px; margin: -12px 0 0 0; padding: 1px; height: 18px; cursor:pointer;} + +.ui-jqdialog .ui-jqdialog-titlebar-close span { display: block; margin: 1px; } +.ui-jqdialog .ui-jqdialog-titlebar-close:hover, .ui-jqdialog .ui-jqdialog-titlebar-close:focus { padding: 0; } +.ui-jqdialog-content, .ui-jqdialog .ui-jqdialog-content { border: 0; padding: .3em .2em; background: none; height:auto;} +.ui-jqdialog .ui-jqconfirm {padding: .4em 1em; border-width:3px;position:absolute;bottom:10px;right:10px;overflow:visible;display:none;height:80px;width:220px;text-align:center;} +.ui-jqdialog>.ui-resizable-se { bottom: -3px; right: -3px} +.ui-jqgrid>.ui-resizable-se { bottom: -3px; right: -3px } +/* end Modal window*/ +/* Form edit */ +.ui-jqdialog-content .FormGrid {margin: 0; overflow:auto;position:relative;} +.ui-jqdialog-content .EditTable { width: 100%; margin-bottom:0;} +.ui-jqdialog-content .DelTable { width: 100%; margin-bottom:0;} +.EditTable td input, .EditTable td select, .EditTable td textarea {margin: 0;} +.EditTable td textarea { width:auto; height:auto;} +.ui-jqdialog-content td.EditButton {text-align: right;border-top: 0 none;border-left: 0 none;border-right: 0 none; padding-bottom:5px; padding-top:5px;} +.ui-jqdialog-content td.navButton {text-align: center; border-left: 0 none;border-top: 0 none;border-right: 0 none; padding-bottom:5px; padding-top:5px;} +.ui-jqdialog-content input.FormElement {padding: .5em .3em; margin-bottom: 3px} +.ui-jqdialog-content select.FormElement {padding:.3em; margin-bottom: 3px;} +.ui-jqdialog-content .data-line {padding-top:.1em;border: 0 none;} + +.ui-jqdialog-content .CaptionTD {vertical-align: middle;border: 0 none; padding: 2px;white-space: nowrap;} +.ui-jqdialog-content .DataTD {padding: 2px; border: 0 none; vertical-align: top;} +.ui-jqdialog-content .form-view-data {white-space:pre} +.fm-button { height: 18px; display: inline-block; margin:2px 4px 0 0; padding: .6em .5em .2em .5em; text-decoration:none !important; cursor:pointer; position: relative; text-align: center; zoom: 1; } +.fm-button-icon-left { padding-left: 1.9em; } +.fm-button-icon-right { padding-right: 1.9em; } +.fm-button-icon-left .ui-icon { right: auto; left: .2em; margin-left: 0; position: absolute; top: 50%; margin-top: -8px; } +.fm-button-icon-right .ui-icon { left: auto; right: .2em; margin-left: 0; position: absolute; top: 50%; margin-top: -8px;} +#nData, #pData { float: left; margin:3px;padding: 0; width: 15px; } +.ViewTable { + border-width: 0; + border-style: none; + border-spacing: 1px; + padding: 4px; + table-layout: fixed; +} +.ViewTable .CaptionTD, .ViewTable .DataTD {padding : 4px;} +/* End Eorm edit */ +/*cell edit*/ +.ui-jqgrid .edit-cell { + padding: 4px 0px 4px 4px; +} +.ui-jqgrid .selected-row, div.ui-jqgrid .selected-row td {font-style : normal;border-left: 0 none;} +/* inline edit actions button*/ +.ui-inline-del.ui-state-hover span, .ui-inline-edit.ui-state-hover span, +.ui-inline-save.ui-state-hover span, .ui-inline-cancel.ui-state-hover span { + margin: -1px; +} +.ui-inline-del, .ui-inline-cancel { + margin-left: 8px; +} + +.ui-jqgrid .inline-edit-cell { + padding: 4px 0px 4px 4px; +} +/* Tree Grid */ +.ui-jqgrid .tree-wrap {float: left; position: relative;height: 18px;white-space: nowrap;overflow: hidden;} +.ui-jqgrid .tree-minus {position: absolute; height: 18px; width: 18px; overflow: hidden;} +.ui-jqgrid .tree-plus {position: absolute; height: 18px; width: 18px; overflow: hidden;} +.ui-jqgrid .tree-leaf {position: absolute; height: 18px; width: 18px;overflow: hidden;} +.ui-jqgrid .treeclick {cursor: pointer;} +/* moda dialog */ +* iframe.jqm {position:absolute;top:0;left:0;z-index:-1;} +/* width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');}*/ +.ui-jqgrid-dnd tr td {border-right-width: 1px; border-right-color: inherit; border-right-style: solid; height:20px} +/* RTL Support */ +.ui-jqgrid .ui-jqgrid-caption-rtl {text-align: right;} +.ui-jqgrid .ui-jqgrid-hbox-rtl {float: right; padding-left: 20px;} +.ui-jqgrid .ui-jqgrid-resize-ltr {float: right;margin: -2px -2px -2px 0;} +.ui-jqgrid .ui-jqgrid-resize-rtl {float: left;margin: -2px 0 -1px -3px;} +.ui-jqgrid .ui-sort-rtl {left:0;} +.ui-jqgrid .tree-wrap-ltr {float: left;} +.ui-jqgrid .tree-wrap-rtl {float: right;} +.ui-jqgrid .ui-ellipsis {-moz-text-overflow:ellipsis;text-overflow:ellipsis;} + +/* Toolbar Search Menu , Nav menu*/ +.ui-search-menu, +.ui-nav-menu { + position: absolute; + padding: 2px 5px; + z-index:99999; + -webkit-box-shadow: 7px 7px 5px 0px rgba(50, 50, 50, 0.75); + -moz-box-shadow: 7px 7px 5px 0px rgba(50, 50, 50, 0.75); + box-shadow: 7px 7px 5px 0px rgba(50, 50, 50, 0.75); +} +.ui-search-menu.ui-menu .ui-menu-item, +.ui-nav-menu.ui-menu .ui-menu-item +{ + list-style-image: none; + padding-right: 0; + padding-left: 0; +} +.ui-search-menu.ui-menu .ui-menu-item a, +.ui-nav-menu.ui-menu .ui-menu-item a +{ + display: block; +} +.ui-search-menu.ui-menu .ui-menu-item a.g-menu-item:hover, +.ui-nav-menu.ui-menu .ui-menu-item a.g-menu-item:hover +{ + margin: -1px; + font-weight: normal; +} +.ui-jqgrid .ui-search-table { padding: 0; border: 0 none; height:20px; width:100%;} +.ui-jqgrid .ui-search-table .ui-search-oper { width:20px; } +a.g-menu-item, a.soptclass, a.clearsearchclass { cursor: pointer; } +.ui-jqgrid .ui-jqgrid-view input, +.ui-jqgrid .ui-jqgrid-view select, +.ui-jqgrid .ui-jqgrid-view textarea, +.ui-jqgrid .ui-jqgrid-view button { + font-size: 11px; +} +.ui-jqgrid .ui-scroll-popup {width: 95px;} +.ui-search-table select, +.ui-search-table input +{ + padding: 4px 3px; +} + +.ui-jqgrid .ui-pg-table .ui-pg-button.ui-state-disabled:hover > .ui-separator { + margin-left: 3px; + margin-right: 3px; +} + +.ui-jqgrid .ui-pg-table .ui-pg-button.ui-state-disabled:hover > .ui-pg-div > .ui-icon { + margin-left: 3px; + margin-right: 3px; +} +/* Column menu */ +.ui-jqgrid .ui-jqgrid-htable .colmenu { + position:absolute; + right:1px; + height:100%; + color : black; +} +.ui-jqgrid .ui-jqgrid-htable .colmenuspan { + display:inline-block; +} + +.ui-jqgrid .ui-jqgrid-htable .ui-th-div { + height:17px; + margin-top:5px; + display:inine-block; +} +.column-menu, .ui-search-menu { + padding: 10px 10px; +} +.column-menu .divider { + background-color: #e5e5e5; + height: 1px; + padding:0 0; + margin: 5px 0; + overflow: hidden; +} +.ui-menu-item .ui-common-table .menu_icon { + white-space: pre; + padding-right: 8px; + width : auto; +} +.ui-menu-item .ui-common-table .menu_icon .ui-icon { + display : inline-block; + position: relative; +} +td.menu_text { + width: auto; + white-space: nowrap; +} +.ui-search-menu .ui-menu-item { + padding : 0 0; +} +.ui-col-menu .ui-menu-item td.menu_text{ + padding-top: 0; + padding-bottom: 0; + padding-left : 1px; +} +.ui-col-menu .ui-menu-item td.menu_icon{ + padding-top: 0; + padding-bottom: 0; + vertical-align: middle; +} +.ui-col-menu .ui-menu-item td.menu_icon input{ + margin: 2px 0; + +} +#search_menu .ui-menu-item div { + margin: 3px 0; + white-space: nowrap; +} + +#search_menu .ui-menu-item div input, +#search_menu .ui-menu-item div select +{ + padding: 3px 2px; +} +#search_menu .search_buttons { + display:inline-block; + width:50%; +} +#column_menu.ui-menu .ui-menu-item { + position :static; +} \ No newline at end of file diff --git a/webif/plugin/flexview/css/ui.multiselect.css b/webif/plugin/flexview/css/ui.multiselect.css new file mode 100644 index 0000000..8ab18ef --- /dev/null +++ b/webif/plugin/flexview/css/ui.multiselect.css @@ -0,0 +1,30 @@ +/* Multiselect +----------------------------------*/ + +.ui-multiselect { border: solid 1px; font-size: 0.8em; } +.ui-multiselect ul { -moz-user-select: none; } +.ui-multiselect li { margin: 0; padding: 0; cursor: default; line-height: 20px; height: 20px; font-size: 11px; list-style: none; } +.ui-multiselect li a { color: #999; text-decoration: none; padding: 0; display: block; float: left; cursor: pointer;} +.ui-multiselect li.ui-draggable-dragging { padding-left: 10px; } + +.ui-multiselect div.selected { position: relative; padding: 0; margin: 0; border: 0; float:left; } +.ui-multiselect ul.selected { position: relative; padding: 0; overflow: auto; overflow-x: hidden; background: #fff; margin: 0; list-style: none; border: 0; position: relative; width: 100%; } +.ui-multiselect ul.selected li { } + +.ui-multiselect div.available { position: relative; padding: 0; margin: 0; border: 0; float:left; border-left: 1px solid; } +.ui-multiselect ul.available { position: relative; padding: 0; overflow: auto; overflow-x: hidden; background: #fff; margin: 0; list-style: none; border: 0; width: 100%; } +.ui-multiselect ul.available li { padding-left: 10px; } + +.ui-multiselect .ui-state-default { border: none; margin-bottom: 1px; position: relative; padding-left: 20px;} +.ui-multiselect .ui-state-hover { border: none; } +.ui-multiselect .ui-widget-header {border: none; font-size: 11px; margin-bottom: 1px;} + +.ui-multiselect .add-all { float: right; padding: 7px;} +.ui-multiselect .remove-all { float: right; padding: 7px;} +.ui-multiselect .search { float: left; padding: 4px;} +.ui-multiselect .count { float: left; padding: 7px;} + +.ui-multiselect li span.ui-icon-arrowthick-2-n-s { position: absolute; left: 2px; } +.ui-multiselect li a.action { position: absolute; right: 2px; top: 2px; } + +.ui-multiselect input.search { height: 14px; padding: 1px; opacity: 0.5; margin: 4px; width: 100px; } \ No newline at end of file diff --git a/webif/plugin/flexview/deleteConfig.jim b/webif/plugin/flexview/deleteConfig.jim new file mode 100755 index 0000000..9581bae --- /dev/null +++ b/webif/plugin/flexview/deleteConfig.jim @@ -0,0 +1,47 @@ +#!/mod/bin/jimsh +###### +# FlexView - Delete flexview cofig +# Author: MymsMan, 2016 +###### + + +package require cgi +source /mod/webif/lib/setup +require system.class settings.class + +# logging options +if {[lindex $argv 0] eq "-d"} { + set argv [lrange $argv 1 end] + set loglevel 2 +} else { + # Use same logging option as auto log + set settings [settings] + set loglevel [$settings _nval_setting "autolog"] +} + + +proc log {msg {level 2}} { + if {$level > $::loglevel} return + system plog flexview $msg +} + +httpheader + +set start [clock milliseconds] +set name [cgi_get name "default"] + +set fname "/mod/etc/fvConfig_$name.json" +if {[catch {exec rm $fname + puts "Deleted configuration- $name
"} msg opts] } { + log "Config file error caught: $msg $opts" 0 + puts "File delete error $msg
" + } + + +source /mod/webif/plugin/flexview/configlist.jim +genConfigList +set end [clock milliseconds] +set elapse $(double($end-$start)/1000.0) +log "Delete | $elapse | $fname" 0 + + diff --git a/webif/plugin/flexview/events.js b/webif/plugin/flexview/events.js new file mode 100644 index 0000000..3dacd9a --- /dev/null +++ b/webif/plugin/flexview/events.js @@ -0,0 +1,22 @@ +/* http://jsfiddle.net/7xwf1ysL/15/ + (c) 2015 by DBJ.ORG, GPL/MIT applies + + expr argument is any legal jQuery selector. + returns array of { element: , events: } objects + events: is jQuery events structure attached (as data) + to the element: + return is null if no events are found + */ +jQuery.events = function(expr) { + var rez = [], + evo; + jQuery(expr).each( + function() { + if (evo = jQuery._data(this, "events")) + rez.push({ + element: this, + events: evo + }); + }); + return rez.length > 0 ? rez : null; +} diff --git a/webif/plugin/flexview/flexview.css b/webif/plugin/flexview/flexview.css new file mode 100644 index 0000000..66cb970 --- /dev/null +++ b/webif/plugin/flexview/flexview.css @@ -0,0 +1,44 @@ +/* plugin style file to support column formatters and context menu actions */ + +.contextMenu li.new_dir a +{ + background-image: url(/img/folder.png); + background-size: 16px 16px; +} + +.contextMenu li.dedupdir a +{ + background-image: url(/img/dedup.png); +} + +.contextMenu li.theTVDB a +{ + background-image: url(/img/tvdb-sm.png); + background-size: 16px 20px; +} + +.contextMenu li.view a +{ + background-image: url(/img/info.png); + background-size: 16px 16px; +} + +.contextMenu li.view_file a , +.contextMenu li.view_node a +{ + background-image: url(/plugin/flexview/img/view.gif); +} + +.contextMenu li.play a +{ + background-image: url(/img/media/play.png); + background-size: 16px 16px; +} + +.contextMenu li.reload_node a , +.contextMenu li.reload_fdir a , +.contextMenu li.reload_dir a +{ + background-image: url(/plugin/flexview/img/refresh02.png); +} + diff --git a/webif/plugin/flexview/flexview.hook b/webif/plugin/flexview/flexview.hook new file mode 100644 index 0000000..0637d53 --- /dev/null +++ b/webif/plugin/flexview/flexview.hook @@ -0,0 +1,85 @@ + +# plugin jim code to define column formatters and context menu actions for flexview +# NB menu actions common to flexview and browse go in browse.hook + +# Javascript and stylesheets for plugins +jscss /plugin/flexview/flexview.js /plugin/flexview/flexview.css + +# Context menu items for video recordings +lappend plugins(menu) {view {desc "File Details"}} +lappend plugins(menu) {view_file {desc "View details"}} +lappend plugins(menu) {reload_fdir {desc "Reload folder"}} +lappend plugins(menu) {play {desc "Play"}} + +# Context menu items for other file types +lappend plugins(omenu) {view_file {desc "View details"}} +lappend plugins(omenu) {reload_fdir {desc "Reload folder content"}} + +# Context menu items for directories +lappend plugins(dmenu) {view_node {desc "View details"}} +lappend plugins(dmenu) {reload_node {desc "Reload tree node"}} +lappend plugins(dmenu) {reload_dir {desc "Reload folder"}} +lappend plugins(dmenu) {dedupdir {desc "De-duplicate folder"}} +lappend plugins(dmenu) {new_dir {desc "New sub-folder"}} + +if {[system has tvdb]} { + lappend plugins(menu) {theTVDB {desc "  change episode"}} + lappend plugins(dmenu) {theTVDB {desc "  Add/change TVDB series"}} +} + +## Bottom button definitions +#lappend plugins(buttons) "flexview { +# desc {flexview Rules} +# link {/plugin/flexview/edit.jim?dir=[cgi_quote_url $dir]} +#}" +# +# +## Map browse context menu attributes to flexview column +#lappend plugins(dmenuattr) "forceflatview" "flatview" +#lappend plugins(dmenuattr) "noflat" "noflatten" +#lappend plugins(omenuattr) "detads" "Addetection" +# +# +## Icon name / icon +#lappend plugins(icons) "detectads" +#lappend plugins(icons) [_addicon "/plugin/detectads/img/detectads.png" "Ad Detection"] +# +#lappend plugins(icons) "flatview" +#lappend plugins(icons) [_addicon "/plugin/flatview/steamroller.png" "Force-flatview" "fvIcon"] +# +#lappend plugins(icons) "noflatten" +#lappend plugins(icons) [_addicon "/plugin/flatview/tyre.png" "No-flatten" "fvIcon"] +# +# +## File list column - see jqGrid documentation for column options +#lappend plugins(flcolumn) { +#{ name:'Addetection', +# hidden:false, width:22, +# stype: 'select', +# searchoptions: {value: {1:"Ad Detection",0:"No Ad Detection",'':"-   All"}, searchOperMenu: false, clearSearch: false}, +# label: icons.detectads + ' Ad Detection', +# formatter: fmtIcon, formatoptions: {img: icons.detectads} +# }, +#} +# +## Directory tree column - see jqGrid documentation for column options +#lappend plugins(dircolumn) { +#{ name:'flatview', +# hidden:false, width:22, +# stype: 'select', +# searchoptions: {value: {1:"Force-FlatView",0:"No Force-FlatView",'':"-   All"}, searchOperMenu: false, clearSearch: false}, +# label: icons.flatview + ' Force-FlatView', +# formatter: fmtIcon, formatoptions: {img: icons.flatview} +# }, +#} +# +#lappend plugins(dircolumn) { +#{ name:'noflatten', +# hidden:false, width:22, +# stype: 'select', +# searchoptions: {value: {1:"No-Flatten",0:"Allow Flatten",'':"-   All"}, searchOperMenu: false, clearSearch: false}, +# label: icons.noflatten + ' No-Flatten', +# formatter: fmtIcon, formatoptions: {img: icons.noflatten} +# }, +#} + diff --git a/webif/plugin/flexview/flexview.js b/webif/plugin/flexview/flexview.js new file mode 100644 index 0000000..4f9b9bc --- /dev/null +++ b/webif/plugin/flexview/flexview.js @@ -0,0 +1,73 @@ +// plugin javascript code to support column formatters and context menu actions + +plugins.menu.view_file = function(file) { + var rowid= getRowId(decodeURI(file)); + viewRow('#filelist',rowid); +}; + +plugins.menu.reload_fdir = function(file1) { + var file =decodeURI(file1); + var dir = file.substr(0,file.lastIndexOf("/")); + reloadDir(dir); +}; + +plugins.dmenu.reload_dir = function(dir1) { + var dir = decodeURI(dir1); + reloadDir(dir); +}; + +plugins.dmenu.reload_node = function(dir) { + var rowid= getRowId(decodeURI(dir)); + reloadNode(rowid); +}; + +plugins.dmenu.view_node = function(dir) { + var rowid= getRowId(decodeURI(dir)); + viewRow('#dirlist',rowid); +}; + +plugins.menu.view = function(file) { + var rowid= getRowId(decodeURI(file)); + viewFile(rowid); +}; + +plugins.menu.play = function(file) { + window.location = '/play/play.jim?file=' + file; +}; + +plugins.menu.theTVDB = function(file) { + window.location = '/browse/tvdb/episode.jim?file=' + file; +}; + +plugins.dmenu.dedupdir = function(dir) { + window.location = '/dedup/dedup.jim?dir=' + dir; +}; + +plugins.dmenu.new_dir = function(dir) { + // set dir field in form, no id :-( + var cdir = $("form#newdirform_form input:first").val(); + + $('form#newdirform_form input:first').val(decodeURI(dir)); + + $('#newdirform').dialog({ + autoOpen: true, + height: 'auto', width: 'auto', + modal: true, + buttons: { + "Create": newdir_submit, + "Cancel": function() { + $(this).dialog('close'); + } + }, + close: function() { $('#newdirname').val(''); } + }); +}; + +plugins.dmenu.theTVDB = function(dir) { + var cdir = window.dir; + window.dir = decodeURI(dir); // Set global var + $('#tvdbsetseries').show().enable().trigger('click').hide(); + //window.dir = cdir; // Set global var +}; + + diff --git a/webif/plugin/flexview/genJSON.jim b/webif/plugin/flexview/genJSON.jim new file mode 100755 index 0000000..f84f39e --- /dev/null +++ b/webif/plugin/flexview/genJSON.jim @@ -0,0 +1,358 @@ +#!/mod/bin/jimsh +###### +# FlexView - Generate directory tree in jqGrid JSON format +# Author: MymsMan, 2015/16 +###### + + +package require cgi +source /mod/webif/lib/setup +require ts.class pretty_size system.class settings.class escape browse.class \ + plugin epg.class classdump + +set dustbin [system dustbin 1] +set root [system mediaroot] +set nicesplice [system pkginst nicesplice] +set model [system model] +set dlnaok [system dlnastatus] + +set ignore {.nts .thm .hmi} +set include {.ts .avi .mpg .mpeg .wmv .mkv .mp3 .mp4 .mov .hmt .m4v .m4a} + +# logging options +if {[lindex $argv 0] eq "-d"} { + set argv [lrange $argv 1 end] + set loglevel 2 +} else { + # Use same logging option as auto log + set settings [settings] + set loglevel [$settings _nval_setting "autolog"] +} + + +proc log {msg {level 2}} { + if {$level > $::loglevel} return + system plog flexview $msg +} +###### +# Common JSON code. +# Author: Martin Wink, 2014. +###### + +# +# Initialize a map from control characters to JSON escaped characters. +# Initially all non-null control characters to \u00xx sequences. +for {set i 1} {$i < 32} {incr i} { + set json_escape_map([format %c $i]) \\u[format %04x $i] +} +# Then overwrite certain well known control characters with shorter versions. +set json_escape_map([format %c 8]) \\b; # backspace +set json_escape_map([format %c 9]) \\t; # tab +set json_escape_map([format %c 10]) \\n; # lf +set json_escape_map([format %c 12]) \\f; # ff +set json_escape_map([format %c 13]) \\r; # cr +# Other special sequences +set json_escape_map(\") {\"} +set json_escape_map(\\) {\\} +set json_escape_map(/) {\/} + +# +# Escape a string for inclusion in JSON output. +# +proc escape_json_string { in } { + return [string map $::json_escape_map $in] +} +###### end Common JSON code. + +set lbrc "\{" +set rbrc "\}" +set lbrk "\[" +set rbrk "\]" +set quot "\"" +set nul "" +set comma "," + +# id's are used as html id so shouldn't contain space, dot etc to avoid confusing jquery +# convert most specials to - +for {set i 1} {$i < 48} {incr i} { + set id_escape_map([format %c $i]) {-} +} +for {set i 58} {$i < 65} {incr i} { + set id_escape_map([format %c $i]) {-} +} +for {set i 91} {$i < 95} {incr i} { + set id_escape_map([format %c $i]) {-} +} +for {set i 123} {$i < 128} {incr i} { + set id_escape_map([format %c $i]) {-} +} + +proc idQstring {str} { +# Return quoted and escaped id string + global quot + return "$quot[string map $::id_escape_map $str]$quot" +} + +proc Qstring {str} { +# Return quoted and escaped string + global quot + return "$quot[escape_json_string $str]$quot" +} + +proc json-key {key value {sep ","}} { + global quot + set jkey "$sep $quot$key$quot: $value" + return $jkey +} + +proc p1l {str} { + puts -nonewline $str +} + +proc pnl {str} { + puts $str +} + +proc genDirList {dir ddir {depth 0} {expand 0} {i 0} {mode "children"}} { + global lbrc rbrc lbrk rbrk quot nul comma + + if {[catch {set dsize [exec /mod/bin/busybox/du -s "$dir/"]} msg]} { + puts "Error, $dir, $msg" + return + } + lassign $dsize dsize + set psize [pretty_size $($dsize * 1024)] + + + + set alist {} + set dlist {} + set flist {} + foreach entry [lsort [readdir -nocomplain $dir]] { + if {[string index $entry 0] eq "."} { + lappend alist $entry + continue + } + if {[file isdirectory "$dir/$entry"]} { + lappend dlist $entry + if {$depth <= 0} { + # quit if not loading + break + } + } else { + lappend flist $entry + } + } + + set ssep $nul + if {$mode eq "parent"} { + # Basic fields for all directories + p1l [json-key title [Qstring $ddir] $lbrc] + set ssep $comma + + p1l [json-key id [idQstring $dir] ] + p1l [json-key dir [Qstring $dir] ] + p1l [json-key level $i] + if {$i} { + p1l [json-key parent [idQstring [file dirname $dir]] ] + } else { + p1l [json-key parent null ] + } + p1l [json-key listloaded 0] + p1l [json-key opt [Qstring dopt] ] + p1l [json-key dsize $dsize ] + p1l [json-key psize [Qstring $psize] ] + + # If subdirectories exist show whether node expanded or not + if {[llength $dlist]} { + p1l [json-key isLeaf false ] + if {$expand >0} { + p1l [json-key expanded true ] + } else { + p1l [json-key expanded false ] + } + } else { + p1l [json-key isLeaf true ] + } + + # For each hidden file (dir attribute) create a flag (and content?) column + foreach attr $alist { + p1l [json-key [string range $attr 1 end] 1] + } + + + pnl "$rbrc" + } + + # Recurse into subdirectories if they are to be expanded + if {[llength $dlist] && $depth > 0} { + incr depth -1 + incr expand -1 + incr i + + foreach subd $dlist { + p1l $ssep + genDirList "$dir/$subd" $subd $depth $expand $i parent + set ssep $comma + } + + # if {[llength $flist]} { + # p1l "$ssep [json-key title [Qstring -Files-] $lbrc]" + # pnl "[json-key folder false $comma] $rbrc" + # } + } + +} + +proc genFileDetails {dir file} { + global lbrc rbrc lbrk rbrk quot nul comma dinuse + + set ext [string tolower [file extension $file]] + set base [file rootname $file] + + set fsize [file size "$dir/$file"] + set psize [pretty_size $fsize] + + # Basic attributes for all file types + p1l [json-key id [idQstring "$dir/$file"] $lbrc ] + p1l [json-key fname [Qstring $file] ] + p1l [json-key dir [Qstring "$dir"] ] + p1l [json-key sel false] + p1l [json-key showrow true] + p1l [json-key fsize $fsize ] + p1l [json-key psize [Qstring $psize] ] + + if {$ext eq ".ts"} { + set omenu opt + set type ts + } else { + set omenu oopt + set type gen + } + + p1l [json-key ftype [Qstring $type] ] + pnl [json-key opt [Qstring $omenu] ] + + if {[file exists "$dir/$base.hmt"]} { + # Generate hmt related attributes + # Use HMT utility rather than TS class so we can handle orphaned HMT (and write less code) + set line [exec hmt -p "$dir/$file"] + set vars [split $line "\t"] + + set vnames {title synopsis definition channel_num channel_name + start end flags_list guidance bookmarks schedstart scheddur + genre resume status seriesnum episodenum episodetot} + + set ix 0 + foreach vn $vnames { + p1l [json-key $vn [Qstring [lindex $vars $ix]] ] + set $vn [lindex $vars $ix] + incr ix + } + + if {[string is integer -strict $end]} { + # calc duration + set duration $($end-$start) + p1l [json-key duration $duration ] + } + + if {$flags_list != ""} { + # Individual Flag entries + set flags [split [string range $flags_list 0 end-1] ,] + foreach flag $flags { + if {$flag in {HD SD {Unlimited Copies}}} {continue} + p1l [json-key $flag 1] + } + # Need to special case Decrypt since it is the absence of ODE flag + if {"ODEncrypted" ni $flags} {p1l [json-key Decrypted 1]} + } + } + + + if {[file exists "$dir/$base.thm"]} { + # Generate thumbnail related attributes + p1l [json-key thmok 1] + } + + # Possibly use SQL call to retrieve all DLNA for directory? + set dlnaIndex [system dlnaurl [file normalize $dir/$file]] + if {$dlnaIndex != ""} { + p1l [json-key dlna 1] + p1l [json-key dlnaIndex [Qstring $dlnaIndex] ] + } + + # Check for file inuse + if {$file in $dinuse} { + p1l [json-key inuse 1] + } + + pnl "$rbrc" + +} + +proc genFileList {dirlist } { + global lbrc rbrc lbrk rbrk quot nul comma dinuse + set ssep " " + set dirl [split $dirlist {,}] + + foreach dir $dirl { + set alist {} + set dlist {} + set flist {} + set dinuse [system dirinuse $dir] + + foreach entry [lsort [readdir -nocomplain $dir]] { + if {[string index $entry 0] eq "."} { + lappend alist $entry + continue + } + if {[file isdirectory "$dir/$entry"]} { + lappend dlist $entry + } else { + set ext [string tolower [file extension $entry]] + if {$ext ni $::include} { continue } + set base [file rootname $entry] + if {$ext eq ".hmt"} { + if {[file exists "$dir/$base.ts"]} { continue } + } + lappend flist $entry + } + } + + + if {[llength $flist]} { + + foreach file $flist { + p1l $ssep + genFileDetails $dir $file + set ssep $comma + } + + } + } + +} + + +httpheader "application/json" + +set dir [cgi_get dir "/media"] +set dir [cgi_get dir $root] +set level [cgi_get n_level 0] +set mode [cgi_get mode "parent"] +set mode [cgi_get mode "filelist"] + +pnl "[json-key rows $lbrk $lbrc]" + +set start [clock milliseconds] +if {$mode == "filelist"} { + genFileList $dir +} else { + genDirList $dir [file tail $dir] 1 1 $level $mode +} +set end [clock milliseconds] +set elapse $(double($end-$start)/1000.0) +log "$mode | $elapse | $dir" 0 + +pnl "$rbrk $rbrc" + diff --git a/webif/plugin/flexview/go.hook b/webif/plugin/flexview/go.hook new file mode 100644 index 0000000..75578de --- /dev/null +++ b/webif/plugin/flexview/go.hook @@ -0,0 +1,7 @@ +register_module "flexview" "/plugin/flexview/" +#system plog flexview "gohook mod $module last $lastmodule" + +if {$module eq "browse" && $lastmodule eq "flexview"} { + override_module "flexview" +} + diff --git a/webif/plugin/flexview/img/NotDecrypted.png b/webif/plugin/flexview/img/NotDecrypted.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f1be988327e7a8b25e5d3ea2c87793f2e35177 GIT binary patch literal 4551 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 literal 0 HcmV?d00001 diff --git a/webif/plugin/flexview/img/flexviewB.png b/webif/plugin/flexview/img/flexviewB.png new file mode 100644 index 0000000000000000000000000000000000000000..f361ca345ac0783a288c0eff912d79d6ef734bef GIT binary patch literal 71097 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 literal 0 HcmV?d00001 diff --git a/webif/plugin/flexview/img/refresh02.png b/webif/plugin/flexview/img/refresh02.png new file mode 100644 index 0000000000000000000000000000000000000000..8cd162e86a576f00f01e8de78e7b191eeaf61347 GIT binary patch literal 566 zcmV-60?GY}P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-tVu*cRCwBA{Qv(y10?_;fLL%zD6f_<08(r~eBo~B zi(k0Z0R#{uvI~Hkq=D1~APxj#W+Zh-fH(_i&}9%uZ;c8_lj^0AJ9hvAhy_Wr2as9; z#Qad9FF^bbh~K{?e(noVGuLEvWS;|FYvZ0MR9K$<}` zKmaikiUp8=|NZ!Xk%@y*AH@F$giJsPG=LGr2M8cWN}~}VfS4F41ONfV0(U0VX<%nU zoeXj&Fo5BTfnkGT06+kNy#S3@^gv=nieeDO1Byye!~pSJpkXN>L4W{a0cu7G-oGID z|L-AC^!;J@{QxR#55zN}nm+<@D@;8=0D-&^`2Xks*Z;o#JN}3D_sc)rf8v2+c0ha| zh#vv55Y%=CsOAWu?e}2@00a=o(-(lLO7v>#egB&YPtri?0Gf0epsA1t>@Ws~H9)Kl z)Vu@P#Q*_>Ga7;Z24y5ra{UF=bOBc^00a=l=>QPlZBCiL7G7aBnGmRfi>=dT3<@$yo^=rk{;|^car6R!kt45EN5;om>yJ7uGA=L zIM&8sAdxeL+pVyKiNlBG(6b8>N|tY@R$AO(nQ$sMV4ogirwgOH#*w?a4;CHJ*J)r> T)pKaEZd5lg)alk%WUvMRLC9PL literal 0 HcmV?d00001 diff --git a/webif/plugin/flexview/index.jim b/webif/plugin/flexview/index.jim new file mode 100755 index 0000000..9a1ce34 --- /dev/null +++ b/webif/plugin/flexview/index.jim @@ -0,0 +1,403 @@ +#!/mod/bin/jimsh + package require cgi +source /mod/webif/lib/setup +require ts.class pretty_size system.class settings.class escape browse.class \ + plugin epg.class classdump + + +set mroot [system mediaroot] +set dir [cgi_get topdir $mroot] +set model [system model] +set dustbin [system dustbin 1] +set nicesplice [system pkginst nicesplice] +set settings [settings] +set curconfig [$settings _tval_setting "fvConfig"] +set curconfig [cgi_get config $curconfig] +if {$curconfig == 0} {set curconfig "default"} + +jqplugin contextMenu bar enadis blockui dialogue + +header + +jscss js/i18n/grid.locale-en.js +puts { + +} +#jscss js/jquery.jqGrid.min.js css/ui.jqgrid.css +jscss js/jquery.jqGrid.js css/ui.jqgrid.css +jscss plugins/ui.multiselect.js plugins/ui.multiselect.css + +jscss /browse/script.js /browse/style.css +jscss contextmenu.js +jscss script.js style.css +if {[system has tvdb]} { jscss /browse/tvdb/script.js /browse/tvdb/style.css } + +set plugins { dmenu {} menu {} omenu {} buttons {} dircolumn {} flcolumn {} icons {} dmenuattr {} menuattr {} omenuattr {} } +eval_plugins browse +eval_plugins flexview + + +puts " + +} + + +source /mod/webif/html/browse/assets.jim +if {[system has tvdb]} { source /mod/webif/html/browse/tvdb/assets.jim } +puts "" + +puts "$dir" +puts "$mroot" + +# Top option buttons +puts "
" +puts { + + + +
+ Loading... Please wait...
+
+
+ + + + + " + +# Directory and filelist grids +puts { +
+ + + + + + + + + + + + + + +
Directory tree view +
+ Loading... Please wait...
+ + + + +
File list view +
+ Loading... Please wait...
+ + + + +
+ + + +
+
+ + + +
+
+ +
+} + +# Bottom browse action buttons +puts "
" +puts { + + + + +} + +# Join +if {$nicesplice} { + puts { } +} + +# Queue +set queueactions(decrypt) "Decryption" +set queueactions(shrink) "Shrink" +set queueactions(mp2) "Audio-Extraction (mp2, fast)" +set queueactions(mp3) "Audio-Extraction (mp3, slow)" +set queueactions(mpg) "Conversion to MPG" +eval_plugins queueactions + +puts { + + +} + +puts { + +} + +# Plugin buttons + +if {[llength $plugins(buttons)]} { + puts "
" + foreach plugin $plugins(buttons) { + lassign $plugin tag options + puts " + + " + } +} + +puts "
" + + +# clipboard +puts { +
+ +File Clipboard + +
+ Loading... +
+
+} +footer + diff --git a/webif/plugin/flexview/js/Changes.txt b/webif/plugin/flexview/js/Changes.txt new file mode 100644 index 0000000..4494fbd --- /dev/null +++ b/webif/plugin/flexview/js/Changes.txt @@ -0,0 +1,1160 @@ +3.6 version +=========== +Bug Fixes +--------- + * Fix problem with getAbsoluteIndex on IE8 + * Fix in triggerReload grid to reset the savedRow array. + * Fix in setGridWidth method when try to resize a grid a and there is no data. + * Fix header aligment in ie8 + * Fix in createEl function to check for val and not for html when select + * making getChangedCells method compatible with unformat function if defined + * Fixed record count when scroll true + * Fix in setSelection method to accept numbers + * Fix IE header checkbox when multiselect is true + * Fix for searching DOM elements with id containing special characters + * Fix a checkbox checking in form editing module. + * Fix getCol to use unformat function + * Better looking buttons in form editing + * Fix searchFilter in IE7 and IE6 not to return undefined value when more +than one field is searched. + * Some fixes for datepicker UI in inline and cell edit (when present) + * Fix in setLabel method not to clear the sort icons when we set new label + * Fix in form edit when a formatter select is used + * Fix the id pollution when multiselect is enabled. Now the id of every +common multiselect is combination of cb_ + id of the grid + * Fixed bug when deselectAfterSort false and we are in multiselect mode + * Fix in unformat number and currency + * Fixed bug when creating a select with dataUrl and select is set to multiple. + * Fix a bug when creating select with multiple option. Also the attribute +should be set immediatley after the element is created and not after. + * Fix a bug in form edit. The comapared values should be trimed since of +split(",") which cause the elements to begin with space. + * Fix a jqGrid loader (development version) for IE browsers + * Fix for form icons in Opera + * Fix getGridParam to return values 0 or false + * Avoiding the overhead of local functions and maintenance issues when the +parameters change + * Opera fix for cursor col-resize + * Fix in editGridRow when a save key is defined and the key is Eneter we +should not do save when we are in teaxtarea element + * Fix in formatter checkbox when the value is undefined. We also add a +default format for the checkbox too + * Fix addRowData to use key:true (keyIndex) when rowid is not defined + * Fix formatter bug for the select to use the defaultFormat + * Adding a 3 parameter to the unformat function - the cellobject. + * Fix alternate rows when we sort data locally. + * Fix in addRowData for alternate rows when we add item as last + * Fix collapseRow in treegrid preventing infinite recursion + * Fix in stripHtml function to parse numeric values + * Fix in delGridRow to get "fresh" Data from delData object + * Fix problems with width option if set as string. + * Fixing $jgrid.format function in base module to accept undefined parameter. + * Fix for saveRow method in aftersave function. Also we pass the request and +not the responseText. Also both aftersave and success functions have the +same type parameter - the response + * Fix for serchhidden in searchGrid method + * Fix for setGridWidth method + * Fix setColWidth function + * Fix for topinfo and bottom info in formedit to appear separatley in edit and add dialogs + * Fix searchFilter css to work when called from subgrid + * Fix celledit to work better when datepicker is attached + * Fix in viewGrid row to vizualize only the columns that only not hidden. + + +Additions and changes +--------------------- + * New API + * RTL Support + * Column reordering + * Added life scrolling of data + * Added gridResize method which can resize the grid. Also use a jQuery UI +resizable and can use any options of this widget + * Added sortableRows method which allow us to sort rows with drag and drop + * Added gridDnD method. The method connect two or more grids so that drag and drop rows +between these is possible + * Add columnChooser method which allows choosing/sorting columns at the same +time. This method requiere multiselect plugin + * Now getRowData can return all rows when rowid is not set. + * getCol now can return summary, average and count of the selected row. The +3 parameter determines this (valid are sum, avg, count). If this parameter +is set and is valid, the returned value is a scalar.If the param is not +valid the returned value is empty array. + * To setRowData we add a 3 parameter. If the parameter is string we use +addClass to add classes. If the parameter is object we use css to add css +properties. Note that we can set properties and classes without data, in +this case we should set data to false + * Adding a event object to ondblClickRow and onRightClickRow events as 4 parameter + * Add a ant based build system which allow us to minify the JS code + * Added custom validation property in editing modules + * Added possibility to create custom element in editing modules + * Adding support to configure the ajax request in a way that user want. This +is done in all modules where ajax is used. + * Added class in cell edit and inline edit so that the cell or row can not +be edited - the corresponding classes are 'not-editable-cell' and +'not-editable-row'. + * Added Hebrew Translation + * Added a beforeCheckValues event in editGridRow method. The execution is +before checking the values. Should return object of the posted data. + * Added Romanian translation + * Added a property classes in colModel where we can attach classes to column. + * info_dialog function can be used as separate modal dialog + * Added a class ui-ellipsis in grid css file. Also work in FireFox too. + * Changind the order of calling the events beforeSearch and beforeClear in +filterToolbar method. Also the events are called immediatley after triggering the grid + * To onCellSelect we replace the 4 parameter with the more natuaral event instead of e.target - +sorry if this will bring to some confusions. + * Added searchoptions value parameter in order to separate the editing module and search module. +We first look for such option in searchoptions and if not found we use the +editoptions value + * Added fixed property in colModel which allow us not to change the +column width if shrinkToFit is true and we set new width of the grid. + * Added buildSelect function to deserialize data for the select. This is option +can be added in editoptions or search options + + +Please read The Installation instructions first in install.txt +================================================ +3.5 beta (buld6- build11) + +New Properties and methods +========================== + +- Added new grid parameter hoverrows. When set to false the mouse hovering is +disabled in the grid data rows. + +- Added rowid as parameter to error function in saveRow method - inline +editing module + +- treeGrid to be initially work with datatype local + +- Added new method updateGridRows (grid.custom.js) +This method update the existing data in the grid by given id rowname. + +Syntax: updateGridRows (data, rowidname, jsonreader) + +data is a array of data in format +[{name:value,name1:value1...},{name:value,name2:value2...}] +where the name is the name from colModel and value is the actuall value. +It is not neccessary that all columns are present in the data item object +(the same as setRowData method) + +rowidname (string) - is the name of the row which should acts as id. +If not set the name "id" is used. + +jsonreader (boolean) default false. If set to true a jsonReader definition +is used to set the data. Note that this work only of the item in jsonReader +object 'repeatitems' is set to true. + +- Switch to namedItems JS function. This improve the speed. Previously we +walk throught the entry rowset to find the rowIndex of the given rowid. +Now we use the build in javaScript method namedItems which do the same. + +- multiselect is enabled in inline edit module. + +- To the importComplete event in jqGridImport method we pass the response. + +- Added support for alternate rows. Also added new jqGrid option altclass. +The default value is 'ui-priority-secondary' THis way we can develop our own +alternate class. + +- Added ShrinkToFit option in setColumns method which fit columns to the grid +width. Default value is false. + +- Extend tableToGrid method to use custom options when building the grid. +The call to this function is +tableToGrid(selector, options) +where options is the object with jqGrid options. + +- Adding 4px right to the view records text for better view + +- Add a onClose event to all modals in form editing (except alert dialog) +The default value is null. This event can be passed in editGridRow, delGridRow, +viewGridRow, and setColumns methods. The event raised when a close icon is clicked, +a cancel button is clicked or ESC key is pressed (if this is enabled). + +- Significant speed improvents in tree Grid when a relative large data is loaded. + +- Added dataheight parameter to all modal windows, where we can control the +scrolling content. Intitially this parameter is auto. +To summarize - we have two parameters for controlling the height of the modal. +height and dataheight. +The height parameter control the height of the entry modal, dataheight parameter +control the height of the scrolling content. The buttons of the modals are +allways visible at the bottom of the modal.Also some improvments in jqDnR. + +- In setColumns method we add colnameview and closeAfterSubmit parameters. The +colnameview (default true). If set to false the names from colModel are not +visible. closeAfterSubmit if defined cleses the dialog after the submit +button is clicked. + +- Added parameter viewsortcols in jqGrid parameters. The purpose of this +parameter is to define different look and behavior of sorting icons that +appear near the header. This parameter is array with the following default +options +viewsortcols : [false,'vertical',true] + +The first parameter determines if all icons should be viewed at the same time +when all columns have sort property set to true. +The default of false determines that only the icons of the current sorting column +should be viewed. +Setting this parameter to true causes all icons in all sortable columns to be viewed. + +The second parameter determines how icons should be placed - vertical means that +the sorting icons are one under another. 'horizontal' means that the icons should +be one near other. + +The third parameter determines the click functionality. If set to true the columns are +sorted if the header is clicked. If set to false the columns are sorted only when +the icons are clicked. + +Important note: When set a third parameter to false be a sure that the first parameter +is set to true, otherwise you will lost the sorting. + + +Fixes +===== +- Fixed bug in filterToolbar. We search now by index and when not found by +name. + +- Fix in searchGrid method. We search now by index and when not found by +name. + +- Fixed bug in IE when resizing columns. The function getOffset is changed +so that the resizing speed is the same as in Safari and FF. + +- Fix multiple select bug in createEl function. Now we set the options before +checking for multiple:true + +- Fixed bug in treegrid. The strict comparation in getNodeParent method +causes bad results. + +- Fix in setGridWidth method. We do not initialize correct the new width which +causes after the first set of the width to not work in other grid in the same +page. + +- Fixed bug in GridExport. We delete the columns that are generated +dynamically - multiselect, subgrid, treegrid or rownumbers. This way the +import is without errors + +- Fixed a bug in addRowData method to add data with id = 0 (number) + +- Fixed a forever loading bug in IE. + +- Fixed altRows bug in delRowData method + +- navGrid method fix for warning modal and IE6 + +- Fix setColumns method to the common apprach of forms and modals + +- Fix for IE8 in getAbsoluteIndex method. IE8 seems to work as other browsers + +- Fixed bug in delRowData - the grid does not resize when first row is +deleted. + +- Fixed bug when rownumbers and subgrid are used together + +- Fixed bug in row editing when the column name contain dot. + +- Fixing bug in viewGridRow - also the id manes of the form are changed in order +to be not equal of those in editGridRow + + + +3.5 beta (buld5) + +FormEditing +=========== +- added options checkOnUpdate (default false) in editGridRow method. +Also available in add and edit mode. +When this option is set to true the behaviour as follow: +When something is changed in the form and the user click on +Cancel button, navigator buttons, close button (on upper right corner of the +form), in overlay (if available) or press Esc key (if set) a message box apper +asking the user to save the changes, not to save the changes and go back in the +form or cancel all changes (this will close the modal form) +Note that checkOnSubmit option will work only when a submit button is clicked. +When nothing is changed we contionue with the action. + +- added option - rowabove (default false) in colModel formoptions +When set to true a new empty row is added above this row in form editing. +- added option - rowcontent (default empty) in colModel formoptions. +This option have sense only when rowabove option is set to true. +With this option is possible to set a content to the new added empty row in +the form. In order to style easy these rows a class 'contentinfo' is set. + +- added new items in the language files to support the checkOnUpdate option + +- added class 'delmsg' in the delGridRow method. This allow us to change the +message dynamically using a beforeShow or afterSow eventrs. The class is added +to a element td. + +Fixes +===== +- fix in Bulgarian translations files. +- fix in searchGrid method. Now we search by index (from colModel) and only if +it is not available we search by name. +- Fix for date parser in the base module. Now we can sort locally on +dates that contain month names +- Fixed bug in searchGrid. The translation messages for the operations does not +apper when not set in colModel +- removed some not needed events from base grid. Also return false do these +by default; +- Fix bug to check if datepicker is available in searchGrid. +- Fix a bug in searchGrid in IE6, where the data value is not set for elements +after the first +- Fixed bug when calling of jqModal multiple times on the same element. We +need the initialization only once and not every time. This cause a memory +leaks +- Fixed bug in formatter where the data containing ' causes break in IE +- Fixed bug in base module when adding data where the data contain a ' char. +This breaks in IE browsers. +- Fixed bug in checkboxes. We add the value setted in the editoptions. Also +converting to lower case make the option checkOnUpdate to be true every time. +- We replace white-space nowrap with pre in td element in the CSS file. This fixes +the bug in IE where the first row does not wrap when the text is longer than +the column width. Also this requiere DOCTYPE declaration in the document. +- Fixed bug in viewGridRow method where when resizing the modal causes the data +to apper bad. + + +3.5 beta (buld4) +Base +==== +- added option footerrow - default false. If set to true this will place a +footer table with one row below the gird records and above the pager. +The number of columns equal of these from colModel + +-added option userDataOnFooter(default false) which directly place the user data +array at footer. The rules are as follow: If the userData array contain name +which is equal to those of colModel then the value is placed in that column. +If there are no such values nothing is palced. Note that if this option +is used we use the current formatter options (if available) for that column. + +-Added method getCol(colname). Colname can be either number which represents +the index of the column or name from colModel. The method return array with +the values of the coulmn. + +- Added method footerData ( action, data, format). This method get or set data +on footer. + +action - can be 'get' or 'set'. If not set default is get. +When set to 'get' - the result is object of type name:value, where the name is +a name from colModel. This will return a data from the footer. The other two +options does not have effect in this case. + +When set to 'set' a data array (object) should be set. This will place +the values in the footer. + +format - default is true. This instruct the method to use the formmater +(if set in colModel) when a new values are set. +Setting to false will disable the using of formatter. + +Related css items in the ui.jqgrid.css +.ui-jqgrid-sdiv - is a div container for the footer +.ui-jqgrid-ftable - is the class for the table +tr.footrow - is the class for the footer row +tr.footrow td is the item for the cell formating + +In order to format every cell in a way that you want +maybe you can use + +jQuery("tr.footrow td:eq(2)","#gbox_mygrid").css(...) +where the td:eq(2) point to the third column +and mygrid is the id of the grid. The id of the global grid container +is constructed via "gbox_"+the id of the grid. + +There are no methods to show and hide the footer row dynamically, but +following the above example we can do + +jQuery(".ui-jqgrid-sdiv","#gbox_mygrid").hide() - this will hide the footer row. + +jQuery(".ui-jqgrid-sdiv","#gbox_mygrid").show() - this will show the footer row. + + +Form Editing +============ +aded option in editGridRow - checkOnSubmit (default false) +This option only work in editing mode and not in add. +When set to true - the method looks if any data is changed in the form and +if this is a case a dilog message appear where the user is asked to confirm the +changes or cancel it. Pressing cancel will return to the form, but does not +set the values to its original state. + +Note that this causes a some changes in the language file. + +Fixes +===== + +- Removed imgpath from cell edit and inline edit modules and common module. +This parameter is no longer valid in 3.5 +- Replace $ with jQuery in grid.common.js which causes problems when used with +other librariers like prototype. +- removed a checking e.srcElement from base module. jQuery allready fix this. +- fixing the size option in select when using ajax to load selects. +- Fixed bug in IE browsers, when clicked on href tag with child nodes, +IE incorrect report in all cases that this is a href element. This couses +onSelectCell not to behave correct. +- Fixed bug in searchGrid - group options are not passed to serchFilter in +order get them from Language file. +- Fix in bulgarian trnslations. +- Fix on sorting column. The initial sort check first for index and then for +column name. Before the checking for the index was missed. +Sortorder converted to lower case in order to avoid some cofusions. +- Fix in set columns module. The modal does not appear correctly due to +missed parameter + + + +3.5 beta (buld3) + +Base +==== +- To the loading message is added ui-state-active class from Theme roller. +This is more natural, indicating that the grid is active when data is loaded. + +Form Editing +============ +- Added keyboard navigation, which allow us to navigate throught the records while +in form editing pressing certain keys. This option is available in editGridRow +and viewGridRow methods. The default state is disabled. To enable this you +should set the options in the edit/add parameters: + +navkeys: [true,38,40] +The first item enables the navigation. +The second item corresponds to reccord up and by default is the the key code +for Up key +The third item corresponds to reccord down and by default is the key code for +Down key +Example +$("#mygrid").navGrid("#pager",{options},{id:'myeditid',navkeys: [true,38,40]}..) +Also this option does not work in add mode. + +Note: Instead that this does not have sense, if you plan to navigate with keys +it is recommended to add this option in add mode. This should be done +because the form for add and edit is the same and it is unknown which action +will be lunched first. + +- Added posibility to save the form pressing certain key - add/edit mode only +By default this option is disabled. +To enable +savekey: [true,13] +The first item enables saving with pressing certain key. +The second item corresponds to key code for saving. Default Enter (key code 13) + +Note that this binding should be used for both adding and editing a row. +Since the binding is for the form, there is no possibility to have one +key in add and another in edit mode. + +- Added icons for the buttons in the form. The corresponding class in the css +is "fm-button" +By default all icons are enabled. +For add/edit method editGridRow +The save button is defined with +saveicon : [true,"left","ui-icon-disk"] +The close button is defined with +closeicon: [true,"left","ui-icon-close"] + +The first item enables the icon +The second item tells where to pu icon left or right +The third item corresponds to valid ui icon from theme roller + +For viewGrid Row +closeicon : [true,"left","ui-icon-close"] + +For Deleting +delicon: [true,"left","ui-icon-scissors"] +cancelicon: [true,"left","ui-icon-cancel"] + +Fixes +====== +-Fixed bug when getting the index of the row. Strict compare should be removed. +-Fixed bug when datatype is function - we need to exit when call it and not to +continue. +-Fixed bug in form editing - the buttons do not align properly. + +3.5 beta (build2) + +Navigator +========= +This was missed in the first build +In the navGrid we can pass uniquie id's of the buttons in order to manipulate +them easy. If no id is set we create one which is combination of: +for add button "add_"+ the id of the grid +for edit button "edit_"+ the id of the grid +for view button "view_" + the id of the grid +for delete button "del_" + the id of the grid +for search button "search_" + the id of the grid +for refresh button "refresh_" + the id of the grid +Example: +$("#mygrid").navGrid("#pager",{options}, {id:'myeditid'},{id:'myaddid'}...) + +Base Grid +========= +- Record number information now can format the values according to the +formatter setting (if available) getting information from language file. + +Fixes +===== + +- Fixed bug when multi select with json. We pass wrong parameter to addMulti +function +- Spelling error in all language files, which cause not to set the default +value correct +- Fixed bug when creating warning message. Fixed bug when determining the +number column element in the form +- Fixed bug - clientSide datatype should be converted to lower case +according to the new improvements +- Fixed bug in IE6/7 when try to select a option in the select generated via +ajax + +=============================== +Upgrade from 3.4.x to 3.5 beta. +=============================== + + +1. Installation +-------------- +See install.txt + +2. Code changes +--------------- +2.1 The following grid options are deprecated - i.e. you can remove them from +the grid options. They are not needed in 3.5 version + +imgpath +sortascimg +sortdescimg +firstimg +previmg +nextimg +lastimg +sortclass +resizeclass + +2.2 Second change is related to custom formatters. Starting with version 3.5, +the custom formatter is passed the following parameters: + +formatter : function ( cellvalue, options, rowObject ) +{ +// format the cellvalue to new format +return new_formated_cellvalue; +} + +Note the return in the function. This function should always return a value +in order to work correctly. The parameters are + +cellvalue - is the value to be formatted +options - is an object containing the following element + +options : { rowId: rid, colModel: cm} +where rid - is the id of the row +colModel is the object of the properties for this column getted from colModel +array of jqGrid + +rowObject - is a row data represented in the format determined from datatype +option. +If we have datatype: xml/xmlstring - the rowObject is xml node,provided +according to the rules from xmlReader +If we have datatype: json/jsonstring - the rowObject is array, provided +according to the rules from jsonReader + +Example: +Code in 3.4.x variant + +formatter : function ( elem, cellvalue, options) +{ +var newval = ""+cellvalue+""; +jQuery(elem).html(newval); +} + + +Code in 3.5 + +formatter : function ( cellvalue, options, rowObject ) +{ +return ""+cellvalue+""; +} + + +Base Module +============ +Bug fixes +--------- +- fixed bug in onCellSelect event when used in IE browsers - now the rowIndex +passed to this event is calculated correctly regardless of hidden columns. + +- fixed width bug when multiselect is used. Previously the width of this column +is recalculated according to table width and when shrinkToFit is set to true. +Now the column has fixed width and is no longer recalculated when the grid +width is changed. See documentation for the new options + +- fixed width bug when subgrid is used. Previously the width of this column is +recalculated according to table width and when shrinkToFit is set to true. Now +the column has fixed width and is no longer recalculated when the grid width +is changed. See documentation for the new options + +- fixed bug in addRowData method when the grid is empty and we try to add one +or more columns. The width of the data was not being recalculated correctly, +according to the header elements. + +- fixed bug when we use xmlstring and jsonstring to add data. Previously all +the data from the string is loaded without reference to the rowNum parameter. +Also this behaviour is changed for xml and json data. In other words, we now +load only rowNum number of rows even when the request consists of more rows. + +- fixed bug when posting values of input of type select set to multiple:true. +Now in all editing modules the posted values in for multiselect are separated +with comma + +- fixed bug in the size option of multi select. If the size option is not set +for multiselect the default value is 3 + +Deprecated options +---------------- +imgpath: "", in all modules +sortascimg: "sort_asc.gif", +sortdescimg: "sort_desc.gif", +firstimg: "first.gif", +previmg: "prev.gif", +nextimg: "next.gif", +lastimg: "last.gif", +sortclass: "grid_sort", +resizeclass: "grid_resize", + +Note that imgpath is not used anymore in all modules. +The altRows option is still here, but will have no effect until the jQuery +UI Theme roller supports alternative rows. + + +Note that the table element where we define the grid can not have a class +scroll - i.e. class scroll in the table definition can be omitted, but this +is NOT true for the pager element. + +New options +----------- +datatype can now set as 'script'. In other words, we now support script +as datatype. + +reccount: numeric, Default 0. Determines the exact number of available +grid rows. Can be <= from rowNum parameter + +autowidth: boolean, Default false. When set to true, the grid width is +recalculated automatically to the width of the parent element. This is done +only initially when the grid is created. In order to resize the grid when +the parent element changes width you should apply custom code and use a +setGridWidth method for this purpose. + +scrollOffset: numeric, Default 18. Determines the width of the vertical +scrollbar. Since different browsers interpret this width differently (and it +is difficult to calculate it in all browsers) this can be changed. + +cellLayout: numeric, Default 5. This option determines the padding + border +width of the cell. Usually this should not be changed, but if custom changes +to td element are made in the grid css file this will need to be changed. + +subGridWidth: numeric, Default 20. Determines the width of the subgrid column +if the subGrid option is set to true. + +multiselectWidth: numeric, Default 20. Determines the width of the multiselect +column if multiselect is set to true. + +rownumbers: boolean, Default false. If this option is set to true, a new column +at left of the grid is added. The purpose of this column is to count the number +of available rows, beginning from 1. In this case colModel is extended +automatically with new element with name - 'rn'. Also, be careful not to use +the name 'rn' in colModel + +rownumWidth: numeric, Default 25. Determines the width of the row number column +if rownumbers option is set to true. + +pagerpos: string, Default 'center'. Determines the position of the pager in the +grid. By default the pager element when created is divided in 3 parts (one part +for pager, one part for navigator buttons and one part for record information) + +recordpos: string, Default 'right'. Determines the position of the record +information in the pager. + +toolbar now accepts another option: "both". When we set toolbar: [true,"both"] +two toolbars are created -- one on the top of table data and one of the bottom +of the table data. When we have two toolbars then we create two elements (div). +The id of the top bar is constructed like "t_"+id of the grid and the bottom +toolbar the id is "tb_"+id of the grid. In case when only one toolbar is +created we have the id as "t_" + id of the grid, independent of where this +toolbar is created (top or bottom) + +gridview: boolean, Default value false. In the previous versions of jqGrid, +including 3.5 alfa, reading a relatively big data sets (Rows >=100 ) caused +speed problems. The reason for this was that as every cell was inserted into +the grid we applied about 5-6 jQuery calls to it. Now this problem is resolved; +we now insert the entry row at once with a jQuery append. The result is +impressive - about 3-5 times faster. What will be the result if we insert all +the data at once? Yes, this can be done with a help of gridview option when set +to true. The result is a grid that is 5 to 10 times faster. Of course when this +option is set to true we have some limitations. If set to true we can not use +- treeGrid +- subGrid, or +- afterInsertRow event. +If you do not use these three options in the grid you can set this option to +true and enjoy the speed. + +addRowData now is 1-2 times faster because we are using the concept to insert +the row at once + +Added jQuery function parse (removed from json2.js module): +jQuery.parse(jsonstring) +To prevent JavaScript hijacking attacks, web application authors are encouraged +to use this function. This returns a JSON representation of the variable. + +Cyclic structures are detected and safely interrupted, but could not be further +restored. +1. The while(1); construct, located at the beginning of JSON text, +2. Comments at the beginning and end of the text. +JSON data providers are encouraged to use one or both of these methods to +prevent data execution. Such JSON response may then look like this: +while(1);/*{[ + {"name":"safe value 1"}, + {"name":"safe value 2"}, + ... +]}*/ +jqGrid uses this function when obtaining a data with datatype:'json', also used +in subGrid. + +Added jQuery function stringToDoc: jQuery.stringToDoc(xmlstring). This returns +the xml document of xml string + +Added new method: jQuery("#mygrid").updateColumns(); this synchronizes the +width of the headers with the data. Useful when used with table drag and drop. + + +colModel changes and additions +------------------------------ +searchhidden is removed from editrules object + +added searchoptions object to define properties, events and other settings when +a search is performed +searchoptions : { + dataUrl : value, + dataInit: function, + dataEvents : array, + defaultValue: value, + attr: object, + searchhidden: boolean, + sopt: array +} +To summarize - when we want to deal with search we should use the following +options in colModel + +search : boolean , // true/false +stype: value, // text/select +searchoptions : object // see above + +Note: when the dataUrl is not used for the search type select, the definitions +for the select are taken from editoptions value property - i.e +editoptions:{value:"1:one;2:two",...}. See below for how to use these options in +different search methods. + + +Added new object formoptions to define various settings in form editing. Also +valid only in this module. + +formoptions : { + elmprefix:value, + elmsuffix:value, + rowpos: number, + colpos:number, + label: value +} +See below for how to use + +The editoptions are extended with the following properties. Valid in all editing +modules editoptions : { + dataUrl : value, dataInit: function, dataEvents : array, defaultValue: + value/function, +} See below + + +Changes in all editing modules +============================== + +edittype property is extended with the support of the following input elements: +button, image and file + +As described above in all editing modules we can add additional properties and +events to the editing element: + +editoptions : { + dataUrl : value, dataInit: function, dataEvents : array, defaultValue: + value/function +} +------------------------------------------------------------------------------- +dataUrl option is valid only for the elements of type select - i.e., +edittype:select + +When this option is set, the element will be filled with values from the ajax +request. The data should be a valid html select element with the desired +options. + +In form editing for add/edit this is called only once. In order to call it every +time the form is launched you should set the option recreateForm:true or use +other events like beforeShowForm (with another custom ajax call) to fill the +desired element. + +In inline edit and cell edit this is fired every time you edit the row or cell +element. +-------------------------------------------------------------------------------- +dataInit : function (elem) { +// do something +} + +If set, this function is called only once ? when the element is created. The +function is passed the specified element. This option is ideal for attaching +date picker, time picker, etc. Example: + +dataInit : function (elem) { + $(elem).datepicker(); +} +-------------------------------------------------------------------------------- +dataEvents: list of events to apply to the data element; uses +$("#id").bind(type, [data], fn) to bind events to data element + +Should be described like this dataEvents: [ + { type: 'click', data: { i: 7 }, fn: function(e) { console.log(e.data.i); } + }, { type: 'keypress', fn: function(e) { console.log('keypress'); } } +] + +The event(s) are called only once when the element is created +------------------------------------------------------------------------------- +defaultValue: 'value' or function This option is valid only in Form Editing +module when used with editGridRow method in add mode.If set this the input +element is set with this value if only element is empty. If used in selects the +text should be provided and not the key. Also when a function is used the +function should return value. + +Now we can validate a url. The corresponding settings is in colModel +editrules:{required:true, url:true} + + +FormEditing +=========== +In all methods that deal with the modals are added the following options (thanks +to Faserline Team: www.faserline.com) + +jqModal: true. The default value is true. How it works. If set to true, first +jqGrid checks if the jqModal plugin is available. If this plugin is available we +create the modal according to the jqModal plugin. If this plugin is not +available jqGrid create its own modal. The difference between the jqModal window +and jqGrid modal window is that the overlay covers only the grid, but not the +entry page as jqModal does. If this option is set to false, jqGrid will create +its own modal as described above even if jqModal is available. + +The only exception here is searchGrid method created with the new searchFilter +plugin, where this option is not available. In this method a jqGrid modal window +is used. + +closeOnEscape : false. Default false. When set to true the modal window can be +closed with ESC key. + + + +=======searchGrid================== +From now on jqGrid use a new search engine +thanks to wonderful plugin provided from Kasey Speakman (kasey@cornerspeed.com). +This plugin can also be used separately. Detailed documentation is provided in +the jquery.searchFilter.js which is provided with jqGrid package. + +These options are not used anymore in the searchGrid method +---------------------------------------------------------- +top : 0, +left: 0, +width: 360, +height: 80, +modal: false, +closeicon: 'ico-close.gif', +dirty: false, +processData: "", + +Added the following options +--------------------------- + +recreateFilter: false, This option construct the filter every time a search +button is clicked. + +multipleSearch : false, When set to false the behaviour of the search is the +same as those in versions before 3.5 When set to true: 1. We have a possibility +to add/delete as many conditions as we want 2. The posted data to the server is +string (actually a json array converted to string) + +sFilter: 'filters', This option has an effect only when the multipleSearch is +set to true; it describes the name of the posted string. By default this, i.e. +the posted data, can look like this + +filters ={ + "groupOp":"AND","rules":[{"field":"id","op":"gt","data":"1"}, +{"field":"name","op":"bw","data":"Client"}] +} + +groupOp determines the logical operator that can be used in the where statement +of the select. The value can be AND or OR. This can be changed used a select box +which is created at bottom of the search filter. + +The rules array describes actually which fields and how they are included in the +where clause The field element describes the name of the field The op element +describes the operator that should be used in the search The data element is the +data that we want to search. + +The above example (if getted and constructed correctly) should generate the +following where clause + +SELECT .... FROM table,... WHERE id > 1 AND name LIKE 'Client%' +------------------------------------------------------------------------------- +As described above the search is constructed according to the searchoptions in +colModel + +search : boolean , // true/false stype: value, // text/select + +searchoptions : { + dataUrl : value, + dataInit: function, + dataEvents : array, + attr: object, + searchhidden: boolean, + sopt: array +} +Note that here is missing the defaultValue. The option is not implemented in +this method. + + +stype determines the search type - can be select or text. If not set a text is +used + +searchoptions +------------------------------------------------------------------------------- +dataUrl option is valid only for the elements of type select, i.e. +edittype:select + +When this option is set the element will be filled with values from the ajax +request. The data should be a valid html select element with the desired +options. + +This is called only once. + +------------------------------------------------------------------------------- +dataInit : function (elem) { +// do something +} + +If set this function is called only once when the element is created. To the +function is passed the element. Also this option is ideal for attaching date +picker, time picker and etc. Example + +dataInit : function (elem) { + $(elem).datepicker(); +} +-------------------------------------------------------------------------------- +dataEvents: list of events to apply to the data element; uses +$("#id").bind(type, [data], fn) to bind events to data element + +Should be described like this +dataEvents: [ +{ type: 'click', data: { i: 7 }, fn: function(e) { console.log(e.data.i); }}, +{ type: 'keypress', fn: function(e) { console.log('keypress'); } } +] + +The event(s) are called only once when the element is created +-------------------------------------------------------------------------------- +attr is object where we can set valid attributes to the created element + +attr : { title: "Some title" } +------------------------------------------------------------------------------ +searchhidden : if set to true, the hidden element will appear in the search. +------------------------------------------------------------------------------- +array that correspond to the op element in the posted data and determines the +operation. If not set all the available options will be used; if set only the +set values will appear as selectboxes. + +All available option are sopt: +['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc'] + +The corresponding texts are in language file and mean the following ['equal', +'not equal', 'less', 'less or equal','greater','greater or equal', 'begins +with','does not begin with','is in','is not in','ends with','does not end +with','contains','does not contain'], + +Note that the elements in sopt array can be mixed in any order. + + +=========add/edit form========== +In the editGridRow method the following options are no longer used + +closeicon: 'ico-close.gif', +imgpath: '' + +Added new property formoptions (in colModel); thanks to Faserline Team +(www.faserline.com) + +The purpose of these options is to reorder the elements in the form and to add +some information before and after the editing element. + +formoptions : { + elmprefix:'', + elmsuffix:'', + rowpos:number, + colpos:number, + label: value +} + +If you go to use this object in collModel it is recommended that all editing +fields use this property and with at least the rowpos and colpos set. + +Elemprefix: if set, a text or html content appears before the input element + +Elemsuffix: if set, a text or html content appears after the input element + +Label: if set, this replace the name from colNames array that appears as label +in the form. + +rowpos : number determines the row position of the element (again with the +text-label) in the form; the count begins from 1 + +colpos : number determines the column position of the element (again with the +label) in the form beginning from 1 + +Two elements can have equal row position, but different column position. This +will place the two elements in one row on the form. + +=========== delete================================= +In the delGridRow method the following options are no longer used + +closeicon: 'ico-close.gif', +imgpath: '', + + + +============= view ============================= +Added viewGridRow method; thanks to Faserline Team (www.faserline.com) + +This method is similar to the editGridRow method except that the fields are not +editable and we do not have any events attached to the form. Here are the +options viewGridRow (options) where +options = { + top : 0, + left: 0, + width: 0, + height: 0, + modal: false, + drag: true, + closeOnEscape : false, + labelswidth: '30%' +} + + +All the options have the same thing as these in editGridRow except the option +labelswidth which default value is 30%. Since we construct the view with table +element it is difficult to calculate, in this case, how much width is needed for +the labels. Depending on the needs this value can be increased or decreased + +Custom method +============= +In the custom module is added new method filterToolbar. + +This method is the same as filterGrid, except that the search input elements are +placed in the grid just below the header elements. When the header elements are +resized the input search elements are also resized according to the new width. +Another difference to the filterGrid is that the filter toolbar uses definitions +from colModel just like the searchGrid + +Should be called like this + +jQuery("#mygrid").filterToolbar(options) + +where options are + +options = { + autosearch: true, + beforeSearch: null, + afterSearch: null, + beforeClear: null, + afterClear: null, + searchurl : '' +} + +autosearch: true Search is performed according to the following rules For text +element when a Enter key is pressed while inputting values a search is +performed. For select element when the value changes. + +beforeSearch - event which fires before a search + +afterSearch - event which fires after a search + +beforeClear - event which fires before clearing entered values (i.e., +clearToolbar is activated) + +afterClear - event which fires after clearing entered values (i.e., clearToolbar +is activated) + +The rules of creating toolbar search input elements are the same as searchGrid +using the colModel +searchoptions : { + dataUrl : value, + dataInit: function, + dataEvents : array, + defaultValue: value, + attr: object +} + +Note the missing sopt element, but addition of defaultValue property + +This method has 3 new additional methods that can be used: + +triggerToolbar - when called perform a search dynamically + +clearToolbar - when called clear the search values and set the default one if +available + +toggleToolbar - toggles the searchbar + +A typical call to these methods + +var sgrid = $("#mygrid")[0] sgrid.triggerToolbar(); + +will trigger the search of mygrid. + + +Import module +============= +added option importComplete event which fires after constructing the grid. + + +Inline edit +=========== +added afterrestorefunc as 9th parameter. The event fires after the row is +restored + +treeGrid +======== +the tree icons can be changed using the following grid parameter treeIcons. The +default values are. +treeIcons ={ + plus:'ui-icon-triangle-1-e', + minus:'ui-icon-triangle-1-s', + leaf:'ui-icon-radio-off' +}; +Note that icons from UI Theme should be used. + +formatter +========= + +- the source format for date formatter (srcformat) now can accept month names +- it is possible to enable checkboxes as editable when created with formatter In + the format options we should in this case checkbox : {disabled:false} The + default is false. To enable this option globally you can change this value in + the language file + +- the showLink now can accept custom name for the id The parameter is idName : + 'id' The default is id. Can be changed in formatoptions or in the language + file. + diff --git a/webif/plugin/flexview/js/i18n/grid.locale-en.js b/webif/plugin/flexview/js/i18n/grid.locale-en.js new file mode 100644 index 0000000..baf2741 --- /dev/null +++ b/webif/plugin/flexview/js/i18n/grid.locale-en.js @@ -0,0 +1,220 @@ +/** + * jqGrid English Translation + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +/*global jQuery, define */ +(function( factory ) { + "use strict"; + if ( typeof define === "function" && define.amd ) { + // AMD. Register as an anonymous module. + define([ + "jquery", + "../grid.base" + ], factory ); + } else { + // Browser globals + factory( jQuery ); + } +}(function( $ ) { + +$.jgrid = $.jgrid || {}; +if(!$.jgrid.hasOwnProperty("regional")) { + $.jgrid.regional = []; +} +$.jgrid.regional["en"] = { + defaults : { + recordtext: "View {0} - {1} of {2}", + emptyrecords: "No records to view", + loadtext: "Loading...", + savetext: "Saving...", + pgtext : "Page {0} of {1}", + pgfirst : "First Page", + pglast : "Last Page", + pgnext : "Next Page", + pgprev : "Previous Page", + pgrecs : "Records per Page", + showhide: "Toggle Expand Collapse Grid", + // mobile + pagerCaption : "Grid::Page Settings", + pageText : "Page:", + recordPage : "Records per Page", + nomorerecs : "No more records...", + scrollPullup: "Pull up to load more...", + scrollPulldown : "Pull down to refresh...", + scrollRefresh : "Release to refresh..." + }, + search : { + caption: "Search...", + Find: "Find", + Reset: "Reset", + odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}, {oper:'bt', text:'between'}], + groupOps: [{ op: "AND", text: "all" },{ op: "OR", text: "any" }], + operandTitle : "Click to select search operation.", + resetTitle : "Reset Search Value" + }, + edit : { + addCaption: "Add Record", + editCaption: "Edit Record", + bSubmit: "Submit", + bCancel: "Cancel", + bClose: "Close", + saveData: "Data has been changed! Save changes?", + bYes : "Yes", + bNo : "No", + bExit : "Cancel", + msg: { + required:"Field is required", + number:"Please, enter valid number", + minValue:"value must be greater than or equal to ", + maxValue:"value must be less than or equal to", + email: "is not a valid e-mail", + integer: "Please, enter valid integer value", + date: "Please, enter valid date value", + url: "is not a valid URL. Prefix required ('http://' or 'https://')", + nodefined : " is not defined!", + novalue : " return value is required!", + customarray : "Custom function should return array!", + customfcheck : "Custom function should be present in case of custom checking!" + + } + }, + view : { + caption: "View Record", + bClose: "Close" + }, + del : { + caption: "Delete", + msg: "Delete selected record(s)?", + bSubmit: "Delete", + bCancel: "Cancel" + }, + nav : { + edittext: "", + edittitle: "Edit selected row", + addtext:"", + addtitle: "Add new row", + deltext: "", + deltitle: "Delete selected row", + searchtext: "", + searchtitle: "Find records", + refreshtext: "", + refreshtitle: "Reload Grid", + alertcap: "Warning", + alerttext: "Please, select row", + viewtext: "", + viewtitle: "View selected row", + savetext: "", + savetitle: "Save row", + canceltext: "", + canceltitle : "Cancel row editing", + selectcaption : "Actions..." + }, + col : { + caption: "Select columns", + bSubmit: "Ok", + bCancel: "Cancel" + }, + errors : { + errcap : "Error", + nourl : "No url is set", + norecords: "No records to process", + model : "Length of colNames <> colModel!" + }, + formatter : { + integer : {thousandsSeparator: ",", defaultValue: '0'}, + number : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, defaultValue: '0.00'}, + currency : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, + date : { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';}, + srcformat: 'Y-m-d', + newformat: 'n/j/Y', + parseRe : /[#%\\\/:_;.,\t\s-]/, + masks : { + // see http://php.net/manual/en/function.date.php for PHP format used in jqGrid + // and see http://docs.jquery.com/UI/Datepicker/formatDate + // and https://github.com/jquery/globalize#dates for alternative formats used frequently + // one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many + // information about date, time, numbers and currency formats used in different countries + // one should just convert the information in PHP format + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + // short date: + // n - Numeric representation of a month, without leading zeros + // j - Day of the month without leading zeros + // Y - A full numeric representation of a year, 4 digits + // example: 3/1/2012 which means 1 March 2012 + ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy" + // long date: + // l - A full textual representation of the day of the week + // F - A full textual representation of a month + // d - Day of the month, 2 digits with leading zeros + // Y - A full numeric representation of a year, 4 digits + LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy" + // long date with long time: + // l - A full textual representation of the day of the week + // F - A full textual representation of a month + // d - Day of the month, 2 digits with leading zeros + // Y - A full numeric representation of a year, 4 digits + // g - 12-hour format of an hour without leading zeros + // i - Minutes with leading zeros + // s - Seconds, with leading zeros + // A - Uppercase Ante meridiem and Post meridiem (AM or PM) + FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt" + // month day: + // F - A full textual representation of a month + // d - Day of the month, 2 digits with leading zeros + MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd" + // short time (without seconds) + // g - 12-hour format of an hour without leading zeros + // i - Minutes with leading zeros + // A - Uppercase Ante meridiem and Post meridiem (AM or PM) + ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt" + // long time (with seconds) + // g - 12-hour format of an hour without leading zeros + // i - Minutes with leading zeros + // s - Seconds, with leading zeros + // A - Uppercase Ante meridiem and Post meridiem (AM or PM) + LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt" + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + // month with year + // Y - A full numeric representation of a year, 4 digits + // F - A full textual representation of a month + YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy" + }, + reformatAfterEdit : false, + userLocalTime : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + }, + colmenu : { + sortasc : "Sort Ascending", + sortdesc : "Sort Descending", + columns : "Columns", + filter : "Filter", + grouping : "Group By", + ungrouping : "Ungroup", + searchTitle : "Get items with value that:", + freeze : "Freeze", + unfreeze : "Unfreeze", + reorder : "Move to reorder" + } +}; +})); diff --git a/webif/plugin/flexview/js/install.txt b/webif/plugin/flexview/js/install.txt new file mode 100644 index 0000000..83bdc90 --- /dev/null +++ b/webif/plugin/flexview/js/install.txt @@ -0,0 +1,43 @@ +Installation + +Download the jqGrid package from the www.trirand/blog site section downloads. +Note the new download manager where you can choose which modules you want to +include in the download. + +In order to use jqGrid 3.5, first a UI theme css file should be loaded. +Download the desired theme (or build a custom one) from jQueryUI site +(www.jqueryui.com) and point in your link tag in head section the path to the +theme css + + + +where the path_to_ui_css_file is a valid path to the ui theme file + +Extract the jqGrid package and copy the ui.jqgrid.css from css directory to +your webserver directory. It is not necessary that the jqgrid css file is in +the same directory as those of the jquery ui css. + + + +Starting with this version, jqGrid does not use a loader (which loads the +needed files one by one), but all the needed code is contained in one file. +The desired modules can be built using the jqGrid download manager from the +site pointed above. In order to use this, first a language file should be +loaded and then the jqgrid file. + +Copy the desired language file from js/i18n directory to your web server +directory where you store the java script files. Every language file is +named grid.locale-XX.js, where XX is a two-letter code for the language. +Copy the jquery.jqGid.min.js file to the same or other valid directory in +your web server + +Include both the files in script tags in the head section + + + + +For debugging purposes, I have created a grid.loader.js which does the same +loading of the files as in previous versions. The location of the file is in +src directory of the package. In order to use this, the variable pathojsfiles +should be adjusted to point to the appropriate folder - see 3.4.x docs. + diff --git a/webif/plugin/flexview/js/jquery.fmatter.js b/webif/plugin/flexview/js/jquery.fmatter.js new file mode 100644 index 0000000..49a206b --- /dev/null +++ b/webif/plugin/flexview/js/jquery.fmatter.js @@ -0,0 +1,485 @@ +/* +** + * formatter for values but most of the values if for jqGrid + * Some of this was inspired and based on how YUI does the table datagrid but in jQuery fashion + * we are trying to keep it as light as possible + * Joshua Burnett josh@9ci.com + * http://www.greenbill.com + * + * Changes from Tony Tomov tony@trirand.com + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl-2.0.html + * +**/ +/*jshint eqeqeq:false */ +/*global jQuery, define */ + +(function( factory ) { + "use strict"; + if ( typeof define === "function" && define.amd ) { + // AMD. Register as an anonymous module. + define([ + "jquery", + "./grid.base" + ], factory ); + } else { + // Browser globals + factory( jQuery ); + } +}(function( $ ) { +"use strict"; +//module begin + $.fmatter = {}; + //opts can be id:row id for the row, rowdata:the data for the row, colmodel:the column model for this column + //example {id:1234,} + $.extend($.fmatter,{ + isBoolean : function(o) { + return typeof o === 'boolean'; + }, + isObject : function(o) { + return (o && (typeof o === 'object' || $.isFunction(o))) || false; + }, + isString : function(o) { + return typeof o === 'string'; + }, + isNumber : function(o) { + return typeof o === 'number' && isFinite(o); + }, + isValue : function (o) { + return (this.isObject(o) || this.isString(o) || this.isNumber(o) || this.isBoolean(o)); + }, + isEmpty : function(o) { + if(!this.isString(o) && this.isValue(o)) { + return false; + } + if (!this.isValue(o)){ + return true; + } + o = $.trim(o).replace(/\ \;/ig,'').replace(/\ \;/ig,''); + return o===""; + } + }); + $.fn.fmatter = function(formatType, cellval, opts, rwd, act) { + // build main options before element iteration + var v=cellval; + opts = $.extend({}, $.jgrid.getRegional(this, 'formatter') , opts); + + try { + v = $.fn.fmatter[formatType].call(this, cellval, opts, rwd, act); + } catch(fe){} + return v; + }; + $.fmatter.util = { + // Taken from YAHOO utils + NumberFormat : function(nData,opts) { + if(!$.fmatter.isNumber(nData)) { + nData *= 1; + } + if($.fmatter.isNumber(nData)) { + var bNegative = (nData < 0); + var sOutput = String(nData); + var sDecimalSeparator = opts.decimalSeparator || "."; + var nDotIndex; + if($.fmatter.isNumber(opts.decimalPlaces)) { + // Round to the correct decimal place + var nDecimalPlaces = opts.decimalPlaces; + var nDecimal = Math.pow(10, nDecimalPlaces); + sOutput = String(Math.round(nData*nDecimal)/nDecimal); + nDotIndex = sOutput.lastIndexOf("."); + if(nDecimalPlaces > 0) { + // Add the decimal separator + if(nDotIndex < 0) { + sOutput += sDecimalSeparator; + nDotIndex = sOutput.length-1; + } + // Replace the "." + else if(sDecimalSeparator !== "."){ + sOutput = sOutput.replace(".",sDecimalSeparator); + } + // Add missing zeros + while((sOutput.length - 1 - nDotIndex) < nDecimalPlaces) { + sOutput += "0"; + } + } + } + if(opts.thousandsSeparator) { + var sThousandsSeparator = opts.thousandsSeparator; + nDotIndex = sOutput.lastIndexOf(sDecimalSeparator); + nDotIndex = (nDotIndex > -1) ? nDotIndex : sOutput.length; + var sNewOutput = sOutput.substring(nDotIndex); + var nCount = -1, i; + for (i=nDotIndex; i>0; i--) { + nCount++; + if ((nCount%3 === 0) && (i !== nDotIndex) && (!bNegative || (i > 1))) { + sNewOutput = sThousandsSeparator + sNewOutput; + } + sNewOutput = sOutput.charAt(i-1) + sNewOutput; + } + sOutput = sNewOutput; + } + // Prepend prefix + sOutput = (opts.prefix) ? opts.prefix + sOutput : sOutput; + // Append suffix + sOutput = (opts.suffix) ? sOutput + opts.suffix : sOutput; + return sOutput; + + } + return nData; + } + }; + $.fn.fmatter.defaultFormat = function(cellval, opts) { + return ($.fmatter.isValue(cellval) && cellval!=="" ) ? cellval : opts.defaultValue || " "; + }; + $.fn.fmatter.email = function(cellval, opts) { + if(!$.fmatter.isEmpty(cellval)) { + return "" + cellval + ""; + } + return $.fn.fmatter.defaultFormat(cellval,opts ); + }; + $.fn.fmatter.checkbox =function(cval, opts) { + var op = $.extend({},opts.checkbox), ds; + if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(op.disabled===true) {ds = "disabled=\"disabled\"";} else {ds="";} + if($.fmatter.isEmpty(cval) || cval === undefined ) {cval = $.fn.fmatter.defaultFormat(cval,op);} + cval=String(cval); + cval=(cval+"").toLowerCase(); + var bchk = cval.search(/(false|f|0|no|n|off|undefined)/i)<0 ? " checked='checked' " : ""; + return ""; + }; + $.fn.fmatter.link = function(cellval, opts) { + var op = {target:opts.target}; + var target = ""; + if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(op.target) {target = 'target=' + op.target;} + if(!$.fmatter.isEmpty(cellval)) { + return "" + cellval + ""; + } + return $.fn.fmatter.defaultFormat(cellval,opts); + }; + $.fn.fmatter.showlink = function(cellval, opts) { + var op = {baseLinkUrl: opts.baseLinkUrl,showAction:opts.showAction, addParam: opts.addParam || "", target: opts.target, idName: opts.idName}, + target = "", idUrl; + if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(op.target) {target = 'target=' + op.target;} + idUrl = op.baseLinkUrl+op.showAction + '?'+ op.idName+'='+opts.rowId+op.addParam; + if($.fmatter.isString(cellval) || $.fmatter.isNumber(cellval)) { //add this one even if its blank string + return "" + cellval + ""; + } + return $.fn.fmatter.defaultFormat(cellval,opts); + }; + $.fn.fmatter.integer = function(cellval, opts) { + var op = $.extend({},opts.integer); + if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if($.fmatter.isEmpty(cellval)) { + return op.defaultValue; + } + return $.fmatter.util.NumberFormat(cellval,op); + }; + $.fn.fmatter.number = function (cellval, opts) { + var op = $.extend({},opts.number); + if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if($.fmatter.isEmpty(cellval)) { + return op.defaultValue; + } + return $.fmatter.util.NumberFormat(cellval,op); + }; + $.fn.fmatter.currency = function (cellval, opts) { + var op = $.extend({},opts.currency); + if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if($.fmatter.isEmpty(cellval)) { + return op.defaultValue; + } + return $.fmatter.util.NumberFormat(cellval,op); + }; + $.fn.fmatter.date = function (cellval, opts, rwd, act) { + var op = $.extend({},opts.date); + if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(!op.reformatAfterEdit && act === 'edit'){ + return $.fn.fmatter.defaultFormat(cellval, opts); + } + if(!$.fmatter.isEmpty(cellval)) { + return $.jgrid.parseDate.call(this, op.srcformat,cellval,op.newformat,op); + } + return $.fn.fmatter.defaultFormat(cellval, opts); + }; + $.fn.fmatter.select = function (cellval,opts) { + // jqGrid specific + cellval = String(cellval); + var oSelect = false, ret=[], sep, delim; + if(opts.colModel.formatoptions !== undefined){ + oSelect= opts.colModel.formatoptions.value; + sep = opts.colModel.formatoptions.separator === undefined ? ":" : opts.colModel.formatoptions.separator; + delim = opts.colModel.formatoptions.delimiter === undefined ? ";" : opts.colModel.formatoptions.delimiter; + } else if(opts.colModel.editoptions !== undefined){ + oSelect= opts.colModel.editoptions.value; + sep = opts.colModel.editoptions.separator === undefined ? ":" : opts.colModel.editoptions.separator; + delim = opts.colModel.editoptions.delimiter === undefined ? ";" : opts.colModel.editoptions.delimiter; + } + if (oSelect) { + var msl = (opts.colModel.editoptions != null && opts.colModel.editoptions.multiple === true) === true ? true : false, + scell = [], sv; + if(msl) {scell = cellval.split(",");scell = $.map(scell,function(n){return $.trim(n);});} + if ($.fmatter.isString(oSelect)) { + // mybe here we can use some caching with care ???? + var so = oSelect.split(delim), j=0, i; + for(i=0; i 2 ) { + sv[1] = $.map(sv,function(n,i){if(i>0) {return n;}}).join(sep); + } + if(msl) { + if($.inArray(sv[0],scell)>-1) { + ret[j] = sv[1]; + j++; + } + } else if($.trim(sv[0]) === $.trim(cellval)) { + ret[0] = sv[1]; + break; + } + } + } else if($.fmatter.isObject(oSelect)) { + // this is quicker + if(msl) { + ret = $.map(scell, function(n){ + return oSelect[n]; + }); + } else { + ret[0] = oSelect[cellval] || ""; + } + } + } + cellval = ret.join(", "); + return cellval === "" ? $.fn.fmatter.defaultFormat(cellval,opts) : cellval; + }; + $.fn.fmatter.rowactions = function(act) { + var $tr = $(this).closest("tr.jqgrow"), + rid = $tr.attr("id"), + $id = $(this).closest("table.ui-jqgrid-btable").attr('id').replace(/_frozen([^_]*)$/,'$1'), + $grid = $("#"+$id), + $t = $grid[0], + p = $t.p, + cm = p.colModel[$.jgrid.getCellIndex(this)], + $actionsDiv = cm.frozen ? $("tr#"+rid+" td:eq("+$.jgrid.getCellIndex(this)+") > div",$grid) :$(this).parent(), + op = { + extraparam: {} + }, + saverow = function(rowid, res) { + if($.isFunction(op.afterSave)) { op.afterSave.call($t, rowid, res); } + $actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show(); + $actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide(); + }, + restorerow = function(rowid) { + if($.isFunction(op.afterRestore)) { op.afterRestore.call($t, rowid); } + $actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show(); + $actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide(); + }; + + if (cm.formatoptions !== undefined) { + op = $.extend(op,cm.formatoptions); + } + if (p.editOptions !== undefined) { + op.editOptions = p.editOptions; + } + if (p.delOptions !== undefined) { + op.delOptions = p.delOptions; + } + if ($tr.hasClass("jqgrid-new-row")){ + op.extraparam[p.prmNames.oper] = p.prmNames.addoper; + } + var actop = { + keys: op.keys, + oneditfunc: op.onEdit, + successfunc: op.onSuccess, + url: op.url, + extraparam: op.extraparam, + aftersavefunc: saverow, + errorfunc: op.onError, + afterrestorefunc: restorerow, + restoreAfterError: op.restoreAfterError, + mtype: op.mtype + }; + switch(act) + { + case 'edit': + $grid.jqGrid('editRow', rid, actop); + $actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").hide(); + $actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").show(); + $grid.triggerHandler("jqGridAfterGridComplete"); + break; + case 'save': + if ($grid.jqGrid('saveRow', rid, actop)) { + $actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show(); + $actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide(); + $grid.triggerHandler("jqGridAfterGridComplete"); + } + break; + case 'cancel' : + $grid.jqGrid('restoreRow', rid, restorerow); + $actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show(); + $actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide(); + $grid.triggerHandler("jqGridAfterGridComplete"); + break; + case 'del': + $grid.jqGrid('delGridRow', rid, op.delOptions); + break; + case 'formedit': + $grid.jqGrid('setSelection', rid); + $grid.jqGrid('editGridRow', rid, op.editOptions); + break; + } + }; + $.fn.fmatter.actions = function(cellval,opts) { + var op={keys:false, editbutton:true, delbutton:true, editformbutton: false}, + rowid=opts.rowId, str="",ocl, + nav = $.jgrid.getRegional(this, 'nav'), + classes = $.jgrid.styleUI[(opts.styleUI || 'jQueryUI')].fmatter, + common = $.jgrid.styleUI[(opts.styleUI || 'jQueryUI')].common; + if(opts.colModel.formatoptions !== undefined) { + op = $.extend(op,opts.colModel.formatoptions); + } + if(rowid === undefined || $.fmatter.isEmpty(rowid)) {return "";} + var hover = "onmouseover=jQuery(this).addClass('" + common.hover +"'); onmouseout=jQuery(this).removeClass('" + common.hover +"'); "; + if(op.editformbutton){ + ocl = "id='jEditButton_"+rowid+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'formedit'); " + hover; + str += "
"; + } else if(op.editbutton){ + ocl = "id='jEditButton_"+rowid+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'edit'); " + hover; + str += "
"; + } + if(op.delbutton) { + ocl = "id='jDeleteButton_"+rowid+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'del'); " + hover; + str += "
"; + } + ocl = "id='jSaveButton_"+rowid+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'save'); " + hover; + str += ""; + ocl = "id='jCancelButton_"+rowid+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'cancel'); " + hover; + str += ""; + return "
" + str + "
"; + }; + $.unformat = function (cellval,options,pos,cnt) { + // specific for jqGrid only + var ret, formatType = options.colModel.formatter, + op =options.colModel.formatoptions || {}, sep, + re = /([\.\*\_\'\(\)\{\}\+\?\\])/g, + unformatFunc = options.colModel.unformat||($.fn.fmatter[formatType] && $.fn.fmatter[formatType].unformat); + if(unformatFunc !== undefined && $.isFunction(unformatFunc) ) { + ret = unformatFunc.call(this, $(cellval).text(), options, cellval); + } else if(formatType !== undefined && $.fmatter.isString(formatType) ) { + var opts = $.jgrid.getRegional(this, 'formatter') || {}, stripTag; + switch(formatType) { + case 'integer' : + op = $.extend({},opts.integer,op); + sep = op.thousandsSeparator.replace(re,"\\$1"); + stripTag = new RegExp(sep, "g"); + ret = $(cellval).text().replace(stripTag,''); + break; + case 'number' : + op = $.extend({},opts.number,op); + sep = op.thousandsSeparator.replace(re,"\\$1"); + stripTag = new RegExp(sep, "g"); + ret = $(cellval).text().replace(stripTag,"").replace(op.decimalSeparator,'.'); + break; + case 'currency': + op = $.extend({},opts.currency,op); + sep = op.thousandsSeparator.replace(re,"\\$1"); + stripTag = new RegExp(sep, "g"); + ret = $(cellval).text(); + if (op.prefix && op.prefix.length) { + ret = ret.substr(op.prefix.length); + } + if (op.suffix && op.suffix.length) { + ret = ret.substr(0, ret.length - op.suffix.length); + } + ret = ret.replace(stripTag,'').replace(op.decimalSeparator,'.'); + break; + case 'checkbox': + var cbv = (options.colModel.editoptions) ? options.colModel.editoptions.value.split(":") : ["Yes","No"]; + ret = $('input',cellval).is(":checked") ? cbv[0] : cbv[1]; + break; + case 'select' : + ret = $.unformat.select(cellval,options,pos,cnt); + break; + case 'actions': + return ""; + default: + ret= $(cellval).text(); + } + } + return ret !== undefined ? ret : cnt===true ? $(cellval).text() : $.jgrid.htmlDecode($(cellval).html()); + }; + $.unformat.select = function (cellval,options,pos,cnt) { + // Spacial case when we have local data and perform a sort + // cnt is set to true only in sortDataArray + var ret = []; + var cell = $(cellval).text(); + if(cnt===true) {return cell;} + var op = $.extend({}, options.colModel.formatoptions !== undefined ? options.colModel.formatoptions: options.colModel.editoptions), + sep = op.separator === undefined ? ":" : op.separator, + delim = op.delimiter === undefined ? ";" : op.delimiter; + + if(op.value){ + var oSelect = op.value, + msl = op.multiple === true ? true : false, + scell = [], sv; + if(msl) {scell = cell.split(",");scell = $.map(scell,function(n){return $.trim(n);});} + if ($.fmatter.isString(oSelect)) { + var so = oSelect.split(delim), j=0, i; + for(i=0; i 2 ) { + sv[1] = $.map(sv,function(n,i){if(i>0) {return n;}}).join(sep); + } + if(msl) { + if($.inArray($.trim(sv[1]),scell)>-1) { + ret[j] = sv[0]; + j++; + } + } else if($.trim(sv[1]) === $.trim(cell)) { + ret[0] = sv[0]; + break; + } + } + } else if($.fmatter.isObject(oSelect) || $.isArray(oSelect) ){ + if(!msl) {scell[0] = cell;} + ret = $.map(scell, function(n){ + var rv; + $.each(oSelect, function(i,val){ + if (val === n) { + rv = i; + return false; + } + }); + if( rv !== undefined ) {return rv;} + }); + } + return ret.join(", "); + } + return cell || ""; + }; + $.unformat.date = function (cellval, opts) { + var op = $.jgrid.getRegional(this, 'formatter.date') || {}; + if(opts.formatoptions !== undefined) { + op = $.extend({},op,opts.formatoptions); + } + if(!$.fmatter.isEmpty(cellval)) { + return $.jgrid.parseDate.call(this, op.newformat,cellval,op.srcformat,op); + } + return $.fn.fmatter.defaultFormat(cellval, opts); + }; +//module end +})); diff --git a/webif/plugin/flexview/js/jquery.jqGrid.js b/webif/plugin/flexview/js/jquery.jqGrid.js new file mode 100644 index 0000000..b1e73ab --- /dev/null +++ b/webif/plugin/flexview/js/jquery.jqGrid.js @@ -0,0 +1,15651 @@ +/** +* +* @license Guriddo jqGrid JS - v5.1.0 - 2016-03-30 +* Copyright(c) 2008, Tony Tomov, tony@trirand.com +* +* License: http://guriddo.net/?page_id=103334 +*/ +(function( factory ) { + "use strict"; + if ( typeof define === "function" && define.amd ) { + // AMD. Register as an anonymous module. + define([ + "jquery" + ], factory ); + } else { + // Browser globals + factory( jQuery ); + } +}(function( $ ) { +"use strict"; +//module begin +$.jgrid = $.jgrid || {}; +if(!$.jgrid.hasOwnProperty("defaults")) { + $.jgrid.defaults = {}; +} +$.extend($.jgrid,{ + version : "5.1.0", + htmlDecode : function(value){ + if(value && (value===' ' || value===' ' || (value.length===1 && value.charCodeAt(0)===160))) { return "";} + return !value ? value : String(value).replace(/>/g, ">").replace(/</g, "<").replace(/"/g, '"').replace(/&/g, "&"); + }, + htmlEncode : function (value){ + return !value ? value : String(value).replace(/&/g, "&").replace(/\"/g, """).replace(//g, ">"); + }, + template : function(format){ //jqgformat + var args = $.makeArray(arguments).slice(1), j, al = args.length; + if(format==null) { format = ""; } + return format.replace(/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g, function(m,i){ + if(!isNaN(parseInt(i,10))) { + return args[parseInt(i,10)]; + } + for(j=0; j < al;j++) { + if($.isArray(args[j])) { + var nmarr = args[ j ], + k = nmarr.length; + while(k--) { + if(i===nmarr[k].nm) { + return nmarr[k].v; + } + } + } + } + }); + }, + msie : navigator.appName === 'Microsoft Internet Explorer', + msiever : function () { + var rv = -1; + var ua = navigator.userAgent; + var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); + if (re.exec(ua) != null) { + rv = parseFloat( RegExp.$1 ); + } + return rv; + }, + getCellIndex : function (cell) { + var c = $(cell); + if (c.is('tr')) { return -1; } + c = (!c.is('td') && !c.is('th') ? c.closest("td,th") : c)[0]; + if ($.jgrid.msie) { return $.inArray(c, c.parentNode.cells); } + return c.cellIndex; + }, + stripHtml : function(v) { + v = String(v); + var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi; + if (v) { + v = v.replace(regexp,""); + return (v && v !== ' ' && v !== ' ') ? v.replace(/\"/g,"'") : ""; + } + return v; + }, + stripPref : function (pref, id) { + var obj = $.type( pref ); + if( obj === "string" || obj === "number") { + pref = String(pref); + id = pref !== "" ? String(id).replace(String(pref), "") : id; + } + return id; + }, + parse : function(jsonString) { + var js = jsonString; + if (js.substr(0,9) === "while(1);") { js = js.substr(9); } + if (js.substr(0,2) === "/*") { js = js.substr(2,js.length-4); } + if(!js) { js = "{}"; } + return ($.jgrid.useJSON===true && typeof JSON === 'object' && typeof JSON.parse === 'function') ? + JSON.parse(js) : + eval('(' + js + ')'); + }, + parseDate : function(format, date, newformat, opts) { + var token = /\\.|[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]/g, + timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, + timezoneClip = /[^-+\dA-Z]/g, + msDateRegExp = new RegExp("^\/Date\\((([-+])?[0-9]+)(([-+])([0-9]{2})([0-9]{2}))?\\)\/$"), + msMatch = ((typeof date === 'string') ? date.match(msDateRegExp): null), + pad = function (value, length) { + value = String(value); + length = parseInt(length,10) || 2; + while (value.length < length) { value = '0' + value; } + return value; + }, + ts = {m : 1, d : 1, y : 1970, h : 0, i : 0, s : 0, u:0}, + timestamp=0, dM, k,hl, + h12to24 = function(ampm, h){ + if (ampm === 0){ if (h === 12) { h = 0;} } + else { if (h !== 12) { h += 12; } } + return h; + }, + offset =0; + if(opts === undefined) { + opts = $.jgrid.getRegional(this, "formatter.date");//$.jgrid.formatter.date; + } + // old lang files + if(opts.parseRe === undefined ) { + opts.parseRe = /[#%\\\/:_;.,\t\s-]/; + } + if( opts.masks.hasOwnProperty(format) ) { format = opts.masks[format]; } + if(date && date != null) { + if( !isNaN( date - 0 ) && String(format).toLowerCase() === "u") { + //Unix timestamp + timestamp = new Date( parseFloat(date)*1000 ); + } else if(date.constructor === Date) { + timestamp = date; + // Microsoft date format support + } else if( msMatch !== null ) { + timestamp = new Date(parseInt(msMatch[1], 10)); + if (msMatch[3]) { + offset = Number(msMatch[5]) * 60 + Number(msMatch[6]); + offset *= ((msMatch[4] === '-') ? 1 : -1); + offset -= timestamp.getTimezoneOffset(); + timestamp.setTime(Number(Number(timestamp) + (offset * 60 * 1000))); + } + } else { + //Support ISO8601Long that have Z at the end to indicate UTC timezone + if(opts.srcformat === 'ISO8601Long' && date.charAt(date.length - 1) === 'Z') { + offset -= (new Date()).getTimezoneOffset(); + } + date = String(date).replace(/\T/g,"#").replace(/\t/,"%").split(opts.parseRe); + format = format.replace(/\T/g,"#").replace(/\t/,"%").split(opts.parseRe); + // parsing for month names + for(k=0,hl=format.length;k 11){date[k] = dM+1-12; ts.m = date[k];} + break; + case 'n': + format[k] = 'm'; + break; + case 'j': + format[k] = 'd'; + break; + case 'a': + dM = $.inArray(date[k],opts.AmPm); + if(dM !== -1 && dM < 2 && date[k] === opts.AmPm[dM]){ + date[k] = dM; + ts.h = h12to24(date[k], ts.h); + } + break; + case 'A': + dM = $.inArray(date[k],opts.AmPm); + if(dM !== -1 && dM > 1 && date[k] === opts.AmPm[dM]){ + date[k] = dM-2; + ts.h = h12to24(date[k], ts.h); + } + break; + case 'g': + ts.h = parseInt(date[k], 10); + break; + } + if(date[k] !== undefined) { + ts[format[k].toLowerCase()] = parseInt(date[k],10); + } + } + if(ts.f) {ts.m = ts.f;} + if( ts.m === 0 && ts.y === 0 && ts.d === 0) { + return " " ; + } + ts.m = parseInt(ts.m,10)-1; + var ty = ts.y; + if (ty >= 70 && ty <= 99) {ts.y = 1900+ts.y;} + else if (ty >=0 && ty <=69) {ts.y= 2000+ts.y;} + timestamp = new Date(ts.y, ts.m, ts.d, ts.h, ts.i, ts.s, ts.u); + //Apply offset to show date as local time. + if(offset > 0) { + timestamp.setTime(Number(Number(timestamp) + (offset * 60 * 1000))); + } + } + } else { + timestamp = new Date(ts.y, ts.m, ts.d, ts.h, ts.i, ts.s, ts.u); + } + if(opts.userLocalTime && offset === 0) { + offset -= (new Date()).getTimezoneOffset(); + if( offset > 0 ) { + timestamp.setTime(Number(Number(timestamp) + (offset * 60 * 1000))); + } + } + if( newformat === undefined ) { + return timestamp; + } + if( opts.masks.hasOwnProperty(newformat) ) { + newformat = opts.masks[newformat]; + } else if ( !newformat ) { + newformat = 'Y-m-d'; + } + var + G = timestamp.getHours(), + i = timestamp.getMinutes(), + j = timestamp.getDate(), + n = timestamp.getMonth() + 1, + o = timestamp.getTimezoneOffset(), + s = timestamp.getSeconds(), + u = timestamp.getMilliseconds(), + w = timestamp.getDay(), + Y = timestamp.getFullYear(), + N = (w + 6) % 7 + 1, + z = (new Date(Y, n - 1, j) - new Date(Y, 0, 1)) / 86400000, + flags = { + // Day + d: pad(j), + D: opts.dayNames[w], + j: j, + l: opts.dayNames[w + 7], + N: N, + S: opts.S(j), + //j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th', + w: w, + z: z, + // Week + W: N < 5 ? Math.floor((z + N - 1) / 7) + 1 : Math.floor((z + N - 1) / 7) || ((new Date(Y - 1, 0, 1).getDay() + 6) % 7 < 4 ? 53 : 52), + // Month + F: opts.monthNames[n - 1 + 12], + m: pad(n), + M: opts.monthNames[n - 1], + n: n, + t: '?', + // Year + L: '?', + o: '?', + Y: Y, + y: String(Y).substring(2), + // Time + a: G < 12 ? opts.AmPm[0] : opts.AmPm[1], + A: G < 12 ? opts.AmPm[2] : opts.AmPm[3], + B: '?', + g: G % 12 || 12, + G: G, + h: pad(G % 12 || 12), + H: pad(G), + i: pad(i), + s: pad(s), + u: u, + // Timezone + e: '?', + I: '?', + O: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), + P: '?', + T: (String(timestamp).match(timezone) || [""]).pop().replace(timezoneClip, ""), + Z: '?', + // Full Date/Time + c: '?', + r: '?', + U: Math.floor(timestamp / 1000) + }; + return newformat.replace(token, function ($0) { + return flags.hasOwnProperty($0) ? flags[$0] : $0.substring(1); + }); + }, + jqID : function(sid){ + return String(sid).replace(/[!"#$%&'()*+,.\/:; <=>?@\[\\\]\^`{|}~]/g,"\\$&"); + }, + guid : 1, + uidPref: 'jqg', + randId : function( prefix ) { + return (prefix || $.jgrid.uidPref) + ($.jgrid.guid++); + }, + getAccessor : function(obj, expr) { + var ret,p,prm = [], i; + if( typeof expr === 'function') { return expr(obj); } + ret = obj[expr]; + if(ret===undefined) { + try { + if ( typeof expr === 'string' ) { + prm = expr.split('.'); + } + i = prm.length; + if( i ) { + ret = obj; + while (ret && i--) { + p = prm.shift(); + ret = ret[p]; + } + } + } catch (e) {} + } + return ret; + }, + getXmlData: function (obj, expr, returnObj) { + var ret, m = typeof expr === 'string' ? expr.match(/^(.*)\[(\w+)\]$/) : null; + if (typeof expr === 'function') { return expr(obj); } + if (m && m[2]) { + // m[2] is the attribute selector + // m[1] is an optional element selector + // examples: "[id]", "rows[page]" + return m[1] ? $(m[1], obj).attr(m[2]) : $(obj).attr(m[2]); + } + ret = $(expr, obj); + if (returnObj) { return ret; } + //$(expr, obj).filter(':last'); // we use ':last' to be more compatible with old version of jqGrid + return ret.length > 0 ? $(ret).text() : undefined; + }, + cellWidth : function () { + var $testDiv = $("
"), + testCell = $testDiv.appendTo("body") + .find("td") + .width(); + $testDiv.remove(); + return Math.abs(testCell-5) > 0.1; + }, + isLocalStorage : function () { + try { + return 'localStorage' in window && window.localStorage !== null; + } catch (e) { + return false; + } + }, + getRegional : function(inst, param, def_val) { + var ret; + if(def_val !== undefined) { + return def_val; + } + if(inst.p && inst.p.regional && $.jgrid.regional) { + ret = $.jgrid.getAccessor( $.jgrid.regional[inst.p.regional] || {}, param); + } + if(ret === undefined ) { + ret = $.jgrid.getAccessor( $.jgrid, param); + } + return ret; + }, + isMobile : function() { + try { + if(/Android|webOS|iPhone|iPad|iPod|pocket|psp|kindle|avantgo|blazer|midori|Tablet|Palm|maemo|plucker|phone|BlackBerry|symbian|IEMobile|mobile|ZuneWP7|Windows Phone|Opera Mini/i.test(navigator.userAgent)) { + return true; + } + return false; + } catch(e) { + return false; + } + }, + cell_width : true, + ajaxOptions: {}, + from : function(source){ + // Original Author Hugo Bonacci + // License MIT http://jlinq.codeplex.com/license + var $t = this, + QueryObject=function(d,q){ + if(typeof d==="string"){ + d=$.data(d); + } + var self=this, + _data=d, + _usecase=true, + _trim=false, + _query=q, + _stripNum = /[\$,%]/g, + _lastCommand=null, + _lastField=null, + _orDepth=0, + _negate=false, + _queuedOperator="", + _sorting=[], + _useProperties=true; + if(typeof d==="object"&&d.push) { + if(d.length>0){ + if(typeof d[0]!=="object"){ + _useProperties=false; + }else{ + _useProperties=true; + } + } + }else{ + throw "data provides is not an array"; + } + this._hasData=function(){ + return _data===null?false:_data.length===0?false:true; + }; + this._getStr=function(s){ + var phrase=[]; + if(_trim){ + phrase.push("jQuery.trim("); + } + phrase.push("String("+s+")"); + if(_trim){ + phrase.push(")"); + } + if(!_usecase){ + phrase.push(".toLowerCase()"); + } + return phrase.join(""); + }; + this._strComp=function(val){ + if(typeof val==="string"){ + return".toString()"; + } + return""; + }; + this._group=function(f,u){ + return({field:f.toString(),unique:u,items:[]}); + }; + this._toStr=function(phrase){ + if(_trim){ + phrase=$.trim(phrase); + } + phrase=phrase.toString().replace(/\\/g,'\\\\').replace(/\"/g,'\\"'); + return _usecase ? phrase : phrase.toLowerCase(); + }; + this._funcLoop=function(func){ + var results=[]; + $.each(_data,function(i,v){ + results.push(func(v)); + }); + return results; + }; + this._append=function(s){ + var i; + if(_query===null){ + _query=""; + } else { + _query+=_queuedOperator === "" ? " && " :_queuedOperator; + } + for (i=0;i<_orDepth;i++){ + _query+="("; + } + if(_negate){ + _query+="!"; + } + _query+="("+s+")"; + _negate=false; + _queuedOperator=""; + _orDepth=0; + }; + this._setCommand=function(f,c){ + _lastCommand=f; + _lastField=c; + }; + this._resetNegate=function(){ + _negate=false; + }; + this._repeatCommand=function(f,v){ + if(_lastCommand===null){ + return self; + } + if(f!==null&&v!==null){ + return _lastCommand(f,v); + } + if(_lastField===null){ + return _lastCommand(f); + } + if(!_useProperties){ + return _lastCommand(f); + } + return _lastCommand(_lastField,f); + }; + this._equals=function(a,b){ + return(self._compare(a,b,1)===0); + }; + this._compare=function(a,b,d){ + var toString = Object.prototype.toString; + if( d === undefined) { d = 1; } + if(a===undefined) { a = null; } + if(b===undefined) { b = null; } + if(a===null && b===null){ + return 0; + } + if(a===null&&b!==null){ + return 1; + } + if(a!==null&&b===null){ + return -1; + } + if (toString.call(a) === '[object Date]' && toString.call(b) === '[object Date]') { + if (a < b) { return -d; } + if (a > b) { return d; } + return 0; + } + if(!_usecase && typeof a !== "number" && typeof b !== "number" ) { + a=String(a); + b=String(b); + } + if(ab){return d;} + return 0; + }; + this._performSort=function(){ + if(_sorting.length===0){return;} + _data=self._doSort(_data,0); + }; + this._doSort=function(d,q){ + var by=_sorting[q].by, + dir=_sorting[q].dir, + type = _sorting[q].type, + dfmt = _sorting[q].datefmt, + sfunc = _sorting[q].sfunc; + if(q===_sorting.length-1){ + return self._getOrder(d, by, dir, type, dfmt, sfunc); + } + q++; + var values=self._getGroup(d,by,dir,type,dfmt), results=[], i, j, sorted; + for(i=0;i0; + }; + this.andNot=function(f,v,x){ + _negate=!_negate; + return self.and(f,v,x); + }; + this.orNot=function(f,v,x){ + _negate=!_negate; + return self.or(f,v,x); + }; + this.not=function(f,v,x){ + return self.andNot(f,v,x); + }; + this.and=function(f,v,x){ + _queuedOperator=" && "; + if(f===undefined){ + return self; + } + return self._repeatCommand(f,v,x); + }; + this.or=function(f,v,x){ + _queuedOperator=" || "; + if(f===undefined) { return self; } + return self._repeatCommand(f,v,x); + }; + this.orBegin=function(){ + _orDepth++; + return self; + }; + this.orEnd=function(){ + if (_query !== null){ + _query+=")"; + } + return self; + }; + this.isNot=function(f){ + _negate=!_negate; + return self.is(f); + }; + this.is=function(f){ + self._append('this.'+f); + self._resetNegate(); + return self; + }; + this._compareValues=function(func,f,v,how,t){ + var fld; + if(_useProperties){ + fld='jQuery.jgrid.getAccessor(this,\''+f+'\')'; + }else{ + fld='this'; + } + if(v===undefined) { v = null; } + //var val=v===null?f:v, + var val =v, + swst = t.stype === undefined ? "text" : t.stype; + if(v !== null) { + switch(swst) { + case 'int': + case 'integer': + val = (isNaN(Number(val)) || val==="") ? '0' : val; // To be fixed with more inteligent code + fld = 'parseInt('+fld+',10)'; + val = 'parseInt('+val+',10)'; + break; + case 'float': + case 'number': + case 'numeric': + val = String(val).replace(_stripNum, ''); + val = (isNaN(Number(val)) || val==="") ? '0' : val; // To be fixed with more inteligent code + fld = 'parseFloat('+fld+')'; + val = 'parseFloat('+val+')'; + break; + case 'date': + case 'datetime': + val = String($.jgrid.parseDate.call($t, t.srcfmt || 'Y-m-d',val).getTime()); + fld = 'jQuery.jgrid.parseDate.call(jQuery("#'+$.jgrid.jqID($t.p.id)+'")[0],"'+t.srcfmt+'",'+fld+').getTime()'; + break; + default : + fld=self._getStr(fld); + val=self._getStr('"'+self._toStr(val)+'"'); + } + } + self._append(fld+' '+how+' '+val); + self._setCommand(func,f); + self._resetNegate(); + return self; + }; + this.equals=function(f,v,t){ + return self._compareValues(self.equals,f,v,"==",t); + }; + this.notEquals=function(f,v,t){ + return self._compareValues(self.equals,f,v,"!==",t); + }; + this.isNull = function(f,v,t){ + return self._compareValues(self.equals,f,null,"===",t); + }; + this.greater=function(f,v,t){ + return self._compareValues(self.greater,f,v,">",t); + }; + this.less=function(f,v,t){ + return self._compareValues(self.less,f,v,"<",t); + }; + this.greaterOrEquals=function(f,v,t){ + return self._compareValues(self.greaterOrEquals,f,v,">=",t); + }; + this.lessOrEquals=function(f,v,t){ + return self._compareValues(self.lessOrEquals,f,v,"<=",t); + }; + this.startsWith=function(f,v){ + var val = (v==null) ? f: v, + length=_trim ? $.trim(val.toString()).length : val.toString().length; + if(_useProperties){ + self._append(self._getStr('jQuery.jgrid.getAccessor(this,\''+f+'\')')+'.substr(0,'+length+') == '+self._getStr('"'+self._toStr(v)+'"')); + }else{ + if (v!=null) { length=_trim?$.trim(v.toString()).length:v.toString().length; } + self._append(self._getStr('this')+'.substr(0,'+length+') == '+self._getStr('"'+self._toStr(f)+'"')); + } + self._setCommand(self.startsWith,f); + self._resetNegate(); + return self; + }; + this.endsWith=function(f,v){ + var val = (v==null) ? f: v, + length=_trim ? $.trim(val.toString()).length:val.toString().length; + if(_useProperties){ + self._append(self._getStr('jQuery.jgrid.getAccessor(this,\''+f+'\')')+'.substr('+self._getStr('jQuery.jgrid.getAccessor(this,\''+f+'\')')+'.length-'+length+','+length+') == "'+self._toStr(v)+'"'); + } else { + self._append(self._getStr('this')+'.substr('+self._getStr('this')+'.length-"'+self._toStr(f)+'".length,"'+self._toStr(f)+'".length) == "'+self._toStr(f)+'"'); + } + self._setCommand(self.endsWith,f);self._resetNegate(); + return self; + }; + this.contains=function(f,v){ + if(_useProperties){ + self._append(self._getStr('jQuery.jgrid.getAccessor(this,\''+f+'\')')+'.indexOf("'+self._toStr(v)+'",0) > -1'); + }else{ + self._append(self._getStr('this')+'.indexOf("'+self._toStr(f)+'",0) > -1'); + } + self._setCommand(self.contains,f); + self._resetNegate(); + return self; + }; + this.groupBy=function(by,dir,type, datefmt){ + if(!self._hasData()){ + return null; + } + return self._getGroup(_data,by,dir,type, datefmt); + }; + this.orderBy=function(by,dir,stype, dfmt, sfunc){ + dir = dir == null ? "a" :$.trim(dir.toString().toLowerCase()); + if(stype == null) { stype = "text"; } + if(dfmt == null) { dfmt = "Y-m-d"; } + if(sfunc == null) { sfunc = false; } + if(dir==="desc"||dir==="descending"){dir="d";} + if(dir==="asc"||dir==="ascending"){dir="a";} + _sorting.push({by:by,dir:dir,type:stype, datefmt: dfmt, sfunc: sfunc}); + return self; + }; + return self; + }; + return new QueryObject(source,null); + }, + getMethod: function (name) { + return this.getAccessor($.fn.jqGrid, name); + }, + extend : function(methods) { + $.extend($.fn.jqGrid,methods); + if (!this.no_legacy_api) { + $.fn.extend(methods); + } + }, + clearBeforeUnload : function( jqGridId ) { + var $t = $("#"+$.jgrid.jqID( jqGridId ))[0], grid; + if(!$t.grid) { return;} + grid = $t.grid; + if ($.isFunction(grid.emptyRows)) { + grid.emptyRows.call($t, true, true); // this work quick enough and reduce the size of memory leaks if we have someone + } + + $(document).unbind("mouseup.jqGrid" + $t.p.id ); + $(grid.hDiv).unbind("mousemove"); // TODO add namespace + $($t).unbind(); + var i, l = grid.headers.length, + removevents = ['formatCol','sortData','updatepager','refreshIndex','setHeadCheckBox','constructTr','formatter','addXmlData','addJSONData','grid','p']; + for (i = 0; i < l; i++) { + grid.headers[i].el = null; + } + + for( i in grid) { + if( grid.hasOwnProperty(i)) { + grid[i] = null; + } + } + // experimental + for( i in $t.p) { + if($t.p.hasOwnProperty(i)) { + $t.p[i] = $.isArray($t.p[i]) ? [] : null; + } + } + l = removevents.length; + for(i = 0; i < l; i++) { + if($t.hasOwnProperty(removevents[i])) { + $t[removevents[i]] = null; + delete($t[removevents[i]]); + } + } + }, + gridUnload : function ( jqGridId ) { + if(!jqGridId) { return; } + jqGridId = $.trim(jqGridId); + if(jqGridId.indexOf("#") === 0) { + jqGridId = jqGridId.substring(1); + } + + var $t = $("#"+ $.jgrid.jqID(jqGridId))[0]; + if ( !$t.grid ) {return;} + var defgrid = {id: $($t).attr('id'),cl: $($t).attr('class')}; + if ($t.p.pager) { + $($t.p.pager).unbind().empty().removeClass("ui-state-default ui-jqgrid-pager ui-corner-bottom"); + } + var newtable = document.createElement('table'); + newtable.className = defgrid.cl; + var gid = $.jgrid.jqID($t.id); + $(newtable).removeClass("ui-jqgrid-btable ui-common-table").insertBefore("#gbox_"+gid); + if( $($t.p.pager).parents("#gbox_"+gid).length === 1 ) { + $($t.p.pager).insertBefore("#gbox_"+gid); + } + $.jgrid.clearBeforeUnload( jqGridId ); + $("#gbox_"+gid).remove(); + $(newtable).attr({id:defgrid.id}); + $("#alertmod_"+$.jgrid.jqID(jqGridId)).remove(); + }, + gridDestroy : function ( jqGridId ) { + if(!jqGridId) { return; } + jqGridId = $.trim(jqGridId); + if(jqGridId.indexOf("#") === 0) { + jqGridId = jqGridId.substring(1); + } + var $t = $("#"+ $.jgrid.jqID(jqGridId))[0]; + if ( !$t.grid ) {return;} + if ( $t.p.pager ) { // if not part of grid + $($t.p.pager).remove(); + } + try { + $.jgrid.clearBeforeUnload( jqGridId ); + $("#gbox_"+$.jgrid.jqID(jqGridId)).remove(); + } catch (_) {} + }, + styleUI : { + jQueryUI : { + common : { + disabled: "ui-state-disabled", + highlight : "ui-state-highlight", + hover : "ui-state-hover", + cornerall: "ui-corner-all", + cornertop: "ui-corner-top", + cornerbottom : "ui-corner-bottom", + hidden : "ui-helper-hidden", + icon_base : "ui-icon", + overlay : "ui-widget-overlay", + active : "ui-state-active", + error : "ui-state-error", + button : "ui-state-default ui-corner-all", + content : "ui-widget-content" + }, + base : { + entrieBox : "ui-widget ui-widget-content ui-corner-all", // entrie div incl everthing + viewBox : "", // view diw + headerTable : "", + headerBox : "ui-state-default", + rowTable : "", + rowBox : "ui-widget-content", + footerTable : "", + footerBox : "ui-widget-content", + headerDiv : "ui-state-default", + gridtitleBox : "ui-widget-header ui-corner-top ui-helper-clearfix", + customtoolbarBox : "ui-state-default", + //overlayBox: "ui-widget-overlay", + loadingBox : "ui-state-default ui-state-active", + rownumBox : "ui-state-default", + scrollBox : "ui-widget-content", + multiBox : "cbox", + pagerBox : "ui-state-default ui-corner-bottom", + pagerTable : "", + toppagerBox : "ui-state-default", + pgInput : "ui-corner-all", + pgSelectBox : "ui-widget-content ui-corner-all", + pgButtonBox : "ui-corner-all", + icon_first : "ui-icon-seek-first", + icon_prev : "ui-icon-seek-prev", + icon_next: "ui-icon-seek-next", + icon_end: "ui-icon-seek-end", + icon_asc : "ui-icon-triangle-1-n", + icon_desc : "ui-icon-triangle-1-s", + icon_caption_open : "ui-icon-circle-triangle-n", + icon_caption_close : "ui-icon-circle-triangle-s" + }, + modal : { + modal : "ui-widget ui-widget-content ui-corner-all ui-dialog", + header : "ui-widget-header ui-corner-all ui-helper-clearfix", + content :"ui-widget-content", + resizable : "ui-resizable-handle ui-resizable-se", + icon_close : "ui-icon-closethick", + icon_resizable : "ui-icon-gripsmall-diagonal-se" + }, + celledit : { + inputClass : "ui-widget-content ui-corner-all" + }, + inlinedit : { + inputClass : "ui-widget-content ui-corner-all", + icon_edit_nav : "ui-icon-pencil", + icon_add_nav : "ui-icon-plus", + icon_save_nav : "ui-icon-disk", + icon_cancel_nav : "ui-icon-cancel" + }, + formedit : { + inputClass : "ui-widget-content ui-corner-all", + icon_prev : "ui-icon-triangle-1-w", + icon_next : "ui-icon-triangle-1-e", + icon_save : "ui-icon-disk", + icon_close : "ui-icon-close", + icon_del : "ui-icon-scissors", + icon_cancel : "ui-icon-cancel" + }, + navigator : { + icon_edit_nav : "ui-icon-pencil", + icon_add_nav : "ui-icon-plus", + icon_del_nav : "ui-icon-trash", + icon_search_nav : "ui-icon-search", + icon_refresh_nav : "ui-icon-refresh", + icon_view_nav : "ui-icon-document", + icon_newbutton_nav : "ui-icon-newwin" + }, + grouping : { + icon_plus : 'ui-icon-circlesmall-plus', + icon_minus : 'ui-icon-circlesmall-minus' + }, + filter : { + table_widget : 'ui-widget ui-widget-content', + srSelect : 'ui-widget-content ui-corner-all', + srInput : 'ui-widget-content ui-corner-all', + menu_widget : 'ui-widget ui-widget-content ui-corner-all', + icon_search : 'ui-icon-search', + icon_reset : 'ui-icon-arrowreturnthick-1-w', + icon_query :'ui-icon-comment' + }, + subgrid : { + icon_plus : 'ui-icon-plus', + icon_minus : 'ui-icon-minus', + icon_open : 'ui-icon-carat-1-sw' + }, + treegrid : { + icon_plus : 'ui-icon-triangle-1-', + icon_minus : 'ui-icon-triangle-1-s', + icon_leaf : 'ui-icon-radio-off' + }, + fmatter : { + icon_edit : "ui-icon-pencil", + icon_add : "ui-icon-plus", + icon_save : "ui-icon-disk", + icon_cancel : "ui-icon-cancel", + icon_del : "ui-icon-trash" + }, + colmenu : { + menu_widget : 'ui-widget ui-widget-content ui-corner-all', + input_checkbox : "ui-widget ui-widget-content", + filter_select: "ui-widget-content ui-corner-all", + filter_input : "ui-widget-content ui-corner-all", + icon_menu : "ui-icon-comment", + icon_sort_asc : "ui-icon-arrow-1-n", + icon_sort_desc : "ui-icon-arrow-1-s", + icon_columns : "ui-icon-extlink", + icon_filter : "ui-icon-calculator", + icon_group : "ui-icon-grip-solid-horizontal", + icon_freeze : "ui-icon-grip-solid-vertical", + icon_move: "ui-icon-arrow-4" + } + }, + Bootstrap : { + common : { + disabled: "ui-disabled", + highlight : "success", + hover : "active", + cornerall: "", + cornertop: "", + cornerbottom : "", + hidden : "", + icon_base : "glyphicon", + overlay: "ui-overlay", + active : "active", + error : "bg-danger", + button : "btn btn-default", + content : "" + }, + base : { + entrieBox : "", + viewBox : "table-responsive", + headerTable : "table table-bordered", + headerBox : "", + rowTable : "table table-bordered", + rowBox : "", + footerTable : "table table-bordered", + footerBox : "", + headerDiv : "", + gridtitleBox : "", + customtoolbarBox : "", + //overlayBox: "ui-overlay", + loadingBox : "row", + rownumBox : "active", + scrollBox : "", + multiBox : "checkbox", + pagerBox : "", + pagerTable : "table", + toppagerBox : "", + pgInput : "form-control", + pgSelectBox : "form-control", + pgButtonBox : "", + icon_first : "glyphicon-step-backward", + icon_prev : "glyphicon-backward", + icon_next: "glyphicon-forward", + icon_end: "glyphicon-step-forward", + icon_asc : "glyphicon-triangle-top", + icon_desc : "glyphicon-triangle-bottom", + icon_caption_open : "glyphicon-circle-arrow-up", + icon_caption_close : "glyphicon-circle-arrow-down" + }, + modal : { + modal : "modal-content", + header : "modal-header", + title : "modal-title", + content :"modal-body", + resizable : "ui-resizable-handle ui-resizable-se", + icon_close : "glyphicon-remove-circle", + icon_resizable : "glyphicon-import" + }, + celledit : { + inputClass : 'form-control' + }, + inlinedit : { + inputClass : 'form-control', + icon_edit_nav : "glyphicon-edit", + icon_add_nav : "glyphicon-plus", + icon_save_nav : "glyphicon-save", + icon_cancel_nav : "glyphicon-remove-circle" + }, + formedit : { + inputClass : "form-control", + icon_prev : "glyphicon-step-backward", + icon_next : "glyphicon-step-forward", + icon_save : "glyphicon-save", + icon_close : "glyphicon-remove-circle", + icon_del : "glyphicon-trash", + icon_cancel : "glyphicon-remove-circle" + }, + navigator : { + icon_edit_nav : "glyphicon-edit", + icon_add_nav : "glyphicon-plus", + icon_del_nav : "glyphicon-trash", + icon_search_nav : "glyphicon-search", + icon_refresh_nav : "glyphicon-refresh", + icon_view_nav : "glyphicon-info-sign", + icon_newbutton_nav : "glyphicon-new-window" + }, + grouping : { + icon_plus : 'glyphicon-triangle-right', + icon_minus : 'glyphicon-triangle-bottom' + }, + filter : { + table_widget : 'table table-condensed', + srSelect : 'form-control', + srInput : 'form-control', + menu_widget : '', + icon_search : 'glyphicon-search', + icon_reset : 'glyphicon-refresh', + icon_query :'glyphicon-comment' + }, + subgrid : { + icon_plus : 'glyphicon-triangle-right', + icon_minus : 'glyphicon-triangle-bottom', + icon_open : 'glyphicon-indent-left' + }, + treegrid : { + icon_plus : 'glyphicon-triangle-right', + icon_minus : 'glyphicon-triangle-bottom', + icon_leaf : 'glyphicon-unchecked' + }, + fmatter : { + icon_edit : "glyphicon-edit", + icon_add : "glyphicon-plus", + icon_save : "glyphicon-save", + icon_cancel : "glyphicon-remove-circle", + icon_del : "glyphicon-trash" + }, + colmenu : { + menu_widget : '', + input_checkbox : "", + filter_select: "form-control", + filter_input : "form-control", + icon_menu : "glyphicon-menu-hamburger", + icon_sort_asc : "glyphicon-sort-by-alphabet", + icon_sort_desc : "glyphicon-sort-by-alphabet-alt", + icon_columns : "glyphicon-list-alt", + icon_filter : "glyphicon-filter", + icon_group : "glyphicon-align-left", + icon_freeze : "glyphicon-object-align-horizontal", + icon_move: "glyphicon-move" + } + } + } +}); + +$.fn.jqGrid = function( pin ) { + if (typeof pin === 'string') { + var fn = $.jgrid.getMethod(pin); + if (!fn) { + throw ("jqGrid - No such method: " + pin); + } + var args = $.makeArray(arguments).slice(1); + return fn.apply(this,args); + } + return this.each( function() { + if(this.grid) {return;} + var localData; + if (pin != null && pin.data !== undefined) { + localData = pin.data; + pin.data = []; + } + + var p = $.extend(true,{ + url: "", + height: 150, + page: 1, + rowNum: 20, + rowTotal : null, + records: 0, + pager: "", + pgbuttons: true, + pginput: true, + colModel: [], + rowList: [], + colNames: [], + sortorder: "asc", + sortname: "", + datatype: "xml", + mtype: "GET", + altRows: false, + selarrrow: [], + savedRow: [], + shrinkToFit: true, + xmlReader: {}, + jsonReader: {}, + subGrid: false, + subGridModel :[], + reccount: 0, + lastpage: 0, + lastsort: 0, + selrow: null, + beforeSelectRow: null, + onSelectRow: null, + onSortCol: null, + ondblClickRow: null, + onRightClickRow: null, + onPaging: null, + onSelectAll: null, + onInitGrid : null, + loadComplete: null, + gridComplete: null, + loadError: null, + loadBeforeSend: null, + afterInsertRow: null, + beforeRequest: null, + beforeProcessing : null, + onHeaderClick: null, + viewrecords: false, + loadonce: false, + multiselect: false, + multikey: false, + editurl: null, + search: false, + caption: "", + hidegrid: true, + hiddengrid: false, + postData: {}, + userData: {}, + treeGrid : false, + treeGridModel : 'nested', + treeReader : {}, + treeANode : -1, + ExpandColumn: null, + tree_root_level : 0, + prmNames: { + page:"page", + rows:"rows", + sort: "sidx", + order: "sord", + search:"_search", + nd:"nd", + id:"id", + oper:"oper", + editoper:"edit", + addoper:"add", + deloper:"del", + subgridid:"id", + npage: null, + totalrows:"totalrows" + }, + forceFit : false, + gridstate : "visible", + cellEdit: false, + cellsubmit: "remote", + nv:0, + loadui: "enable", + toolbar: [false,""], + scroll: false, + multiboxonly : false, + deselectAfterSort : true, + scrollrows : false, + autowidth: false, + scrollOffset : 18, + cellLayout: 5, + subGridWidth: 20, + multiselectWidth: 30, + gridview: true, + rownumWidth: 35, + rownumbers : false, + pagerpos: 'center', + recordpos: 'right', + footerrow : false, + userDataOnFooter : false, + hoverrows : true, + altclass : 'ui-priority-secondary', + viewsortcols : [false,'vertical',true], + resizeclass : '', + autoencode : false, + remapColumns : [], + ajaxGridOptions :{}, + direction : "ltr", + toppager: false, + headertitles: false, + scrollTimeout: 40, + data : [], + _index : {}, + grouping : false, + groupingView : { + groupField:[], + groupOrder:[], + groupText:[], + groupColumnShow:[], + groupSummary:[], + showSummaryOnHide: false, + sortitems:[], + sortnames:[], + summary:[], + summaryval:[], + plusicon: '', + minusicon: '', + displayField: [], + groupSummaryPos:[], + formatDisplayField : [], + _locgr : false + }, + ignoreCase : true, + cmTemplate : {}, + idPrefix : "", + multiSort : false, + minColWidth : 33, + scrollPopUp : false, + scrollTopOffset: 0, // pixel + scrollLeftOffset : "100%", //percent + storeNavOptions: false, + regional : "en", + styleUI : "jQueryUI", + responsive : false, + restoreCellonFail : true, + colFilters : {}, + colMenu : false + }, $.jgrid.defaults , pin ); + if (localData !== undefined) { + p.data = localData; + pin.data = localData; + } + var ts= this, grid={ + headers:[], + cols:[], + footers: [], + dragStart: function(i,x,y) { + var gridLeftPos = $(this.bDiv).offset().left; + this.resizing = { idx: i, startX: x.pageX, sOL : x.pageX - gridLeftPos }; + this.hDiv.style.cursor = "col-resize"; + this.curGbox = $("#rs_m"+$.jgrid.jqID(p.id),"#gbox_"+$.jgrid.jqID(p.id)); + this.curGbox.css({display:"block",left:x.pageX-gridLeftPos,top:y[1],height:y[2]}); + $(ts).triggerHandler("jqGridResizeStart", [x, i]); + if($.isFunction(p.resizeStart)) { p.resizeStart.call(ts,x,i); } + document.onselectstart=function(){return false;}; + }, + dragMove: function(x) { + if(this.resizing) { + var diff = x.pageX-this.resizing.startX, + h = this.headers[this.resizing.idx], + newWidth = p.direction === "ltr" ? h.width + diff : h.width - diff, hn, nWn; + if(newWidth > 33) { + this.curGbox.css({left:this.resizing.sOL+diff}); + if(p.forceFit===true ){ + hn = this.headers[this.resizing.idx+p.nv]; + nWn = p.direction === "ltr" ? hn.width - diff : hn.width + diff; + if(nWn > p.minColWidth ) { + h.newWidth = newWidth; + hn.newWidth = nWn; + } + } else { + this.newWidth = p.direction === "ltr" ? p.tblwidth+diff : p.tblwidth-diff; + h.newWidth = newWidth; + } + } + } + }, + dragEnd: function( events ) { + this.hDiv.style.cursor = "default"; + if(this.resizing) { + var idx = this.resizing.idx, + nw = this.headers[idx].newWidth || this.headers[idx].width; + nw = parseInt(nw,10); + this.resizing = false; + $("#rs_m"+$.jgrid.jqID(p.id)).css("display","none"); + p.colModel[idx].width = nw; + this.headers[idx].width = nw; + this.headers[idx].el.style.width = nw + "px"; + this.cols[idx].style.width = nw+"px"; + if(this.footers.length>0) {this.footers[idx].style.width = nw+"px";} + if(p.forceFit===true){ + nw = this.headers[idx+p.nv].newWidth || this.headers[idx+p.nv].width; + this.headers[idx+p.nv].width = nw; + this.headers[idx+p.nv].el.style.width = nw + "px"; + this.cols[idx+p.nv].style.width = nw+"px"; + if(this.footers.length>0) {this.footers[idx+p.nv].style.width = nw+"px";} + p.colModel[idx+p.nv].width = nw; + } else { + p.tblwidth = this.newWidth || p.tblwidth; + $('table:first',this.bDiv).css("width",p.tblwidth+"px"); + $('table:first',this.hDiv).css("width",p.tblwidth+"px"); + this.hDiv.scrollLeft = this.bDiv.scrollLeft; + if(p.footerrow) { + $('table:first',this.sDiv).css("width",p.tblwidth+"px"); + this.sDiv.scrollLeft = this.bDiv.scrollLeft; + } + } + if(events) { + $(ts).triggerHandler("jqGridResizeStop", [nw, idx]); + if($.isFunction(p.resizeStop)) { p.resizeStop.call(ts,nw,idx); } + } + } + this.curGbox = null; + document.onselectstart=function(){return true;}; + }, + populateVisible: function() { + if (grid.timer) { clearTimeout(grid.timer); } + grid.timer = null; + var dh = $(grid.bDiv).height(); + if (!dh) { return; } + var table = $("table:first", grid.bDiv); + var rows, rh; + if(table[0].rows.length) { + try { + rows = table[0].rows[1]; + rh = rows ? $(rows).outerHeight() || grid.prevRowHeight : grid.prevRowHeight; + } catch (pv) { + rh = grid.prevRowHeight; + } + } + if (!rh) { return; } + grid.prevRowHeight = rh; + var rn = p.rowNum; + var scrollTop = grid.scrollTop = grid.bDiv.scrollTop; + var ttop = Math.round(table.position().top) - scrollTop; + var tbot = ttop + table.height(); + var div = rh * rn; + var page, npage, empty; + if ( tbot < dh && ttop <= 0 && + (p.lastpage===undefined||(parseInt((tbot + scrollTop + div - 1) / div,10) || 0) <= p.lastpage)) + { + npage = parseInt((dh - tbot + div - 1) / div,10) || 1; + if (tbot >= 0 || npage < 2 || p.scroll === true) { + page = ( Math.round((tbot + scrollTop) / div) || 0) + 1; + ttop = -1; + } else { + ttop = 1; + } + } + if (ttop > 0) { + page = ( parseInt(scrollTop / div,10) || 0 ) + 1; + npage = (parseInt((scrollTop + dh) / div,10) || 0) + 2 - page; + empty = true; + } + if (npage) { + if (p.lastpage && (page > p.lastpage || p.lastpage===1 || (page === p.page && page===p.lastpage)) ) { + return; + } + if (grid.hDiv.loading) { + grid.timer = setTimeout(grid.populateVisible, p.scrollTimeout); + } else { + p.page = page; + if (empty) { + grid.selectionPreserver(table[0]); + grid.emptyRows.call(table[0], false, false); + } + grid.populate(npage); + } + if(p.scrollPopUp && p.lastpage != null) { + $("#scroll_g"+p.id).show().html( $.jgrid.template( $.jgrid.getRegional(ts, "defaults.pgtext", p.pgtext) , p.page, p.lastpage)).css({ "top": p.scrollTopOffset+scrollTop*((parseInt(p.height,10) - 45)/ (parseInt(rh,10)*parseInt(p.records,10))) +"px", "left" : p.scrollLeftOffset}); + $(this).mouseout(function(){ + $("#scroll_g"+p.id).hide(); + }); + } + } + }, + scrollGrid: function( e ) { + if(p.scroll) { + var scrollTop = grid.bDiv.scrollTop; + if(grid.scrollTop === undefined) { grid.scrollTop = 0; } + if (scrollTop !== grid.scrollTop) { + grid.scrollTop = scrollTop; + if (grid.timer) { clearTimeout(grid.timer); } + grid.timer = setTimeout(grid.populateVisible, p.scrollTimeout); + } + } + grid.hDiv.scrollLeft = grid.bDiv.scrollLeft; + if(p.footerrow) { + grid.sDiv.scrollLeft = grid.bDiv.scrollLeft; + } + if(p.frozenColumns) { + $(grid.fbDiv).scrollTop( grid.bDiv.scrollTop ); + } + if( e ) { e.stopPropagation(); } + }, + selectionPreserver : function(ts) { + var p = ts.p, + sr = p.selrow, sra = p.selarrrow ? $.makeArray(p.selarrrow) : null, + left = ts.grid.bDiv.scrollLeft, + restoreSelection = function() { + var i; + p.selrow = null; + p.selarrrow = []; + if(p.multiselect && sra && sra.length>0) { + for(i=0;i"); + ts.p.direction = $.trim(ts.p.direction.toLowerCase()); + ts.p._ald = false; + if($.inArray(ts.p.direction,["ltr","rtl"]) === -1) { ts.p.direction = "ltr"; } + dir = ts.p.direction; + + $(gv).insertBefore(this); + $(this).appendTo(gv); + + var eg = $("
"); + $(eg).attr({"id" : "gbox_"+this.id,"dir":dir}).insertBefore(gv); + $(gv).attr("id","gview_"+this.id).appendTo(eg); + $("
").insertBefore(gv); + $("
"+$.jgrid.getRegional(ts, "defaults.loadtext", this.p.loadtext)+"
").insertBefore(gv); + + $(this).attr({role:"presentation","aria-multiselectable":!!this.p.multiselect,"aria-labelledby":"gbox_"+this.id}); + + var sortkeys = ["shiftKey","altKey","ctrlKey"], + intNum = function(val,defval) { + val = parseInt(val,10); + if (isNaN(val)) { return defval || 0;} + return val; + }, + formatCol = function (pos, rowInd, tv, rawObject, rowId, rdata){ + var cm = ts.p.colModel[pos], cellAttrFunc, + ral = cm.align, result="style=\"", clas = cm.classes, nm = cm.name, celp, acp=[]; + if(ral) { result += "text-align:"+ral+";"; } + if(cm.hidden===true) { result += "display:none;"; } + if(rowInd===0) { + result += "width: "+grid.headers[pos].width+"px;"; + } else if ($.isFunction(cm.cellattr) || (typeof cm.cellattr === "string" && $.jgrid.cellattr != null && $.isFunction($.jgrid.cellattr[cm.cellattr]))) { + cellAttrFunc = $.isFunction(cm.cellattr) ? cm.cellattr : $.jgrid.cellattr[cm.cellattr]; + celp = cellAttrFunc.call(ts, rowId, tv, rawObject, cm, rdata); + if(celp && typeof celp === "string") { + celp = celp.replace(/style/i,'style').replace(/title/i,'title'); + if(celp.indexOf('title') > -1) { cm.title=false;} + if(celp.indexOf('class') > -1) { clas = undefined;} + acp = celp.replace(/\-style/g,'-sti').split(/style/); + if(acp.length === 2 ) { + acp[1] = $.trim(acp[1].replace(/\-sti/g,'-style').replace("=","")); + if(acp[1].indexOf("'") === 0 || acp[1].indexOf('"') === 0) { + acp[1] = acp[1].substring(1); + } + result += acp[1].replace(/'/gi,'"'); + } else { + result += "\""; + } + } + } + if(!acp.length) { acp[0] = ""; result += "\"";} + result += (clas !== undefined ? (" class=\""+clas+"\"") :"") + ((cm.title && tv) ? (" title=\""+$.jgrid.stripHtml(tv)+"\"") :""); + result += " aria-describedby=\""+ts.p.id+"_"+nm+"\""; + return result + acp[0]; + }, + cellVal = function (val) { + return val == null || val === "" ? " " : (ts.p.autoencode ? $.jgrid.htmlEncode(val) : String(val)); + }, + formatter = function (rowId, cellval , colpos, rwdat, _act){ + var cm = ts.p.colModel[colpos],v; + if(cm.formatter !== undefined) { + rowId = String(ts.p.idPrefix) !== "" ? $.jgrid.stripPref(ts.p.idPrefix, rowId) : rowId; + var opts= {rowId: rowId, colModel:cm, gid:ts.p.id, pos:colpos, styleUI: ts.p.styleUI }; + if($.isFunction( cm.formatter ) ) { + v = cm.formatter.call(ts,cellval,opts,rwdat,_act); + } else if($.fmatter){ + v = $.fn.fmatter.call(ts,cm.formatter,cellval,opts,rwdat,_act); + } else { + v = cellVal(cellval); + } + } else { + v = cellVal(cellval); + } + return v; + }, + addCell = function(rowId,cell,pos,irow, srvr, rdata) { + var v,prp; + v = formatter(rowId,cell,pos,srvr,'add'); + prp = formatCol( pos,irow, v, srvr, rowId, rdata); + return ""+v+""; + }, + addMulti = function(rowid, pos, irow, checked, uiclass){ + var v = "", + prp = formatCol( pos,irow,'',null, rowid, true); + return ""+v+""; + }, + addRowNum = function (pos, irow, pG, rN, uiclass ) { + var v = (parseInt(pG,10)-1)*parseInt(rN,10)+1+irow, + prp = formatCol( pos,irow,v, null, irow, true); + return ""+v+""; + }, + reader = function (datatype) { + var field, f=[], j=0, i; + for(i =0; i 0 ? this.rows[0] : null; + $(this.firstChild).empty().append(firstrow); + } + if (scroll && this.p.scroll) { + $(this.grid.bDiv.firstChild).css({height: "auto"}); + $(this.grid.bDiv.firstChild.firstChild).css({height: "0px", display: "none"}); + if (this.grid.bDiv.scrollTop !== 0) { + this.grid.bDiv.scrollTop = 0; + } + } + if(locdata === true && this.p.treeGrid && !this.p.loadonce ) { + this.p.data = []; this.p._index = {}; + } + }, + normalizeData = function() { + var p = ts.p, data = p.data, dataLength = data.length, i, j, cur, idn, idr, ccur, v, rd, + localReader = p.localReader, + colModel = p.colModel, + cellName = localReader.cell, + iOffset = (p.multiselect === true ? 1 : 0) + (p.subGrid === true ? 1 : 0) + (p.rownumbers === true ? 1 : 0), + br = p.scroll ? $.jgrid.randId() : 1, + arrayReader, objectReader, rowReader; + + if (p.datatype !== "local" || localReader.repeatitems !== true) { + return; // nothing to do + } + + arrayReader = orderedCols(iOffset); + objectReader = reader("local"); + // read ALL input items and convert items to be read by + // $.jgrid.getAccessor with column name as the second parameter + idn = p.keyIndex === false ? + ($.isFunction(localReader.id) ? localReader.id.call(ts, data) : localReader.id) : + p.keyIndex; + for (i = 0; i < dataLength; i++) { + cur = data[i]; + // read id in the same way like addJSONData do + // probably it would be better to start with "if (cellName) {...}" + // but the goal of the current implementation was just have THE SAME + // id values like in addJSONData ... + idr = $.jgrid.getAccessor(cur, idn); + if (idr === undefined) { + if (typeof idn === "number" && colModel[idn + iOffset] != null) { + // reread id by name + idr = $.jgrid.getAccessor(cur, colModel[idn + iOffset].name); + } + if (idr === undefined) { + idr = br + i; + if (cellName) { + ccur = $.jgrid.getAccessor(cur, cellName) || cur; + idr = ccur != null && ccur[idn] !== undefined ? ccur[idn] : idr; + ccur = null; + } + } + } + rd = { }; + rd[localReader.id] = idr; + if (cellName) { + cur = $.jgrid.getAccessor(cur, cellName) || cur; + } + rowReader = $.isArray(cur) ? arrayReader : objectReader; + for (j = 0; j < rowReader.length; j++) { + v = $.jgrid.getAccessor(cur, rowReader[j]); + rd[colModel[j + iOffset].name] = v; + } + $.extend(true, data[i], rd); + } + }, + refreshIndex = function() { + var datalen = ts.p.data.length, idname, i, val; + + if(ts.p.keyName === false || ts.p.loadonce === true) { + idname = ts.p.localReader.id; + } else { + idname = ts.p.keyName; + } + ts.p._index = []; + for(i =0;i < datalen; i++) { + val = $.jgrid.getAccessor(ts.p.data[i],idname); + if (val === undefined) { val=String(i+1); } + ts.p._index[val] = i; + } + }, + constructTr = function(id, hide, classes, rd, cur ) { + var tabindex = '-1', restAttr = '', attrName, style = hide ? 'display:none;' : '', + //classes = getstyle(stylemodule, 'rowBox', true) + ts.p.direction + (altClass ? ' ' + altClass : '') + (selected ? ' ' + highlight : ''), + rowAttrObj = $(ts).triggerHandler("jqGridRowAttr", [rd, cur, id]); + if( typeof rowAttrObj !== "object" ) { + rowAttrObj = $.isFunction(ts.p.rowattr) ? ts.p.rowattr.call(ts, rd, cur, id) : + (typeof ts.p.rowattr === "string" && $.jgrid.rowattr != null && $.isFunction($.jgrid.rowattr[ts.p.rowattr]) ? + $.jgrid.rowattr[ts.p.rowattr].call(ts, rd, cur, id) : {}); + } + if(!$.isEmptyObject( rowAttrObj )) { + if (rowAttrObj.hasOwnProperty("id")) { + id = rowAttrObj.id; + delete rowAttrObj.id; + } + if (rowAttrObj.hasOwnProperty("tabindex")) { + tabindex = rowAttrObj.tabindex; + delete rowAttrObj.tabindex; + } + if (rowAttrObj.hasOwnProperty("style")) { + style += rowAttrObj.style; + delete rowAttrObj.style; + } + if (rowAttrObj.hasOwnProperty("class")) { + classes += ' ' + rowAttrObj['class']; + delete rowAttrObj['class']; + } + // dot't allow to change role attribute + try { delete rowAttrObj.role; } catch(ra){} + for (attrName in rowAttrObj) { + if (rowAttrObj.hasOwnProperty(attrName)) { + restAttr += ' ' + attrName + '=' + rowAttrObj[attrName]; + } + } + } + return ''; + }, + addXmlData = function (xml, rcnt, more, adjust) { + var startReq = new Date(), + locdata = (ts.p.datatype !== "local" && ts.p.loadonce) || ts.p.datatype === "xmlstring", + xmlid = "_id_", xmlRd = ts.p.xmlReader, + frd = ts.p.datatype === "local" ? "local" : "xml"; + if(locdata) { + ts.p.data = []; + ts.p._index = {}; + ts.p.localReader.id = xmlid; + } + ts.p.reccount = 0; + if($.isXMLDoc(xml)) { + if(ts.p.treeANode===-1 && !ts.p.scroll) { + emptyRows.call(ts, false, true); + rcnt=1; + } else { rcnt = rcnt > 1 ? rcnt :1; } + } else { return; } + var self= $(ts), i,fpos,ir=0,v,gi=ts.p.multiselect===true?1:0,si=0,addSubGridCell,ni=ts.p.rownumbers===true?1:0,idn, getId,f=[],F,rd ={}, + xmlr,rid, rowData=[], cn=(ts.p.altRows === true) ? ts.p.altclass:"", + cn1 = getstyle(stylemodule, 'rowBox', true, 'jqgrow ui-row-'+ ts.p.direction), classes; + if(ts.p.subGrid===true) { + si = 1; + addSubGridCell = $.jgrid.getMethod("addSubGridCell"); + } + if(!xmlRd.repeatitems) {f = reader(frd);} + if( ts.p.keyName===false) { + idn = $.isFunction( xmlRd.id ) ? xmlRd.id.call(ts, xml) : xmlRd.id; + } else { + idn = ts.p.keyName; + } + if( String(idn).indexOf("[") === -1 ) { + if (f.length) { + getId = function( trow, k) {return $(idn,trow).text() || k;}; + } else { + getId = function( trow, k) {return $(xmlRd.cell,trow).eq(idn).text() || k;}; + } + } + else { + getId = function( trow, k) {return trow.getAttribute(idn.replace(/[\[\]]/g,"")) || k;}; + } + ts.p.userData = {}; + ts.p.page = intNum($.jgrid.getXmlData(xml, xmlRd.page), ts.p.page); + ts.p.lastpage = intNum($.jgrid.getXmlData(xml, xmlRd.total), 1); + ts.p.records = intNum($.jgrid.getXmlData(xml, xmlRd.records)); + if($.isFunction(xmlRd.userdata)) { + ts.p.userData = xmlRd.userdata.call(ts, xml) || {}; + } else { + $.jgrid.getXmlData(xml, xmlRd.userdata, true).each(function() {ts.p.userData[this.getAttribute("name")]= $(this).text();}); + } + var gxml = $.jgrid.getXmlData( xml, xmlRd.root, true); + gxml = $.jgrid.getXmlData( gxml, xmlRd.row, true); + if (!gxml) { gxml = []; } + var gl = gxml.length, j=0, grpdata=[], rn = parseInt(ts.p.rowNum,10), br=ts.p.scroll?$.jgrid.randId():1, altr, + tablebody = $("#"+$.jgrid.jqID(ts.p.id)+" tbody:first"); + if (gl > 0 && ts.p.page <= 0) { ts.p.page = 1; } + if(gxml && gl){ + if (adjust) { rn *= adjust+1; } + var afterInsRow = $.isFunction(ts.p.afterInsertRow), hiderow=false, groupingPrepare, + rnc = ni ? getstyle(stylemodule, 'rownumBox', false, 'jqgrid-rownum') :"", + mlc = gi ? getstyle(stylemodule, 'multiBox', false, 'cbox'):""; + if(ts.p.grouping) { + hiderow = ts.p.groupingView.groupCollapse === true; + groupingPrepare = $.jgrid.getMethod("groupingPrepare"); + } + while (j"); + if(ts.p.grouping) { + grpdata.push( rowData ); + if(!ts.p.groupingView._locgr) { + groupingPrepare.call(self , rd, j ); + } + rowData = []; + } + if(locdata || (ts.p.treeGrid === true && !(ts.p._ald)) ) { + rd[xmlid] = $.jgrid.stripPref(ts.p.idPrefix, rid); + ts.p.data.push(rd); + ts.p._index[rd[xmlid]] = ts.p.data.length-1; + } + if(ts.p.gridview === false ) { + tablebody.append(rowData.join('')); + self.triggerHandler("jqGridAfterInsertRow", [rid, rd, xmlr]); + if(afterInsRow) {ts.p.afterInsertRow.call(ts,rid,rd,xmlr);} + rowData=[]; + } + rd={}; + ir++; + j++; + if(ir===rn) {break;} + } + } + if(ts.p.gridview === true) { + fpos = ts.p.treeANode > -1 ? ts.p.treeANode: 0; + if(ts.p.grouping) { + if(!locdata) { + self.jqGrid('groupingRender',grpdata,ts.p.colModel.length, ts.p.page, rn); + grpdata = null; + } + } else if(ts.p.treeGrid === true && fpos > 0) { + $(ts.rows[fpos]).after(rowData.join('')); + } else { + //$("tbody:first",t).append(rowData.join('')); + tablebody.append(rowData.join('')); + ts.grid.cols = ts.rows[0].cells; // update cached first row + } + } + ts.p.totaltime = new Date() - startReq; + rowData =null; + if(ts.p.subGrid === true ) { + try {self.jqGrid("addSubGrid",gi+ni);} catch (_){} + } + if(ir>0) { if(ts.p.records===0) { ts.p.records=gl;} } + if( ts.p.treeGrid === true) { + try {self.jqGrid("setTreeNode", fpos+1, ir+fpos+1);} catch (e) {} + } + //if(!ts.p.treeGrid && !ts.p.scroll) {ts.grid.bDiv.scrollTop = 0;} + ts.p.reccount=ir; + ts.p.treeANode = -1; + if(ts.p.userDataOnFooter) { self.jqGrid("footerData","set",ts.p.userData,true); } + if(locdata) { + ts.p.records = gl; + ts.p.lastpage = Math.ceil(gl/ rn); + } + if (!more) { ts.updatepager(false,true); } + if(locdata) { + while (ir 1 ? rcnt :1; } + } else { return; } + + var dReader, locid = "_id_", frd, + locdata = (ts.p.datatype !== "local" && ts.p.loadonce) || ts.p.datatype === "jsonstring"; + if(locdata) { ts.p.data = []; ts.p._index = {}; ts.p.localReader.id = locid;} + ts.p.reccount = 0; + if(ts.p.datatype === "local") { + dReader = ts.p.localReader; + frd= 'local'; + } else { + dReader = ts.p.jsonReader; + frd='json'; + } + var self = $(ts), ir=0,v,i,j,f=[],cur,gi=ts.p.multiselect?1:0,si=ts.p.subGrid===true?1:0,addSubGridCell,ni=ts.p.rownumbers===true?1:0,arrayReader=orderedCols(gi+si+ni),objectReader=reader(frd),rowReader,len,drows,idn,rd={}, fpos, idr,rowData=[],cn=(ts.p.altRows === true) ? ts.p.altclass:"", + cn1 = getstyle(stylemodule, 'rowBox', true, 'jqgrow ui-row-'+ ts.p.direction), classes; + ts.p.page = intNum($.jgrid.getAccessor(data,dReader.page), ts.p.page); + ts.p.lastpage = intNum($.jgrid.getAccessor(data,dReader.total), 1); + ts.p.records = intNum($.jgrid.getAccessor(data,dReader.records)); + ts.p.userData = $.jgrid.getAccessor(data,dReader.userdata) || {}; + if(si) { + addSubGridCell = $.jgrid.getMethod("addSubGridCell"); + } + if( ts.p.keyName===false ) { + idn = $.isFunction(dReader.id) ? dReader.id.call(ts, data) : dReader.id; + } else { + idn = ts.p.keyName; + } + drows = $.jgrid.getAccessor(data,dReader.root); + if (drows == null && $.isArray(data)) { drows = data; } + if (!drows) { drows = []; } + len = drows.length; i=0; + if (len > 0 && ts.p.page <= 0) { ts.p.page = 1; } + var rn = parseInt(ts.p.rowNum,10),br=ts.p.scroll?$.jgrid.randId():1, altr, selected=false, selr; + if (adjust) { rn *= adjust+1; } + if(ts.p.datatype === "local" && !ts.p.deselectAfterSort) { + selected = true; + } + var afterInsRow = $.isFunction(ts.p.afterInsertRow), grpdata=[],hiderow=false, groupingPrepare, + tablebody = $("#"+$.jgrid.jqID(ts.p.id)+" tbody:first"), + rnc = ni ? getstyle(stylemodule, 'rownumBox', false, 'jqgrid-rownum') :"", + mlc = gi ? getstyle(stylemodule, 'multiBox', false, 'cbox'):""; + if(ts.p.grouping) { + hiderow = ts.p.groupingView.groupCollapse === true; + groupingPrepare = $.jgrid.getMethod("groupingPrepare"); + } + while (i" ); + if(ts.p.grouping) { + grpdata.push( rowData ); + if(!ts.p.groupingView._locgr) { + groupingPrepare.call(self , rd, i); + } + rowData = []; + } + if(locdata || (ts.p.treeGrid===true && !(ts.p._ald))) { + rd[locid] = $.jgrid.stripPref(ts.p.idPrefix, idr); + ts.p.data.push(rd); + ts.p._index[rd[locid]] = ts.p.data.length-1; + } + if(ts.p.gridview === false ) { + tablebody.append(rowData.join('')); + self.triggerHandler("jqGridAfterInsertRow", [idr, rd, cur]); + if(afterInsRow) {ts.p.afterInsertRow.call(ts,idr,rd,cur);} + rowData=[];//ari=0; + } + rd={}; + ir++; + i++; + if(ir===rn) { break; } + } + if(ts.p.gridview === true ) { + fpos = ts.p.treeANode > -1 ? ts.p.treeANode: 0; + if(ts.p.grouping) { + if(!locdata) { + self.jqGrid('groupingRender', grpdata, ts.p.colModel.length, ts.p.page, rn); + grpdata = null; + } + } else if(ts.p.treeGrid === true && fpos > 0) { + $(ts.rows[fpos]).after(rowData.join('')); + } else { + tablebody.append(rowData.join('')); + ts.grid.cols = ts.rows[0].cells; + } + } + ts.p.totaltime = new Date() - startReq; + rowData = null; + if(ts.p.subGrid === true ) { + try { self.jqGrid("addSubGrid",gi+ni);} catch (_){} + } + if(ir>0) { + if(ts.p.records===0) { ts.p.records=len; } + } + if( ts.p.treeGrid === true) { + try {self.jqGrid("setTreeNode", fpos+1, ir+fpos+1);} catch (e) {} + } + //if(!ts.p.treeGrid && !ts.p.scroll) {ts.grid.bDiv.scrollTop = 0;} + ts.p.reccount=ir; + ts.p.treeANode = -1; + if(ts.p.userDataOnFooter) { self.jqGrid("footerData","set",ts.p.userData,true); } + if(locdata) { + ts.p.records = len; + ts.p.lastpage = Math.ceil(len/ rn); + } + if (!more) { ts.updatepager(false,true); } + if(locdata) { + while (ir 0 && gor) { + query.or(); + } + try { + tojLinq(group.groups[index]); + } catch (e) {alert(e);} + s++; + } + if (gor) { + query.orEnd(); + } + } + if (group.rules != null) { + //if(s>0) { + // var result = query.select(); + // query = $.jgrid.from( result); + // if (ts.p.ignoreCase) { query = query.ignoreCase(); } + //} + try{ + ror = group.rules.length && group.groupOp.toString().toUpperCase() === "OR"; + if (ror) { + query.orBegin(); + } + for (index = 0; index < group.rules.length; index++) { + rule = group.rules[index]; + opr = group.groupOp.toString().toUpperCase(); + if (compareFnMap[rule.op] && rule.field ) { + if(s > 0 && opr && opr === "OR") { + query = query.or(); + } + fld = cmtypes[rule.field]; + if(fld.stype === 'date') { + if(fld.srcfmt && fld.newfmt && fld.srcfmt !== fld.newfmt ) { + rule.data = $.jgrid.parseDate.call(ts, fld.newfmt, rule.data, fld.srcfmt); + } + } + query = compareFnMap[rule.op](query, opr)(rule.field, rule.data, cmtypes[rule.field]); + } + s++; + } + if (ror) { + query.orEnd(); + } + } catch (g) {alert(g);} + } + } + + if (ts.p.search === true) { + var srules = ts.p.postData.filters; + if(srules) { + if(typeof srules === "string") { srules = $.jgrid.parse(srules);} + tojLinq( srules ); + } else { + try { + sfld = cmtypes[ts.p.postData.searchField]; + if(sfld.stype === 'date') { + if(sfld.srcfmt && sfld.newfmt && sfld.srcfmt !== sfld.newfmt ) { + ts.p.postData.searchString = $.jgrid.parseDate.call(ts, sfld.newfmt, ts.p.postData.searchString, sfld.srcfmt); + } + } + query = compareFnMap[ts.p.postData.searchOper](query)(ts.p.postData.searchField, ts.p.postData.searchString,cmtypes[ts.p.postData.searchField]); + } catch (se){} + } + } else { + if(ts.p.treeGrid && ts.p.treeGridModel === "nested") { + query.orderBy(ts.p.treeReader.left_field, 'asc', 'integer', '', null); + } + } + if(ts.p.treeGrid && ts.p.treeGridModel === "adjacency") { + lengrp =0; + st = null; + } + if(ts.p.grouping) { + for(gin=0; gin tr:gt(0)", ts.grid.bDiv); + base = to - rows.length; + ts.p.reccount = rows.length; + var rh = rows.outerHeight() || ts.grid.prevRowHeight; + if (rh) { + var top = base * rh; + var height = parseInt(ts.p.records,10) * rh; + $(">div:first",ts.grid.bDiv).css({height : height}).children("div:first").css({height:top,display:top?"":"none"}); + if (ts.grid.bDiv.scrollTop === 0 && ts.p.page > 1) { + ts.grid.bDiv.scrollTop = ts.p.rowNum * (ts.p.page - 1) * rh; + } + } + ts.grid.bDiv.scrollLeft = ts.grid.hDiv.scrollLeft; + } + pgboxes = ts.p.pager || ""; + pgboxes += ts.p.toppager ? (pgboxes ? "," + ts.p.toppager : ts.p.toppager) : ""; + if(pgboxes) { + fmt = $.jgrid.getRegional(ts, "formatter.integer"); + cp = intNum(ts.p.page); + last = intNum(ts.p.lastpage); + $(".selbox",pgboxes)[ this.p.useProp ? 'prop' : 'attr' ]("disabled",false); + if(ts.p.pginput===true) { + $("#input"+tspg).html($.jgrid.template($.jgrid.getRegional(ts, "defaults.pgtext", ts.p.pgtext) || "","","")); + if(ts.p.toppager) { + $("#input_t"+tspg_t).html($.jgrid.template($.jgrid.getRegional(ts, "defaults.pgtext", ts.p.pgtext) || "","","")); + } + $('.ui-pg-input',pgboxes).val(ts.p.page); + sppg = ts.p.toppager ? '#sp_1'+tspg+",#sp_1"+tspg+"_toppager" : '#sp_1'+tspg; + $(sppg).html($.fmatter ? $.fmatter.util.NumberFormat(ts.p.lastpage,fmt):ts.p.lastpage); + } + if (ts.p.viewrecords){ + if(ts.p.reccount === 0) { + $(".ui-paging-info",pgboxes).html($.jgrid.getRegional(ts, "defaults.emptyrecords", ts.p.emptyrecords )); + } else { + from = base+1; + tot=ts.p.records; + if($.fmatter) { + from = $.fmatter.util.NumberFormat(from,fmt); + to = $.fmatter.util.NumberFormat(to,fmt); + tot = $.fmatter.util.NumberFormat(tot,fmt); + } + var rt = $.jgrid.getRegional(ts, "defaults.recordtext", ts.p.recordtext); + $(".ui-paging-info",pgboxes).html($.jgrid.template( rt ,from,to,tot)); + } + } + if(ts.p.pgbuttons===true) { + if(cp<=0) {cp = last = 0;} + if(cp===1 || cp === 0) { + $("#first"+tspg+", #prev"+tspg).addClass( disabled ).removeClass( hover ); + if(ts.p.toppager) { $("#first_t"+tspg_t+", #prev_t"+tspg_t).addClass( disabled ).removeClass( hover ); } + } else { + $("#first"+tspg+", #prev"+tspg).removeClass( disabled ); + if(ts.p.toppager) { $("#first_t"+tspg_t+", #prev_t"+tspg_t).removeClass( disabled ); } + } + if(cp===last || cp === 0) { + $("#next"+tspg+", #last"+tspg).addClass( disabled ).removeClass( hover ); + if(ts.p.toppager) { $("#next_t"+tspg_t+", #last_t"+tspg_t).addClass( disabled ).removeClass( hover ); } + } else { + $("#next"+tspg+", #last"+tspg).removeClass( disabled ); + if(ts.p.toppager) { $("#next_t"+tspg_t+", #last_t"+tspg_t).removeClass( disabled ); } + } + } + } + if(rn===true && ts.p.rownumbers === true) { + $(">td.jqgrid-rownum",ts.rows).each(function(i){ + $(this).html(base+1+i); + }); + } + if(dnd && ts.p.jqgdnd) { $(ts).jqGrid('gridDnD','updateDnD');} + $(ts).triggerHandler("jqGridGridComplete"); + if($.isFunction(ts.p.gridComplete)) {ts.p.gridComplete.call(ts);} + $(ts).triggerHandler("jqGridAfterGridComplete"); + }, + beginReq = function() { + ts.grid.hDiv.loading = true; + if(ts.p.hiddengrid) { return;} + $(ts).jqGrid("progressBar", {method:"show", loadtype : ts.p.loadui, htmlcontent: $.jgrid.getRegional(ts, "defaults.loadtext", ts.p.loadtext) }); + }, + endReq = function() { + ts.grid.hDiv.loading = false; + $(ts).jqGrid("progressBar", {method:"hide", loadtype : ts.p.loadui }); + }, + populate = function (npage) { + if(!ts.grid.hDiv.loading) { + var pvis = ts.p.scroll && npage === false, + prm = {}, dt, dstr, pN=ts.p.prmNames; + if(ts.p.page <=0) { ts.p.page = Math.min(1,ts.p.lastpage); } + if(pN.search !== null) {prm[pN.search] = ts.p.search;} if(pN.nd !== null) {prm[pN.nd] = new Date().getTime();} + if(pN.rows !== null) {prm[pN.rows]= ts.p.rowNum;} if(pN.page !== null) {prm[pN.page]= ts.p.page;} + if(pN.sort !== null) {prm[pN.sort]= ts.p.sortname;} if(pN.order !== null) {prm[pN.order]= ts.p.sortorder;} + if(ts.p.rowTotal !== null && pN.totalrows !== null) { prm[pN.totalrows]= ts.p.rowTotal; } + var lcf = $.isFunction(ts.p.loadComplete), lc = lcf ? ts.p.loadComplete : null; + var adjust = 0; + npage = npage || 1; + if (npage > 1) { + if(pN.npage !== null) { + prm[pN.npage] = npage; + adjust = npage - 1; + npage = 1; + } else { + lc = function(req) { + ts.p.page++; + ts.grid.hDiv.loading = false; + if (lcf) { + ts.p.loadComplete.call(ts,req); + } + populate(npage-1); + }; + } + } else if (pN.npage !== null) { + delete ts.p.postData[pN.npage]; + } + if(ts.p.grouping) { + $(ts).jqGrid('groupingSetup'); + var grp = ts.p.groupingView, gi, gs=""; + for(gi=0;gi1,adjust); } + else { addJSONData(data, rcnt, npage>1, adjust); } + $(ts).triggerHandler("jqGridLoadComplete", [data]); + if(lc) { lc.call(ts,data); } + $(ts).triggerHandler("jqGridAfterLoadComplete", [data]); + if (pvis) { ts.grid.populateVisible(); } + if( ts.p.loadonce || ts.p.treeGrid) {ts.p.datatype = "local";} + data=null; + if (npage === 1) { endReq(); } + }, + error:function(xhr,st,err){ + if($.isFunction(ts.p.loadError)) { ts.p.loadError.call(ts,xhr,st,err); } + if (npage === 1) { endReq(); } + xhr=null; + }, + beforeSend: function(xhr, settings ){ + var gotoreq = true; + if($.isFunction(ts.p.loadBeforeSend)) { + gotoreq = ts.p.loadBeforeSend.call(ts,xhr, settings); + } + if(gotoreq === undefined) { gotoreq = true; } + if(gotoreq === false) { + return false; + } + beginReq(); + } + },$.jgrid.ajaxOptions, ts.p.ajaxGridOptions)); + break; + case "xmlstring": + beginReq(); + dstr = typeof ts.p.datastr !== 'string' ? ts.p.datastr : $.parseXML(ts.p.datastr); + addXmlData(dstr); + $(ts).triggerHandler("jqGridLoadComplete", [dstr]); + if(lcf) {ts.p.loadComplete.call(ts,dstr);} + $(ts).triggerHandler("jqGridAfterLoadComplete", [dstr]); + ts.p.datatype = "local"; + ts.p.datastr = null; + endReq(); + break; + case "jsonstring": + beginReq(); + if(typeof ts.p.datastr === 'string') { dstr = $.jgrid.parse(ts.p.datastr); } + else { dstr = ts.p.datastr; } + addJSONData(dstr); + $(ts).triggerHandler("jqGridLoadComplete", [dstr]); + if(lcf) {ts.p.loadComplete.call(ts,dstr);} + $(ts).triggerHandler("jqGridAfterLoadComplete", [dstr]); + ts.p.datatype = "local"; + ts.p.datastr = null; + endReq(); + break; + case "local": + case "clientside": + beginReq(); + ts.p.datatype = "local"; + ts.p._ald = true; + var req = addLocalData(); + addJSONData(req,rcnt,npage>1,adjust); + $(ts).triggerHandler("jqGridLoadComplete", [req]); + if(lc) { lc.call(ts,req); } + $(ts).triggerHandler("jqGridAfterLoadComplete", [req]); + if (pvis) { ts.grid.populateVisible(); } + endReq(); + ts.p._ald = false; + break; + } + ts.p._sort = false; + } + }, + setHeadCheckBox = function ( checked ) { + $('#cb_'+$.jgrid.jqID(ts.p.id),ts.grid.hDiv)[ts.p.useProp ? 'prop': 'attr']("checked", checked); + var fid = ts.p.frozenColumns ? ts.p.id+"_frozen" : ""; + if(fid) { + $('#cb_'+$.jgrid.jqID(ts.p.id),ts.grid.fhDiv)[ts.p.useProp ? 'prop': 'attr']("checked", checked); + } + }, + setPager = function (pgid, tp){ + // TBD - consider escaping pgid with pgid = $.jgrid.jqID(pgid); + var sep = "", + pginp = "", + pgl="", + str="", pgcnt, lft, cent, rgt, twd, tdw, i, + clearVals = function(onpaging, thus){ + var ret; + if ($.isFunction(ts.p.onPaging) ) { ret = ts.p.onPaging.call(ts,onpaging, thus); } + if(ret==='stop') {return false;} + ts.p.selrow = null; + if(ts.p.multiselect) {ts.p.selarrrow =[]; setHeadCheckBox( false );} + ts.p.savedRow = []; + return true; + }; + pgid = pgid.substr(1); + tp += "_" + pgid; + pgcnt = "pg_"+pgid; + lft = pgid+"_left"; cent = pgid+"_center"; rgt = pgid+"_right"; + $("#"+$.jgrid.jqID(pgid) ) + .append("
") + .attr("dir","ltr"); //explicit setting + if(ts.p.rowList.length >0){ + str = ""; + str +=""; + } + if(dir==="rtl") { pgl += str; } + if(ts.p.pginput===true) { + pginp= ""+$.jgrid.template( $.jgrid.getRegional(ts, "defaults.pgtext", ts.p.pgtext) || "","","")+""; + } + if(ts.p.pgbuttons===true) { + var po=["first"+tp,"prev"+tp, "next"+tp,"last"+tp], btc=getstyle(stylemodule, 'pgButtonBox', true, 'ui-pg-button'), + pot = [($.jgrid.getRegional(ts,"defaults.pgfirst",ts.p.pgfirst) || ""), + ($.jgrid.getRegional(ts,"defaults.pgprev",ts.p.pgprev) || ""), + ($.jgrid.getRegional(ts,"defaults.pgnext",ts.p.pgnext) || ""), + ($.jgrid.getRegional(ts,"defaults.pglast",ts.p.pglast) || "")]; + if(dir==="rtl") { + po.reverse(); + pot.reverse(); + } + pgl += ""; + pgl += ""; + pgl += pginp !== "" ? sep+pginp+sep:""; + pgl += ""; + pgl += ""; + } else if (pginp !== "") { + pgl += pginp; + } + if(dir==="ltr") { + pgl += str; + } + pgl += ""; + if(ts.p.viewrecords===true) { + $("td#"+pgid+"_"+ts.p.recordpos,"#"+pgcnt).append("
"); + } + $("td#"+pgid+"_"+ts.p.pagerpos,"#"+pgcnt).append(pgl); + tdw = $("#gbox_"+$.jgrid.jqID(ts.p.id)).css("font-size") || "11px"; + $("#gbox_"+$.jgrid.jqID(ts.p.id)).append(""); + twd = $(pgl).clone().appendTo("#testpg").width(); + $("#testpg").remove(); + if(twd > 0) { + if(pginp !== "") { twd += 50; } //should be param + $("td#"+pgid+"_"+ts.p.pagerpos,"#"+pgcnt).width(twd); + } + ts.p._nvtd = []; + ts.p._nvtd[0] = twd ? Math.floor((ts.p.width - twd)/2) : Math.floor(ts.p.width/3); + ts.p._nvtd[1] = 0; + pgl=null; + $('.ui-pg-selbox',"#"+pgcnt).bind('change',function() { + if(!clearVals('records', this)) { return false; } + ts.p.page = Math.round(ts.p.rowNum*(ts.p.page-1)/this.value-0.5)+1; + ts.p.rowNum = this.value; + if(ts.p.pager) { $('.ui-pg-selbox',ts.p.pager).val(this.value); } + if(ts.p.toppager) { $('.ui-pg-selbox',ts.p.toppager).val(this.value); } + populate(); + return false; + }); + if(ts.p.pgbuttons===true) { + $(".ui-pg-button","#"+pgcnt).hover(function(){ + if($(this).hasClass(disabled)) { + this.style.cursor='default'; + } else { + $(this).addClass(hover); + this.style.cursor='pointer'; + } + },function() { + if(!$(this).hasClass(disabled)) { + $(this).removeClass(hover); + this.style.cursor= "default"; + } + }); + $("#first"+$.jgrid.jqID(tp)+", #prev"+$.jgrid.jqID(tp)+", #next"+$.jgrid.jqID(tp)+", #last"+$.jgrid.jqID(tp)).click( function() { + if ($(this).hasClass(disabled)) { + return false; + } + var cp = intNum(ts.p.page,1), + last = intNum(ts.p.lastpage,1), selclick = false, + fp=true, pp=true, np=true,lp=true; + if(last ===0 || last===1) { + fp=false; + pp=false; + np=false; + lp=false; + } else if( last>1 && cp >=1) { + if( cp === 1) { + fp=false; + pp=false; + } else if( cp===last){ + np=false; + lp=false; + } + } else if( last>1 && cp===0 ) { + np=false; + lp=false; + cp=last-1; + } + if(!clearVals(this.id.split("_")[0], this)) { return false; } + if( this.id === 'first'+tp && fp ) { ts.p.page=1; selclick=true;} + if( this.id === 'prev'+tp && pp) { ts.p.page=(cp-1); selclick=true;} + if( this.id === 'next'+tp && np) { ts.p.page=(cp+1); selclick=true;} + if( this.id === 'last'+tp && lp) { ts.p.page=last; selclick=true;} + if(selclick) { + populate(); + } + return false; + }); + } + if(ts.p.pginput===true) { + $("#"+pgcnt).on('keypress','input.ui-pg-input', function(e) { + var key = e.charCode || e.keyCode || 0; + if(key === 13) { + if(!clearVals('user', this)) { return false; } + $(this).val( intNum( $(this).val(), 1)); + ts.p.page = ($(this).val()>0) ? $(this).val():ts.p.page; + populate(); + return false; + } + return this; + }); + } + }, + multiSort = function(iCol, obj, sor ) { + var cm = ts.p.colModel, + selTh = ts.p.frozenColumns ? obj : ts.grid.headers[iCol].el, so="", sn; + $("span.ui-grid-ico-sort",selTh).addClass(disabled); + $(selTh).attr("aria-selected","false"); + sn = (cm[iCol].index || cm[iCol].name); + if ( typeof sor == "undefined" ) + { + if(cm[iCol].lso) { + if(cm[iCol].lso==="asc") { + cm[iCol].lso += "-desc"; + so = "desc"; + } else if(cm[iCol].lso==="desc") { + cm[iCol].lso += "-asc"; + so = "asc"; + } else if(cm[iCol].lso==="asc-desc" || cm[iCol].lso==="desc-asc") { + cm[iCol].lso=""; + } + } else { + cm[iCol].lso = so = cm[iCol].firstsortorder || 'asc'; + } + } + else { + cm[iCol].lso = so = sor; + } + if( so ) { + $("span.s-ico",selTh).show(); + $("span.ui-icon-"+so,selTh).removeClass(disabled); + $(selTh).attr("aria-selected","true"); + } else { + if(!ts.p.viewsortcols[0]) { + $("span.s-ico",selTh).hide(); + } + } + var isn = sortarr.indexOf( sn ); + if( isn === -1 ) { + sortarr.push( sn ); + sortord.push( so ); + } else { + if( so ) { + sortord[isn] = so; + } else { + sortord.splice( isn, 1 ); + sortarr.splice( isn, 1 ); + } + } + ts.p.sortorder = ""; + ts.p.sortname = ""; + for( var i = 0, len = sortarr.length; i < len ; i++) { + if( i > 0) { + ts.p.sortname += ", "; + } + ts.p.sortname += sortarr[ i ]; + if( i !== len -1) { + ts.p.sortname += " "+sortord[ i ]; + } + } + ts.p.sortorder = sortord[ len -1 ]; + /* + $.each(cm, function(i){ + if(this.lso) { + if(i>0 && fs) { + sort += ", "; + } + splas = this.lso.split("-"); + sort += cm[i].index || cm[i].name; + sort += " "+splas[splas.length-1]; + fs = true; + ts.p.sortorder = splas[splas.length-1]; + } + }); + ls = sort.lastIndexOf(ts.p.sortorder); + sort = sort.substring(0, ls); + ts.p.sortname = sort; + */ + }, + sortData = function (index, idxcol,reload,sor, obj){ + if(!ts.p.colModel[idxcol].sortable) { return; } + if(ts.p.savedRow.length > 0) {return;} + if(!reload) { + if( ts.p.lastsort === idxcol && ts.p.sortname !== "" ) { + if( ts.p.sortorder === 'asc') { + ts.p.sortorder = 'desc'; + } else if(ts.p.sortorder === 'desc') { ts.p.sortorder = 'asc';} + } else { ts.p.sortorder = ts.p.colModel[idxcol].firstsortorder || 'asc'; } + ts.p.page = 1; + } + if(ts.p.multiSort) { + multiSort( idxcol, obj, sor); + } else { + if(sor) { + if(ts.p.lastsort === idxcol && ts.p.sortorder === sor && !reload) { return; } + ts.p.sortorder = sor; + } + var previousSelectedTh = ts.grid.headers[ts.p.lastsort] ? ts.grid.headers[ts.p.lastsort].el : null, newSelectedTh = ts.p.frozenColumns ? obj : ts.grid.headers[idxcol].el, + //sortrule = $.trim(ts.p.viewsortcols[1] === 'single' ? hidden : disabled); + usehide = ts.p.viewsortcols[1] === 'single' ? true : false, tmpicon; + tmpicon = $(previousSelectedTh).find("span.ui-grid-ico-sort"); + tmpicon.addClass(disabled); + if(usehide) { + $(tmpicon).css("display","none"); + } + $(previousSelectedTh).attr("aria-selected","false"); + if(ts.p.frozenColumns) { + tmpicon = ts.grid.fhDiv.find("span.ui-grid-ico-sort"); + tmpicon.addClass(disabled); + if(usehide) { tmpicon.css("display","none"); } + ts.grid.fhDiv.find("th").attr("aria-selected","false"); + } + tmpicon = $(newSelectedTh).find("span.ui-icon-"+ts.p.sortorder); + tmpicon.removeClass(disabled); + if(usehide) { tmpicon.css("display",""); } + $(newSelectedTh).attr("aria-selected","true"); + if(!ts.p.viewsortcols[0]) { + if(ts.p.lastsort !== idxcol) { + if(ts.p.frozenColumns){ + ts.grid.fhDiv.find("span.s-ico").hide(); + } + $("span.s-ico",previousSelectedTh).hide(); + $("span.s-ico",newSelectedTh).show(); + } else if (ts.p.sortname === "") { // if ts.p.lastsort === idxcol but ts.p.sortname === "" + $("span.s-ico",newSelectedTh).show(); + } + } + index = index.substring(5 + ts.p.id.length + 1); // bad to be changed!?! + ts.p.sortname = ts.p.colModel[idxcol].index || index; + } + if ($(ts).triggerHandler("jqGridSortCol", [ts.p.sortname, idxcol, ts.p.sortorder]) === 'stop') { + ts.p.lastsort = idxcol; + return; + } + if($.isFunction(ts.p.onSortCol)) {if (ts.p.onSortCol.call(ts, ts.p.sortname, idxcol, ts.p.sortorder)==='stop') {ts.p.lastsort = idxcol; return;}} + if(ts.p.datatype === "local") { + if(ts.p.deselectAfterSort) {$(ts).jqGrid("resetSelection");} + } else { + ts.p.selrow = null; + if(ts.p.multiselect){setHeadCheckBox( false );} + ts.p.selarrrow =[]; + ts.p.savedRow =[]; + } + if(ts.p.scroll) { + var sscroll = ts.grid.bDiv.scrollLeft; + emptyRows.call(ts, true, false); + ts.grid.hDiv.scrollLeft = sscroll; + } + if(ts.p.subGrid && ts.p.datatype === 'local') { + $("td.sgexpanded","#"+$.jgrid.jqID(ts.p.id)).each(function(){ + $(this).trigger("click"); + }); + } + ts.p._sort = true; + populate(); + ts.p.lastsort = idxcol; + if(ts.p.sortname !== index && idxcol) {ts.p.lastsort = idxcol;} + }, + setColWidth = function () { + var initwidth = 0, brd=$.jgrid.cell_width? 0: intNum(ts.p.cellLayout,0), vc=0, lvc, scw=intNum(ts.p.scrollOffset,0),cw,hs=false,aw,gw=0,cr; + $.each(ts.p.colModel, function() { + if(this.hidden === undefined) {this.hidden=false;} + if(ts.p.grouping && ts.p.autowidth) { + var ind = $.inArray(this.name, ts.p.groupingView.groupField); + if(ind >= 0 && ts.p.groupingView.groupColumnShow.length > ind) { + this.hidden = !ts.p.groupingView.groupColumnShow[ind]; + } + } + this.widthOrg = cw = intNum(this.width,0); + if(this.hidden===false){ + initwidth += cw+brd; + if(this.fixed) { + gw += cw+brd; + } else { + vc++; + } + } + }); + if(isNaN(ts.p.width)) { + ts.p.width = initwidth + ((ts.p.shrinkToFit ===false && !isNaN(ts.p.height)) ? scw : 0); + } + grid.width = ts.p.width; + ts.p.tblwidth = initwidth; + if(ts.p.shrinkToFit ===false && ts.p.forceFit === true) {ts.p.forceFit=false;} + if(ts.p.shrinkToFit===true && vc > 0) { + aw = grid.width-brd*vc-gw; + if(!isNaN(ts.p.height)) { + aw -= scw; + hs = true; + } + initwidth =0; + $.each(ts.p.colModel, function(i) { + if(this.hidden === false && !this.fixed){ + cw = Math.round(aw*this.width/(ts.p.tblwidth-brd*vc-gw)); + this.width =cw; + initwidth += cw; + lvc = i; + } + }); + cr =0; + if (hs) { + if(grid.width-gw-(initwidth+brd*vc) !== scw){ + cr = grid.width-gw-(initwidth+brd*vc)-scw; + } + } else if(!hs && Math.abs(grid.width-gw-(initwidth+brd*vc)) !== 1) { + cr = grid.width-gw-(initwidth+brd*vc); + } + ts.p.colModel[lvc].width += cr; + ts.p.tblwidth = initwidth+cr+brd*vc+gw; + if(ts.p.tblwidth > ts.p.width) { + ts.p.colModel[lvc].width -= (ts.p.tblwidth - parseInt(ts.p.width,10)); + ts.p.tblwidth = ts.p.width; + } + } + }, + nextVisible= function(iCol) { + var ret = iCol, j=iCol, i; + for (i = iCol+1;i'; + for(i=0;i
'; + cols.push(i); + } + str1 += ""; + $(parent).append(str1); + $("#col_menu").addClass("ui-menu " + colmenustyle.menu_widget); + if($.fn.html5sortable()) { + $("#col_menu").html5sortable({ + handle: 'span', + forcePlaceholderSize: true } + ).bind('sortupdate', function(e, ui) { + cols.splice( ui.startindex, 1); + cols.splice(ui.endindex, 0, ui.startindex); + $(ts).jqGrid("destroyFrozenColumns"); + $(ts).jqGrid("remapColumns", cols, true); + $(ts).jqGrid("setFrozenColumns"); + for(i=0;i li > a").on("click", function(e) { + var checked; + if($(e.target).hasClass('notclick')) { + return; + } + if($(e.target).is(":input")) { + checked = $(e.target).is(":checked"); + } else { + checked = !$("input", this).is(":checked"); + $("input", this).prop("checked",checked); + } + if(!checked) { + $(ts).jqGrid('hideCol', $("input", this).attr('name')); + $(this).parent().attr("draggable","false"); + } else { + $(ts).jqGrid('showCol', $("input", this).attr('name')); + $(this).parent().attr("draggable","true"); + } + }).hover(function(){ + $(this).addClass(hover); + },function(){ + $(this).removeClass(hover); + }); + }, + buildSearchBox = function (index, top, left, parent) { + var cm = ts.p.colModel[index], rules, o1='',v1='',r1='',o2='',v2='', so, op, repstr='',selected, elem, + numopts = ['eq','ne', 'lt', 'le', 'gt', 'ge', 'nu', 'nn', 'in', 'ni'], + stropts = ['eq', 'ne', 'bw', 'bn', 'ew', 'en', 'cn', 'nc', 'nu', 'nn', 'in', 'ni'], + texts = $.jgrid.getRegional(ts, "search"), + common = $.jgrid.styleUI[(ts.p.styleUI || 'jQueryUI')].common; + + if(!cm ) { + return; + } + rules = ts.p.colFilters && ts.p.colFilters[cm.name] ? ts.p.colFilters[cm.name] : false; + if(rules && !$.isEmptyObject( rules )) { + o1 = rules.oper1; + v1 = rules.value1; + r1 = rules.rule; + o2 = rules.oper2; + v2 = rules.value2; + } + if(! cm.searchoptions ) { + cm.searchoptions = {}; + } + if(cm.searchoptions.sopt) { + so = cm.searchoptions.sopt; + } else if(cm.sorttype === 'text') { + so = stropts; + } else { + so = numopts; + } + if(cm.searchoptions.operands) { + op = cm.searchoptions.operands; + } else { + op = texts.groupOps; + } + + //elem = $(''); + elem = $('
'); + var str1= '
'+$.jgrid.getRegional(ts, "colmenu.searchTitle")+'
'; + str1 += '
'; + elem.append(str1); + var df=""; + if(cm.searchoptions.defaultValue ) { + df = $.isFunction(cm.searchoptions.defaultValue) ? cm.searchoptions.defaultValue.call(ts) : cm.searchoptions.defaultValue; + } + //overwrite default value if restore from filters + if( v1 ) { + df = v1; + } + var soptions = $.extend(cm.searchoptions, {name:cm.index || cm.name, id: "sval1_" + ts.p.idPrefix+cm.name, oper:'search'}) + var input = $.jgrid.createEl.call(ts, cm.stype, soptions , df, false, $.extend({},$.jgrid.ajaxOptions, ts.p.ajaxSelectOptions || {})); + $(input).addClass( colmenustyle.filter_input ); + str1 = $('
').append(input); + elem.append(str1); + // and/or + str1 ='
'; + elem.append(str1); + //oper2 + repstr =''; + $.each(texts.odata, function(i, n) { + selected = n.oper === o2 ? 'selected="selected"' : ''; + if($.inArray(n.oper, so) !== -1) { + repstr += ''; + } + }); + str1 = '
'; + elem.append(str1); + // value2 + if( v2 ) { + df = v2; + } else { + df = ""; + } + soptions = $.extend(cm.searchoptions, {name:cm.index || cm.name, id: "sval2_" + ts.p.idPrefix+cm.name, oper:'search'}) + input = $.jgrid.createEl.call(ts, cm.stype, soptions , df, false, $.extend({},$.jgrid.ajaxOptions, ts.p.ajaxSelectOptions || {})); + $(input).addClass( colmenustyle.filter_input ); + str1 = $('
').append(input); + elem.append(str1); + // buttons + str1 = "
"; + str1 +=""; + str1 +=""; + str1 += "
"; + elem.append(str1); + elem = $('').append( elem ); + elem = $('').append(elem); + $(parent).append(elem); + $("#search_menu").addClass("ui-menu " + colmenustyle.menu_widget); + $("#bs_reset, #bs_search", "#search_menu").hover(function(){ + $(this).addClass(hover); + },function(){ + $(this).removeClass(hover); + }); + + $(elem).find("#bs_reset").click(function(e){ + ts.p.colFilters[cm.name] = {}; + ts.p.postData.filters = buildFilters(); + ts.p.search = true; + $(ts).trigger("reloadGrid"); + $("#column_menu").remove(); + return false; + }); + $(elem).find("#bs_search").click( function(e){ + ts.p.colFilters[cm.name] = { + oper1: $("#oper1","#search_menu").val(), + value1: $("#sval1_" + ts.p.idPrefix+cm.name,"#search_menu").val(), + rule: $("#operand","#search_menu").val(), + oper2 : $("#oper2","#search_menu").val(), + value2 : $("#sval2_" + ts.p.idPrefix+cm.name,"#search_menu").val() + }; + ts.p.postData.filters = buildFilters(); + ts.p.search = true; + $(ts).trigger("reloadGrid"); + $("#column_menu").remove(); + return false; + }); + }, + buildFilters = function() { + var go = "AND", + filters ="{\"groupOp\":\"" + go + "\",\"rules\":[], \"groups\" : [", i=0; + for (var item in ts.p.colFilters) { + if(ts.p.colFilters.hasOwnProperty(item)) { + var si = ts.p.colFilters[item]; + if(!$.isEmptyObject(si)) { + if(i>0) { + filters += ","; + } + filters += "{\"groupOp\": \""+si.rule +"\", \"rules\" : ["; + filters += "{\"field\":\"" + item + "\","; + filters += "\"op\":\"" + si.oper1 + "\","; + si.value1 +=""; + filters += "\"data\":\"" + si.value1.replace(/\\/g,'\\\\').replace(/\"/g,'\\"') + "\"}"; + if(si.value2) { + filters += ",{\"field\":\"" + item + "\","; + filters += "\"op\":\"" + si.oper2 + "\","; + si.value2 +=""; + filters += "\"data\":\"" + si.value2.replace(/\\/g,'\\\\').replace(/\"/g,'\\"') + "\"}"; + } + filters += "]}"; + i++; + } else { + //console.log('empty object'); + } + } + } + filters += "]}"; + return filters; + }, + buildGrouping = function( index, isgroup ) { + var cm = ts.p.colModel[index], + group = ts.p.groupingView; + if(isgroup !== -1) { + group.groupField.splice(isgroup,1); + } else { + group.groupField.push( cm.name); + } + $(ts).jqGrid('groupingGroupBy', group.groupField ); + if(ts.p.frozenColumns) { + $(ts).jqGrid("destroyFrozenColumns"); + $(ts).jqGrid("setFrozenColumns"); + } + }, + buildFreeze = function( index, isfreeze ) { + var cols = [], i, len = ts.p.colModel.length, lastfrozen = -1, cm = ts.p.colModel;; + for(i=0; i < len; i++) { + if(cm[i].frozen) { + lastfrozen = i; + } + cols.push(i); + } + // from position index to lastfrozen+1 + cols.splice( index, 1); + cols.splice(lastfrozen + (isfreeze ? 1 : 0), 0, index); + cm[index].frozen = isfreeze; + $(ts).jqGrid("destroyFrozenColumns"); + $(ts).jqGrid("remapColumns", cols, true); + $(ts).jqGrid("setFrozenColumns"); + }, + buildColMenu = function( index, left, top ){ + //$("#sopt_menu").remove(); + left=parseInt(left,10); + top=parseInt(top,10) + 25; + var fs = $('.ui-jqgrid-view').css('font-size') || '11px'; + var str = '"; + $('body').append( str ); + $("#column_menu").addClass("ui-menu " + colmenustyle.menu_widget); + $("#column_menu > li > a").hover( + function(){ + $("#col_menu").remove(); + $("#search_menu").remove(); + if($(this).attr("value") === 'columns') { + var left1 = $(this).parent().width()+18, + top1 = $(this).parent().position().top - 5; + buildColItems(top1, left1, $(this).parent()); + } + if($(this).attr("value") === 'filtering') { + var left1 = $(this).parent().width()+18, + top1 = $(this).parent().position().top - 5; + buildSearchBox(index, top1, left1, $(this).parent()); + } + $(this).addClass(hover); + }, + function(){ $(this).removeClass(hover); } + ).click(function(){ + var v = $(this).attr("value"), + sobj = ts.grid.headers[index].el; + if(v === 'sortasc') { + sortData( "jqgh_"+ts.p.id+"_" + cm.name, index, true, 'asc', sobj); + } else if(v === 'sortdesc') { + sortData( "jqgh_"+ts.p.id+"_" + cm.name, index, true, 'desc', sobj); + } else if (v === 'grouping') { + buildGrouping(index, isgroup); + } else if( v==='freeze') { + buildFreeze( index, isfreeze); + } + if(v.indexOf('sort') !== -1 || v === 'grouping' || v==='freeze') { + $(this).remove(); + } + }); + }, + colTemplate; + if(ts.p.colMenu) { + $("body").on('click', function(e){ + if(!$(e.target).closest(".column-menu").length) { + $("#column_menu").remove(); + } + }); + } + this.p.id = this.id; + if ($.inArray(ts.p.multikey,sortkeys) === -1 ) {ts.p.multikey = false;} + ts.p.keyName=false; + for (i=0; i"); + this.p.colModel.unshift({name:'cb',width:$.jgrid.cell_width ? ts.p.multiselectWidth+ts.p.cellLayout : ts.p.multiselectWidth,sortable:false,resizable:false,hidedlg:true,search:false,align:'center',fixed:true, frozen: true}); + } + if(this.p.rownumbers) { + this.p.colNames.unshift(""); + this.p.colModel.unshift({name:'rn',width:ts.p.rownumWidth,sortable:false,resizable:false,hidedlg:true,search:false,align:'center',fixed:true, frozen : true}); + } + ts.p.xmlReader = $.extend(true,{ + root: "rows", + row: "row", + page: "rows>page", + total: "rows>total", + records : "rows>records", + repeatitems: true, + cell: "cell", + id: "[id]", + userdata: "userdata", + subgrid: {root:"rows", row: "row", repeatitems: true, cell:"cell"} + }, ts.p.xmlReader); + ts.p.jsonReader = $.extend(true,{ + root: "rows", + page: "page", + total: "total", + records: "records", + repeatitems: true, + cell: "cell", + id: "id", + userdata: "userdata", + subgrid: {root:"rows", repeatitems: true, cell:"cell"} + },ts.p.jsonReader); + ts.p.localReader = $.extend(true,{ + root: "rows", + page: "page", + total: "total", + records: "records", + repeatitems: false, + cell: "cell", + id: "id", + userdata: "userdata", + subgrid: {root:"rows", repeatitems: true, cell:"cell"} + },ts.p.localReader); + if(ts.p.scroll){ + ts.p.pgbuttons = false; ts.p.pginput=false; ts.p.rowList=[]; + } + if(ts.p.data.length) { normalizeData(); refreshIndex(); } + var thead = "", + tdc, idn, w, res, sort ="", + td, ptr, tbody, imgs, iac="", idc="", tmpcm; + if(ts.p.shrinkToFit===true && ts.p.forceFit===true) { + for (i=ts.p.colModel.length-1;i>=0;i--){ + if(!ts.p.colModel[i].hidden) { + ts.p.colModel[i].resizable=false; + break; + } + } + } + if(ts.p.viewsortcols[1] === 'horizontal') { + iac=" ui-i-asc"; + idc=" ui-i-desc"; + } else if(ts.p.viewsortcols[1] === "single") { + iac = " ui-single-sort-asc"; + idc = " ui-single-sort-desc"; + sort = " style='display:none'"; + ts.p.viewsortcols[0] = false; + } + tdc = isMSIE ? "class='ui-th-div-ie'" :""; + imgs = ""; + if(ts.p.multiSort) { + if(ts.p.sortname ) { + sortarr = ts.p.sortname.split(","); + for (i=0; i < sortarr.length; i++) { + sotmp = $.trim(sortarr[i]).split(" "); + sortarr[i] = $.trim(sotmp[0]); + sortord[i] = sotmp[1] ? $.trim(sotmp[1]) : ts.p.sortorder || "asc"; + } + } + } + for(i=0;i"; + idn = tmpcm.index || tmpcm.name; + thead += "
"+ts.p.colNames[i]; + if(!tmpcm.width) { + tmpcm.width = 150; + } else { + tmpcm.width = parseInt(tmpcm.width,10); + } + if(typeof tmpcm.title !== "boolean") { + tmpcm.title = true; + } + tmpcm.lso = ""; + if (idn === ts.p.sortname) { + ts.p.lastsort = i; + } + if(ts.p.multiSort) { + sotmp = $.inArray(idn,sortarr); + if( sotmp !== -1 ) { + tmpcm.lso = sortord[sotmp]; + } + } + thead += imgs; + if(ts.p.colMenu && tmpcm.colmenu) { + thead += ""; + } + thead += "
"; + } + thead += ""; + imgs = null; + tmpcm = null; + $(this).append(thead); + $("thead tr:first th",this).hover( + function(){ $(this).addClass(hover);}, + function(){ $(this).removeClass(hover);} + ); + if(this.p.multiselect) { + var emp=[], chk; + $('#cb_'+$.jgrid.jqID(ts.p.id),this).bind('click',function(){ + ts.p.selarrrow = []; + var froz = ts.p.frozenColumns === true ? ts.p.id + "_frozen" : ""; + if (this.checked) { + $(ts.rows).each(function(i) { + if (i>0) { + if(!$(this).hasClass("ui-subgrid") && !$(this).hasClass("jqgroup") && !$(this).hasClass(disabled) && !$(this).hasClass("jqfoot")){ + $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id) )[ts.p.useProp ? 'prop': 'attr']("checked",true); + $(this).addClass(highlight).attr("aria-selected","true"); + ts.p.selarrrow.push(this.id); + ts.p.selrow = this.id; + if(froz) { + $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id), ts.grid.fbDiv )[ts.p.useProp ? 'prop': 'attr']("checked",true); + $("#"+$.jgrid.jqID(this.id), ts.grid.fbDiv).addClass(highlight); + } + } + } + }); + chk=true; + emp=[]; + } + else { + $(ts.rows).each(function(i) { + if(i>0) { + if(!$(this).hasClass("ui-subgrid") && !$(this).hasClass("jqgroup") && !$(this).hasClass(disabled) && !$(this).hasClass("jqfoot")){ + $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id) )[ts.p.useProp ? 'prop': 'attr']("checked", false); + $(this).removeClass(highlight).attr("aria-selected","false"); + emp.push(this.id); + if(froz) { + $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id), ts.grid.fbDiv )[ts.p.useProp ? 'prop': 'attr']("checked",false); + $("#"+$.jgrid.jqID(this.id), ts.grid.fbDiv).removeClass(highlight); + } + } + } + }); + ts.p.selrow = null; + chk=false; + } + $(ts).triggerHandler("jqGridSelectAll", [chk ? ts.p.selarrrow : emp, chk]); + if($.isFunction(ts.p.onSelectAll)) {ts.p.onSelectAll.call(ts, chk ? ts.p.selarrrow : emp,chk);} + }); + } + + if(ts.p.autowidth===true) { + var pw = $(eg).innerWidth(); + ts.p.width = pw > 0? pw: 'nw'; + } + setColWidth(); + $(eg).css("width",grid.width+"px").append("
 
"); + if(ts.p.scrollPopUp) { + $(eg).append("
"); + } + $(gv).css("width",grid.width+"px"); + thead = $("thead:first",ts).get(0); + var tfoot = ""; + if(ts.p.footerrow) { tfoot += ""; } + var thr = $("tr:first",thead), + firstr = ""; + ts.p.disableClick=false; + $("th",thr).each(function ( j ) { + tmpcm = ts.p.colModel[j]; + w = tmpcm.width; + if(tmpcm.resizable === undefined) { + tmpcm.resizable = true; + } + if(tmpcm.resizable){ + res = document.createElement("span"); + $(res).html(" ").addClass('ui-jqgrid-resize ui-jqgrid-resize-'+dir) + .css("cursor","col-resize"); + $(this).addClass(ts.p.resizeclass); + } else { + res = ""; + } + $(this).css("width",w+"px").prepend(res); + res = null; + var hdcol = ""; + if( tmpcm.hidden ) { + $(this).css("display","none"); + hdcol = "display:none;"; + } + firstr += ""; + grid.headers[j] = { width: w, el: this }; + sort = tmpcm.sortable; + if( typeof sort !== 'boolean') { + tmpcm.sortable = true; + sort=true; + } + var nm = tmpcm.name; + if( !(nm === 'cb' || nm==='subgrid' || nm==='rn') ) { + if(ts.p.viewsortcols[2]){ + $(">div",this).addClass('ui-jqgrid-sortable'); + } + } + if(sort) { + if(ts.p.multiSort) { + if(ts.p.viewsortcols[0]) { + $("div span.s-ico",this).show(); + if(ts.p.colModel[j].lso){ + $("div span.ui-icon-"+tmpcm.lso,this).removeClass(disabled).css("display",""); + } + } else if( ts.p.colModel[j].lso) { + $("div span.s-ico",this).show(); + $("div span.ui-icon-"+tmpcm.lso,this).removeClass(disabled).css("display",""); + } + } else { + if(ts.p.viewsortcols[0]) { + $("div span.s-ico",this).show(); + if(j===ts.p.lastsort){ + $("div span.ui-icon-"+ts.p.sortorder,this).removeClass(disabled).css("display",""); + } + } else if(j === ts.p.lastsort && ts.p.sortname !== "") { + $("div span.s-ico",this).show(); + $("div span.ui-icon-"+ts.p.sortorder,this).removeClass(disabled).css("display",""); + } + } + } + if(ts.p.footerrow) { + tfoot += ""; + } + }).mousedown(function(e) { + if ($(e.target).closest("th>span.ui-jqgrid-resize").length !== 1) { return; } + var ci = getColumnHeaderIndex(this); + if(ts.p.forceFit===true) {ts.p.nv= nextVisible(ci);} + grid.dragStart(ci, e, getOffset(ci)); + return false; + }).click(function(e) { + if (ts.p.disableClick) { + ts.p.disableClick = false; + return false; + } + var s = "th>div.ui-jqgrid-sortable",r,d; + if (!ts.p.viewsortcols[2]) { s = "th>div>span>span.ui-grid-ico-sort"; } + var t = $(e.target).closest(s); + if (t.length !== 1) { return; } + var ci; + if(ts.p.frozenColumns) { + var tid = $(this)[0].id.substring( ts.p.id.length + 1 ); + $(ts.p.colModel).each(function(i){ + if (this.name === tid) { + ci = i;return false; + } + }); + } else { + ci = getColumnHeaderIndex(this); + } + // + if($(e.target).hasClass('colmenuspan')) { + if($("#column_menu")[0] != null) { + $("#column_menu").remove(); + } + + var colindex = $.jgrid.getCellIndex(e.target); + if(colindex === -1) { return;} + var offset = $(this).offset(), + left = ( offset.left ), + top = ( offset.top); + buildColMenu(colindex, left, top, t ); + e.stopPropagation(); + return; + } + // + if (!ts.p.viewsortcols[2]) { r=true;d=t.attr("sort"); } + if(ci != null){ + sortData( $('div',this)[0].id, ci, r, d, this); + } + return false; + }); + tmpcm = null; + if (ts.p.sortable && $.fn.sortable) { + try { + $(ts).jqGrid("sortableColumns", thr); + } catch (e){} + } + if(ts.p.footerrow) { tfoot += "
 
"; } + firstr += ""; + tbody = document.createElement("tbody"); + //$(this).append(firstr); + this.appendChild(tbody); + $(this).addClass(getstyle(stylemodule,"rowTable", true, 'ui-jqgrid-btable ui-common-table')).append(firstr); + //$(firstr).insertAfter(this); + firstr = null; + var hTable = $("
").append(thead), + hg = (ts.p.caption && ts.p.hiddengrid===true) ? true : false, + hb = $("
"); + thead = null; + grid.hDiv = document.createElement("div"); + grid.hDiv.style.width = (grid.width) + "px"; + grid.hDiv.className = getstyle(stylemodule,'headerDiv', true,'ui-jqgrid-hdiv'); + + $(grid.hDiv).append(hb); + $(hb).append(hTable); + hTable = null; + if(hg) { $(grid.hDiv).hide(); } + if(ts.p.pager){ + // TBD -- escape ts.p.pager here? + if(typeof ts.p.pager === "string") {if(ts.p.pager.substr(0,1) !== "#") { ts.p.pager = "#"+ts.p.pager;} } + else { ts.p.pager = "#"+ $(ts.p.pager).attr("id");} + $(ts.p.pager).css({width: grid.width+"px"}).addClass(getstyle(stylemodule,'pagerBox', true,'ui-jqgrid-pager')).appendTo(eg); + if(hg) {$(ts.p.pager).hide();} + setPager(ts.p.pager,''); + } + if( ts.p.cellEdit === false && ts.p.hoverrows === true) { + $(ts).bind('mouseover',function(e) { + ptr = $(e.target).closest("tr.jqgrow"); + if($(ptr).attr("class") !== "ui-subgrid") { + $(ptr).addClass(hover); + } + }).bind('mouseout',function(e) { + ptr = $(e.target).closest("tr.jqgrow"); + $(ptr).removeClass(hover); + }); + } + var ri,ci, tdHtml; + $(ts).before(grid.hDiv).click(function(e) { + td = e.target; + ptr = $(td,ts.rows).closest("tr.jqgrow"); + if($(ptr).length === 0 || ptr[0].className.indexOf( disabled ) > -1 || ($(td,ts).closest("table.ui-jqgrid-btable").attr('id') || '').replace("_frozen","") !== ts.id ) { + return this; + } + var scb = $(td).hasClass("cbox"), + cSel = $(ts).triggerHandler("jqGridBeforeSelectRow", [ptr[0].id, e]); + cSel = (cSel === false || cSel === 'stop') ? false : true; + if ($.isFunction(ts.p.beforeSelectRow)) { + var allowRowSelect = ts.p.beforeSelectRow.call(ts, ptr[0].id, e); + if (allowRowSelect === false || allowRowSelect === 'stop') { + cSel = false; + } + } + if (td.tagName === 'A' || ((td.tagName === 'INPUT' || td.tagName === 'TEXTAREA' || td.tagName === 'OPTION' || td.tagName === 'SELECT' ) && !scb) ) { return; } + ri = ptr[0].id; + td = $(td).closest("tr.jqgrow>td"); + if (td.length > 0) { + ci = $.jgrid.getCellIndex(td); + tdHtml = $(td).closest("td,th").html(); + $(ts).triggerHandler("jqGridCellSelect", [ri,ci,tdHtml,e]); + if($.isFunction(ts.p.onCellSelect)) { + ts.p.onCellSelect.call(ts,ri,ci,tdHtml,e); + } + } + if(ts.p.cellEdit === true) { + if(ts.p.multiselect && scb && cSel){ + $(ts).jqGrid("setSelection", ri ,true,e); + } else if (td.length > 0) { + try { + $(ts).jqGrid("editCell", ptr[0].rowIndex, ci, true); + } catch (_) {} + } + return; + } + if (!cSel) { + return; + } + if ( !ts.p.multikey ) { + if(ts.p.multiselect && ts.p.multiboxonly) { + if(scb){$(ts).jqGrid("setSelection",ri,true,e);} + else { + var frz = ts.p.frozenColumns ? ts.p.id+"_frozen" : ""; + $(ts.p.selarrrow).each(function(i,n){ + var trid = $(ts).jqGrid('getGridRowById',n); + if(trid) { $( trid ).removeClass(highlight); } + $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(n))[ts.p.useProp ? 'prop': 'attr']("checked", false); + if(frz) { + $("#"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(frz)).removeClass(highlight); + $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(frz))[ts.p.useProp ? 'prop': 'attr']("checked", false); + } + }); + ts.p.selarrrow = []; + $(ts).jqGrid("setSelection",ri,true,e); + } + } else { + $(ts).jqGrid("setSelection",ri,true,e); + } + } else { + if(e[ts.p.multikey]) { + $(ts).jqGrid("setSelection",ri,true,e); + } else if(ts.p.multiselect && scb) { + scb = $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ri).is(":checked"); + $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ri)[ts.p.useProp ? 'prop' : 'attr']("checked", !scb); + } + } + }).bind('reloadGrid', function(e,opts) { + if(ts.p.treeGrid ===true) { ts.p.datatype = ts.p.treedatatype;} + opts = opts || {}; + if (opts.current) { + ts.grid.selectionPreserver(ts); + } + if(ts.p.datatype==="local"){ $(ts).jqGrid("resetSelection"); if(ts.p.data.length) { normalizeData(); refreshIndex();} } + else if(!ts.p.treeGrid) { + ts.p.selrow=null; + if(ts.p.multiselect) {ts.p.selarrrow =[];setHeadCheckBox(false);} + ts.p.savedRow = []; + } + if(ts.p.scroll) {emptyRows.call(ts, true, false);} + if (opts.page) { + var page = opts.page; + if (page > ts.p.lastpage) { page = ts.p.lastpage; } + if (page < 1) { page = 1; } + ts.p.page = page; + if (ts.grid.prevRowHeight) { + ts.grid.bDiv.scrollTop = (page - 1) * ts.grid.prevRowHeight * ts.p.rowNum; + } else { + ts.grid.bDiv.scrollTop = 0; + } + } + if (ts.grid.prevRowHeight && ts.p.scroll && opts.page === undefined) { + delete ts.p.lastpage; + ts.grid.populateVisible(); + } else { + ts.grid.populate(); + } + if(ts.p.inlineNav===true) {$(ts).jqGrid('showAddEditButtons');} + return false; + }) + .dblclick(function(e) { + td = e.target; + ptr = $(td,ts.rows).closest("tr.jqgrow"); + if($(ptr).length === 0 ){return;} + ri = ptr[0].rowIndex; + ci = $.jgrid.getCellIndex(td); + var dbcr = $(ts).triggerHandler("jqGridDblClickRow", [$(ptr).attr("id"),ri,ci,e]); + if( dbcr != null) { return dbcr; } + if ($.isFunction(ts.p.ondblClickRow)) { + dbcr = ts.p.ondblClickRow.call(ts,$(ptr).attr("id"),ri,ci, e); + if( dbcr != null) { return dbcr; } + } + }) + .bind('contextmenu', function(e) { + td = e.target; + ptr = $(td,ts.rows).closest("tr.jqgrow"); + if($(ptr).length === 0 ){return;} + if(!ts.p.multiselect) { $(ts).jqGrid("setSelection",ptr[0].id,true,e); } + ri = ptr[0].rowIndex; + ci = $.jgrid.getCellIndex(td); + var rcr = $(ts).triggerHandler("jqGridRightClickRow", [$(ptr).attr("id"),ri,ci,e]); + if( rcr != null) { return rcr; } + if ($.isFunction(ts.p.onRightClickRow)) { + rcr = ts.p.onRightClickRow.call(ts,$(ptr).attr("id"),ri,ci, e); + if( rcr != null) { return rcr; } + } + }); + grid.bDiv = document.createElement("div"); + if(isMSIE) { if(String(ts.p.height).toLowerCase() === "auto") { ts.p.height = "100%"; } } + $(grid.bDiv) + .append($('
').append('
').append(this)) + .addClass("ui-jqgrid-bdiv") + .css({ height: ts.p.height+(isNaN(ts.p.height)?"":"px"), width: (grid.width)+"px"}) + .scroll(grid.scrollGrid); + $("table:first",grid.bDiv).css({width:ts.p.tblwidth+"px"}); + if( !$.support.tbody ) { //IE + if( $("tbody",this).length === 2 ) { $("tbody:gt(0)",this).remove();} + } + if(ts.p.multikey){ + if( $.jgrid.msie) { + $(grid.bDiv).bind("selectstart",function(){return false;}); + } else { + $(grid.bDiv).bind("mousedown",function(){return false;}); + } + } + if(hg) { // hidden grid + $(grid.bDiv).hide(); + } + var icoo = iconbase + " " + getstyle(stylemodule,'icon_caption_open', true), + icoc = iconbase + " " + getstyle(stylemodule,'icon_caption_close', true); + grid.cDiv = document.createElement("div"); + var arf = ts.p.hidegrid===true ? $("").hover( + function(){ arf.addClass(hover);}, + function() {arf.removeClass(hover);}) + .append("").css((dir==="rtl"?"left":"right"),"0px") : ""; + $(grid.cDiv).append(arf).append(""+ts.p.caption+"") + .addClass("ui-jqgrid-titlebar ui-jqgrid-caption"+(dir==="rtl" ? "-rtl" :"" )+" "+getstyle(stylemodule,'gridtitleBox',true)); + $(grid.cDiv).insertBefore(grid.hDiv); + if( ts.p.toolbar[0] ) { + var tbstyle = getstyle(stylemodule, 'customtoolbarBox', true, 'ui-userdata'); + grid.uDiv = document.createElement("div"); + if(ts.p.toolbar[1] === "top") {$(grid.uDiv).insertBefore(grid.hDiv);} + else if (ts.p.toolbar[1]==="bottom" ) {$(grid.uDiv).insertAfter(grid.hDiv);} + if(ts.p.toolbar[1]==="both") { + grid.ubDiv = document.createElement("div"); + $(grid.uDiv).addClass( tbstyle + " ui-userdata-top").attr("id","t_"+this.id).insertBefore(grid.hDiv).width(grid.width); + $(grid.ubDiv).addClass( tbstyle + " ui-userdata-bottom").attr("id","tb_"+this.id).insertAfter(grid.hDiv).width(grid.width); + if(hg) {$(grid.ubDiv).hide();} + } else { + $(grid.uDiv).width(grid.width).addClass( tbstyle + " ui-userdata-top").attr("id","t_"+this.id); + } + if(hg) {$(grid.uDiv).hide();} + } + if(ts.p.toppager) { + ts.p.toppager = $.jgrid.jqID(ts.p.id)+"_toppager"; + grid.topDiv = $("
")[0]; + ts.p.toppager = "#"+ts.p.toppager; + $(grid.topDiv).addClass(getstyle(stylemodule, 'toppagerBox', true, 'ui-jqgrid-toppager')).width(grid.width).insertBefore(grid.hDiv); + setPager(ts.p.toppager,'_t'); + } + if(ts.p.footerrow) { + grid.sDiv = $("
")[0]; + hb = $("
"); + $(grid.sDiv).append(hb).width(grid.width).insertAfter(grid.hDiv); + $(hb).append(tfoot); + grid.footers = $(".ui-jqgrid-ftable",grid.sDiv)[0].rows[0].cells; + if(ts.p.rownumbers) { grid.footers[0].className = getstyle(stylemodule, 'rownumBox', true, 'jqgrid-rownum'); } + if(hg) {$(grid.sDiv).hide();} + } + hb = null; + if(ts.p.caption) { + var tdt = ts.p.datatype; + if(ts.p.hidegrid===true) { + $(".ui-jqgrid-titlebar-close",grid.cDiv).click( function(e){ + var onHdCl = $.isFunction(ts.p.onHeaderClick), + elems = ".ui-jqgrid-bdiv, .ui-jqgrid-hdiv, .ui-jqgrid-toppager, .ui-jqgrid-pager, .ui-jqgrid-sdiv", + counter, self = this; + if(ts.p.toolbar[0]===true) { + if( ts.p.toolbar[1]==='both') { + elems += ', #' + $(grid.ubDiv).attr('id'); + } + elems += ', #' + $(grid.uDiv).attr('id'); + } + counter = $(elems,"#gview_"+$.jgrid.jqID(ts.p.id)).length; + + if(ts.p.gridstate === 'visible') { + $(elems,"#gbox_"+$.jgrid.jqID(ts.p.id)).slideUp("fast", function() { + counter--; + if (counter === 0) { + $("span",self).removeClass(icoo).addClass(icoc); + ts.p.gridstate = 'hidden'; + if($("#gbox_"+$.jgrid.jqID(ts.p.id)).hasClass("ui-resizable")) { $(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(ts.p.id)).hide(); } + $(ts).triggerHandler("jqGridHeaderClick", [ts.p.gridstate,e]); + if(onHdCl) {if(!hg) {ts.p.onHeaderClick.call(ts,ts.p.gridstate,e);}} + } + }); + } else if(ts.p.gridstate === 'hidden'){ + $(elems,"#gbox_"+$.jgrid.jqID(ts.p.id)).slideDown("fast", function() { + counter--; + if (counter === 0) { + $("span",self).removeClass(icoc).addClass(icoo); + if(hg) {ts.p.datatype = tdt;populate();hg=false;} + ts.p.gridstate = 'visible'; + if($("#gbox_"+$.jgrid.jqID(ts.p.id)).hasClass("ui-resizable")) { $(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(ts.p.id)).show(); } + $(ts).triggerHandler("jqGridHeaderClick", [ts.p.gridstate,e]); + if(onHdCl) {if(!hg) {ts.p.onHeaderClick.call(ts,ts.p.gridstate,e);}} + } + }); + } + return false; + }); + if(hg) {ts.p.datatype="local"; $(".ui-jqgrid-titlebar-close",grid.cDiv).trigger("click");} + } + } else { + $(grid.cDiv).hide(); + if(!ts.p.toppager) { + $(grid.hDiv).addClass(getstyle(ts.p.styleUI+'.common', 'cornertop', true)); + } + } + $(grid.hDiv).after(grid.bDiv) + .mousemove(function (e) { + if(grid.resizing){grid.dragMove(e);return false;} + }); + $(".ui-jqgrid-labels",grid.hDiv).bind("selectstart", function () { return false; }); + $(document).bind( "mouseup.jqGrid" + ts.p.id, function () { + if(grid.resizing) { grid.dragEnd( true ); return false;} + return true; + }); + ts.formatCol = formatCol; + ts.sortData = sortData; + ts.updatepager = updatepager; + ts.refreshIndex = refreshIndex; + ts.setHeadCheckBox = setHeadCheckBox; + ts.constructTr = constructTr; + ts.formatter = function ( rowId, cellval , colpos, rwdat, act){return formatter(rowId, cellval , colpos, rwdat, act);}; + $.extend(grid,{populate : populate, emptyRows: emptyRows, beginReq: beginReq, endReq: endReq}); + this.grid = grid; + ts.addXmlData = function(d) {addXmlData( d );}; + ts.addJSONData = function(d) {addJSONData( d );}; + this.grid.cols = this.rows[0].cells; + $(ts).triggerHandler("jqGridInitGrid"); + if ($.isFunction( ts.p.onInitGrid )) { ts.p.onInitGrid.call(ts); } + populate(); + ts.p.hiddengrid=false; + if(ts.p.responsive) { + var supportsOrientationChange = "onorientationchange" in window, + orientationEvent = supportsOrientationChange ? "orientationchange" : "resize"; + $(window).on( orientationEvent, function(){ + $(ts).jqGrid('resizeGrid'); + }); + } + }); +}; +$.jgrid.extend({ + getGridParam : function(name, module) { + var $t = this[0], ret; + if (!$t || !$t.grid) {return;} + if(module === undefined && typeof module !== 'string') { + module = 'jqGrid'; //$t.p + } + ret = $t.p; + if(module !== 'jqGrid') { + try { + ret = $($t).data( module ); + } catch (e) { + ret = $t.p; + } + } + if (!name) { return ret; } + return ret[name] !== undefined ? ret[name] : null; + }, + setGridParam : function (newParams, overwrite){ + return this.each(function(){ + if(overwrite == null) { + overwrite = false; + } + if (this.grid && typeof newParams === 'object') { + if(overwrite === true) { + var params = $.extend({}, this.p, newParams); + this.p = params; + } else { + $.extend(true,this.p,newParams); + } + } + }); + }, + getGridRowById: function ( rowid ) { + var row; + this.each( function(){ + try { + //row = this.rows.namedItem( rowid ); + var i = this.rows.length; + while(i--) { + if( rowid.toString() === this.rows[i].id) { + row = this.rows[i]; + break; + } + } + } catch ( e ) { + row = $(this.grid.bDiv).find( "#" + $.jgrid.jqID( rowid )); + } + }); + return row; + }, + getDataIDs : function () { + var ids=[], i=0, len, j=0; + this.each(function(){ + len = this.rows.length; + if(len && len>0){ + while(i -1 ) { return; } + function scrGrid(iR){ + var ch = $($t.grid.bDiv)[0].clientHeight, + st = $($t.grid.bDiv)[0].scrollTop, + rpos = $($t.rows[iR]).position().top, + rh = $t.rows[iR].clientHeight; + if(rpos+rh >= ch+st) { $($t.grid.bDiv)[0].scrollTop = rpos-(ch+st)+rh+st; } + else if(rpos < ch+st) { + if(rpos < st) { + $($t.grid.bDiv)[0].scrollTop = rpos; + } + } + } + if($t.p.scrollrows===true) { + ner = $($t).jqGrid('getGridRowById',selection).rowIndex; + if(ner >=0 ){ + scrGrid(ner); + } + } + if($t.p.frozenColumns === true ) { + fid = $t.p.id+"_frozen"; + } + if(!$t.p.multiselect) { + if(pt.className !== "ui-subgrid") { + if( $t.p.selrow !== pt.id ) { + csr = $($t).jqGrid('getGridRowById', $t.p.selrow); + if( csr ) { + $( csr ).removeClass(highlight).attr({"aria-selected":"false", "tabindex" : "-1"}); + } + $(pt).addClass(highlight).attr({"aria-selected":"true", "tabindex" : "0"});//.focus(); + if(fid) { + $("#"+$.jgrid.jqID($t.p.selrow), "#"+$.jgrid.jqID(fid)).removeClass(highlight); + $("#"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid)).addClass(highlight); + } + stat = true; + } else { + stat = false; + } + $t.p.selrow = pt.id; + if( onsr ) { + $($t).triggerHandler("jqGridSelectRow", [pt.id, stat, e]); + if( $t.p.onSelectRow) { $t.p.onSelectRow.call($t, pt.id, stat, e); } + } + } + } else { + //unselect selectall checkbox when deselecting a specific row + $t.setHeadCheckBox( false ); + $t.p.selrow = pt.id; + ia = $.inArray($t.p.selrow,$t.p.selarrrow); + if ( ia === -1 ){ + if(pt.className !== "ui-subgrid") { $(pt).addClass(highlight).attr("aria-selected","true");} + stat = true; + $t.p.selarrrow.push($t.p.selrow); + } else { + if(pt.className !== "ui-subgrid") { $(pt).removeClass(highlight).attr("aria-selected","false");} + stat = false; + $t.p.selarrrow.splice(ia,1); + tpsr = $t.p.selarrrow[0]; + $t.p.selrow = (tpsr === undefined) ? null : tpsr; + } + $("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(pt.id))[$t.p.useProp ? 'prop': 'attr']("checked",stat); + if(fid) { + if(ia === -1) { + $("#"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid)).addClass(highlight); + } else { + $("#"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid)).removeClass(highlight); + } + $("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid))[$t.p.useProp ? 'prop': 'attr']("checked",stat); + } + if( onsr ) { + $($t).triggerHandler("jqGridSelectRow", [pt.id, stat, e]); + if( $t.p.onSelectRow) { $t.p.onSelectRow.call($t, pt.id , stat, e); } + } + } + }); + }, + resetSelection : function( rowid ){ + return this.each(function(){ + var t = this, sr, fid, + getstyle = $.jgrid.getMethod("getStyleUI"), + highlight = getstyle(t.p.styleUI+'.common','highlight', true), + hover = getstyle(t.p.styleUI+'.common','hover', true); + if( t.p.frozenColumns === true ) { + fid = t.p.id+"_frozen"; + } + if(rowid !== undefined ) { + sr = rowid === t.p.selrow ? t.p.selrow : rowid; + $("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(sr)).removeClass( highlight ).attr("aria-selected","false"); + if (fid) { $("#"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(fid)).removeClass( highlight ); } + if(t.p.multiselect) { + $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(t.p.id))[t.p.useProp ? 'prop': 'attr']("checked",false); + if(fid) { $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(fid))[t.p.useProp ? 'prop': 'attr']("checked",false); } + t.setHeadCheckBox( false); + var ia = $.inArray($.jgrid.jqID(sr), t.p.selarrrow); + if ( ia !== -1 ){ + t.p.selarrrow.splice(ia,1); + } + } + if( t.p.onUnSelectRow) { t.p.onUnSelectRow.call(t, sr ); } + sr = null; + } else if(!t.p.multiselect) { + if(t.p.selrow) { + $("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(t.p.selrow)).removeClass( highlight ).attr("aria-selected","false"); + if(fid) { $("#"+$.jgrid.jqID(t.p.selrow), "#"+$.jgrid.jqID(fid)).removeClass( highlight ); } + if( t.p.onUnSelectRow) { t.p.onUnSelectRow.call(t, t.p.selrow ); } + t.p.selrow = null; + } + } else { + $(t.p.selarrrow).each(function(i,n){ + $( $(t).jqGrid('getGridRowById',n) ).removeClass( highlight ).attr("aria-selected","false"); + $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(n))[t.p.useProp ? 'prop': 'attr']("checked",false); + if(fid) { + $("#"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(fid)).removeClass( highlight ); + $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(fid))[t.p.useProp ? 'prop': 'attr']("checked",false); + } + if( t.p.onUnSelectRow) { t.p.onUnSelectRow.call(t, n); } + }); + t.setHeadCheckBox( false ); + t.p.selarrrow = []; + t.p.selrow = null; + } + if(t.p.cellEdit === true) { + if(parseInt(t.p.iCol,10)>=0 && parseInt(t.p.iRow,10)>=0) { + $("td:eq("+t.p.iCol+")",t.rows[t.p.iRow]).removeClass("edit-cell " + highlight ); + $(t.rows[t.p.iRow]).removeClass("selected-row " + hover ); + } + } + t.p.savedRow = []; + }); + }, + getRowData : function( rowid, usedata ) { + var res = {}, resall, getall=false, len, j=0; + this.each(function(){ + var $t = this,nm,ind; + if(rowid == null) { + getall = true; + resall = []; + len = $t.rows.length; + } else { + ind = $($t).jqGrid('getGridRowById', rowid); + if(!ind) { return res; } + len = 2; + } + if( !(usedata && usedata === true && $t.p.data.length > 0) ) { + usedata = false; + } + while(j 0) { + $t.p.selrow = $t.p.selarrrow[$t.p.selarrrow.length-1]; + } else { + if( $t.p.selrow === rowid ) { + $t.p.selrow = null; + } + } + if($t.p.datatype === 'local') { + var id = $.jgrid.stripPref($t.p.idPrefix, rowid), + pos = $t.p._index[id]; + if(pos !== undefined) { + $t.p.data.splice(pos,1); + $t.refreshIndex(); + } + } + if( $t.p.altRows === true && success ) { + var cn = $t.p.altclass; + $($t.rows).each(function(i){ + if(i % 2 === 1) { $(this).addClass(cn); } + else { $(this).removeClass(cn); } + }); + } + }); + return success; + }, + setRowData : function(rowid, data, cssp) { + var nm, success=true, title; + this.each(function(){ + if(!this.grid) {return false;} + var t = this, vl, ind, cp = typeof cssp, lcdata={}; + ind = $(this).jqGrid('getGridRowById', rowid); + if(!ind) { return false; } + if( data ) { + try { + $(this.p.colModel).each(function(i){ + nm = this.name; + var dval =$.jgrid.getAccessor(data,nm); + if( dval !== undefined) { + lcdata[nm] = this.formatter && typeof this.formatter === 'string' && this.formatter === 'date' ? $.unformat.date.call(t,dval,this) : dval; + vl = t.formatter( rowid, lcdata[nm], i, data, 'edit'); + title = this.title ? {"title":$.jgrid.stripHtml(vl)} : {}; + if(t.p.treeGrid===true && nm === t.p.ExpandColumn) { + $("td[role='gridcell']:eq("+i+") > span:first",ind).html(vl).attr(title); + } else { + $("td[role='gridcell']:eq("+i+")",ind).html(vl).attr(title); + } + } + }); + if(t.p.datatype === 'local') { + var id = $.jgrid.stripPref(t.p.idPrefix, rowid), + pos = t.p._index[id], key; + if(t.p.treeGrid) { + for(key in t.p.treeReader){ + if(t.p.treeReader.hasOwnProperty(key)) { + delete lcdata[t.p.treeReader[key]]; + } + } + } + if(pos !== undefined) { + t.p.data[pos] = $.extend(true, t.p.data[pos], lcdata); + } + lcdata = null; + } + } catch (e) { + success = false; + } + } + if(success) { + if(cp === 'string') {$(ind).addClass(cssp);} else if(cssp !== null && cp === 'object') {$(ind).css(cssp);} + $(t).triggerHandler("jqGridAfterGridComplete"); + } + }); + return success; + }, + addRowData : function(rowid,rdata,pos,src) { + if($.inArray( pos, ["first", "last", "before", "after"] ) === -1) {pos = "last";} + var success = false, nm, row, rnc="", msc="", gi, si, ni,sind, i, v, prp="", aradd, cnm, cn, data, cm, id; + if(rdata) { + if($.isArray(rdata)) { + aradd=true; + //pos = "last"; + cnm = rowid; + } else { + rdata = [rdata]; + aradd = false; + } + this.each(function() { + var t = this, datalen = rdata.length; + ni = t.p.rownumbers===true ? 1 :0; + gi = t.p.multiselect ===true ? 1 :0; + si = t.p.subGrid===true ? 1 :0; + if(!aradd) { + if(rowid !== undefined) { rowid = String(rowid);} + else { + rowid = $.jgrid.randId(); + if(t.p.keyName !== false) { + cnm = t.p.keyName; + if(rdata[0][cnm] !== undefined) { rowid = rdata[0][cnm]; } + } + } + } + cn = t.p.altclass; + var k = 0, cna = $(t).jqGrid('getStyleUI',t.p.styleUI+".base",'rowBox', true, 'jqgrow ui-row-'+ t.p.direction), lcdata = {}, classes, + air = $.isFunction(t.p.afterInsertRow) ? true : false; + if(ni) { + rnc = $(t).jqGrid('getStyleUI',t.p.styleUI+".base",'rownumBox', false, 'jqgrid-rownum'); + } + if(gi) { + msc = $(t).jqGrid('getStyleUI',t.p.styleUI+".base",'multiBox', false, 'cbox'); + } + while(k < datalen) { + data = rdata[k]; + row=[]; + classes = cna; + if(aradd) { + try { + rowid = data[cnm]; + if(rowid===undefined) { + rowid = $.jgrid.randId(); + } + } + catch (e) {rowid = $.jgrid.randId();} + classes += (t.p.altRows === true ? (t.rows.length-1)%2 === 0 ? " " + cn : "" : ""); + } + id = rowid; + rowid = t.p.idPrefix + rowid; + if(ni){ + prp = t.formatCol(0,1,'',null,rowid, true); + row[row.length] = "0"; + } + if(gi) { + v = ""; + prp = t.formatCol(ni,1,'', null, rowid, true); + row[row.length] = ""+v+""; + } + if(si) { + row[row.length] = $(t).jqGrid("addSubGridCell",gi+ni,1); + } + for(i = gi+si+ni; i < t.p.colModel.length;i++){ + cm = t.p.colModel[i]; + nm = cm.name; + lcdata[nm] = data[nm]; + v = t.formatter( rowid, $.jgrid.getAccessor(data,nm), i, data ); + prp = t.formatCol(i,1,v, data, rowid, lcdata); + row[row.length] = ""+v+""; + } + row.unshift( t.constructTr(rowid, false, classes, lcdata, data ) ); + row[row.length] = ""; + if(t.rows.length === 0){ + $("table:first",t.grid.bDiv).append(row.join('')); + } else { + switch (pos) { + case 'last': + $(t.rows[t.rows.length-1]).after(row.join('')); + sind = t.rows.length-1; + break; + case 'first': + $(t.rows[0]).after(row.join('')); + sind = 1; + break; + case 'after': + sind = $(t).jqGrid('getGridRowById', src); + if (sind) { + if($(t.rows[sind.rowIndex+1]).hasClass("ui-subgrid")) { $(t.rows[sind.rowIndex+1]).after(row); } + else { $(sind).after(row.join('')); } + sind=sind.rowIndex + 1; + } + break; + case 'before': + sind = $(t).jqGrid('getGridRowById', src); + if(sind) { + $(sind).before(row.join('')); + sind=sind.rowIndex - 1; + } + break; + } + } + if(t.p.subGrid===true) { + $(t).jqGrid("addSubGrid",gi+ni, sind); + } + t.p.records++; + t.p.reccount++; + $(t).triggerHandler("jqGridAfterInsertRow", [rowid,data,data]); + if(air) { t.p.afterInsertRow.call(t,rowid,data,data); } + k++; + if(t.p.datatype === 'local') { + lcdata[t.p.localReader.id] = id; + t.p._index[id] = t.p.data.length; + t.p.data.push(lcdata); + lcdata = {}; + } + } + if( t.p.altRows === true && !aradd) { + if (pos === "last") { + if ((t.rows.length-1)%2 === 0) {$(t.rows[t.rows.length-1]).addClass(cn);} + } else { + $(t.rows).each(function(i){ + if(i % 2 ===0) { $(this).addClass(cn); } + else { $(this).removeClass(cn); } + }); + } + } + t.updatepager(true,true); + success = true; + }); + } + return success; + }, + footerData : function(action,data, format) { + var nm, success=false, res={}, title; + function isEmpty(obj) { + var i; + for(i in obj) { + if (obj.hasOwnProperty(i)) { return false; } + } + return true; + } + if(action === undefined) { action = "get"; } + if(typeof format !== "boolean") { format = true; } + action = action.toLowerCase(); + this.each(function(){ + var t = this, vl; + if(!t.grid || !t.p.footerrow) {return false;} + if(action === "set") { if(isEmpty(data)) { return false; } } + success=true; + $(this.p.colModel).each(function(i){ + nm = this.name; + if(action === "set") { + if( data[nm] !== undefined) { + vl = format ? t.formatter( "", data[nm], i, data, 'edit') : data[nm]; + title = this.title ? {"title":$.jgrid.stripHtml(vl)} : {}; + $("tr.footrow td:eq("+i+")",t.grid.sDiv).html(vl).attr(title); + success = true; + } + } else if(action === "get") { + res[nm] = $("tr.footrow td:eq("+i+")",t.grid.sDiv).html(); + } + }); + }); + return action === "get" ? res : success; + }, + showHideCol : function(colname,show) { + return this.each(function() { + var $t = this, fndh=false, brd=$.jgrid.cell_width ? 0: $t.p.cellLayout, cw; + if (!$t.grid ) {return;} + if( typeof colname === 'string') {colname=[colname];} + show = show !== "none" ? "" : "none"; + var sw = show === "" ? true :false, + gh = $t.p.groupHeader && ($.isArray($t.p.groupHeader) || $.isFunction($t.p.groupHeader) ); + if(gh) { $($t).jqGrid('destroyGroupHeader', false); } + $(this.p.colModel).each(function(i) { + if ($.inArray(this.name,colname) !== -1 && this.hidden === sw) { + if($t.p.frozenColumns === true && this.frozen === true) { + return true; + } + $("tr[role=row]",$t.grid.hDiv).each(function(){ + $(this.cells[i]).css("display", show); + }); + $($t.rows).each(function(){ + if (!$(this).hasClass("jqgroup")) { + $(this.cells[i]).css("display", show); + } + }); + if($t.p.footerrow) { $("tr.footrow td:eq("+i+")", $t.grid.sDiv).css("display", show); } + cw = parseInt(this.width,10); + if(show === "none") { + $t.p.tblwidth -= cw+brd; + } else { + $t.p.tblwidth += cw+brd; + } + this.hidden = !sw; + fndh=true; + $($t).triggerHandler("jqGridShowHideCol", [sw,this.name,i]); + } + }); + if(fndh===true) { + if($t.p.shrinkToFit === true && !isNaN($t.p.height)) { $t.p.tblwidth += parseInt($t.p.scrollOffset,10);} + $($t).jqGrid("setGridWidth",$t.p.shrinkToFit === true ? $t.p.tblwidth : $t.p.width ); + } + if( gh ) { + var gHead = $.extend([],$t.p.groupHeader); + $t.p.groupHeader = null; + for(var k =0; k < gHead.length; k++) { + $($t).jqGrid('setGroupHeaders', gHead[k]); + } + } + }); + }, + hideCol : function (colname) { + return this.each(function(){$(this).jqGrid("showHideCol",colname,"none");}); + }, + showCol : function(colname) { + return this.each(function(){$(this).jqGrid("showHideCol",colname,"");}); + }, + remapColumns : function(permutation, updateCells, keepHeader) { + function resortArray(a) { + var ac; + if (a.length) { + ac = $.makeArray(a); + } else { + ac = $.extend({}, a); + } + $.each(permutation, function(i) { + a[i] = ac[this]; + }); + } + var ts = this.get(0); + function resortRows(parent, clobj) { + $(">tr"+(clobj||""), parent).each(function() { + var row = this; + var elems = $.makeArray(row.cells); + $.each(permutation, function() { + var e = elems[this]; + if (e) { + row.appendChild(e); + } + }); + }); + } + resortArray(ts.p.colModel); + resortArray(ts.p.colNames); + resortArray(ts.grid.headers); + resortRows($("thead:first", ts.grid.hDiv), keepHeader && ":not(.ui-jqgrid-labels)"); + if (updateCells) { + resortRows($("#"+$.jgrid.jqID(ts.p.id)+" tbody:first"), ".jqgfirstrow, tr.jqgrow, tr.jqfoot"); + } + if (ts.p.footerrow) { + resortRows($("tbody:first", ts.grid.sDiv)); + } + if (ts.p.remapColumns) { + if (!ts.p.remapColumns.length){ + ts.p.remapColumns = $.makeArray(permutation); + } else { + resortArray(ts.p.remapColumns); + } + } + ts.p.lastsort = $.inArray(ts.p.lastsort, permutation); + if(ts.p.treeGrid) { ts.p.expColInd = $.inArray(ts.p.expColInd, permutation); } + $(ts).triggerHandler("jqGridRemapColumns", [permutation, updateCells, keepHeader]); + }, + setGridWidth : function(nwidth, shrink) { + return this.each(function(){ + if (!this.grid ) {return;} + var $t = this, cw, + initwidth = 0, brd=$.jgrid.cell_width ? 0: $t.p.cellLayout, lvc, vc=0, hs=false, scw=$t.p.scrollOffset, aw, gw=0, cr; + if(typeof shrink !== 'boolean') { + shrink=$t.p.shrinkToFit; + } + if(isNaN(nwidth)) {return;} + nwidth = parseInt(nwidth,10); + $t.grid.width = $t.p.width = nwidth; + $("#gbox_"+$.jgrid.jqID($t.p.id)).css("width",nwidth+"px"); + $("#gview_"+$.jgrid.jqID($t.p.id)).css("width",nwidth+"px"); + $($t.grid.bDiv).css("width",nwidth +"px"); + $($t.grid.hDiv).css("width",nwidth+"px"); + if($t.p.pager ) { + $($t.p.pager).css("width",nwidth+"px"); + } + if($t.p.toppager ) { + $($t.p.toppager).css("width",nwidth+"px"); + } + if($t.p.toolbar[0] === true){ + $($t.grid.uDiv).css("width",nwidth+"px"); + if($t.p.toolbar[1]==="both") {$($t.grid.ubDiv).css("width",nwidth+"px");} + } + if($t.p.footerrow) { + $($t.grid.sDiv).css("width",nwidth+"px"); + } + if(shrink ===false && $t.p.forceFit === true) {$t.p.forceFit=false;} + if(shrink===true) { + $.each($t.p.colModel, function() { + if(this.hidden===false){ + cw = this.widthOrg; + initwidth += cw+brd; + if(this.fixed) { + gw += cw+brd; + } else { + vc++; + } + } + }); + if(vc === 0) { return; } + $t.p.tblwidth = initwidth; + aw = nwidth-brd*vc-gw; + if(!isNaN($t.p.height)) { + if($($t.grid.bDiv)[0].clientHeight < $($t.grid.bDiv)[0].scrollHeight || $t.rows.length === 1){ + hs = true; + aw -= scw; + } + } + initwidth =0; + var cle = $t.grid.cols.length >0; + $.each($t.p.colModel, function(i) { + if(this.hidden === false && !this.fixed){ + cw = this.widthOrg; + cw = Math.round(aw*cw/($t.p.tblwidth-brd*vc-gw)); + if (cw < 0) { return; } + this.width =cw; + initwidth += cw; + $t.grid.headers[i].width=cw; + $t.grid.headers[i].el.style.width=cw+"px"; + if($t.p.footerrow) { $t.grid.footers[i].style.width = cw+"px"; } + if(cle) { $t.grid.cols[i].style.width = cw+"px"; } + lvc = i; + } + }); + + if (!lvc) { return; } + + cr =0; + if (hs) { + if(nwidth-gw-(initwidth+brd*vc) !== scw){ + cr = nwidth-gw-(initwidth+brd*vc)-scw; + } + } else if( Math.abs(nwidth-gw-(initwidth+brd*vc)) !== 1) { + cr = nwidth-gw-(initwidth+brd*vc); + } + $t.p.colModel[lvc].width += cr; + $t.p.tblwidth = initwidth+cr+brd*vc+gw; + if($t.p.tblwidth > nwidth) { + var delta = $t.p.tblwidth - parseInt(nwidth,10); + $t.p.tblwidth = nwidth; + cw = $t.p.colModel[lvc].width = $t.p.colModel[lvc].width-delta; + } else { + cw= $t.p.colModel[lvc].width; + } + $t.grid.headers[lvc].width = cw; + $t.grid.headers[lvc].el.style.width=cw+"px"; + if(cle) { $t.grid.cols[lvc].style.width = cw+"px"; } + if($t.p.footerrow) { + $t.grid.footers[lvc].style.width = cw+"px"; + } + } + if($t.p.tblwidth) { + $('table:first',$t.grid.bDiv).css("width",$t.p.tblwidth+"px"); + $('table:first',$t.grid.hDiv).css("width",$t.p.tblwidth+"px"); + $t.grid.hDiv.scrollLeft = $t.grid.bDiv.scrollLeft; + if($t.p.footerrow) { + $('table:first',$t.grid.sDiv).css("width",$t.p.tblwidth+"px"); + } + } + }); + }, + setGridHeight : function (nh) { + return this.each(function (){ + var $t = this; + if(!$t.grid) {return;} + var bDiv = $($t.grid.bDiv); + bDiv.css({height: nh+(isNaN(nh)?"":"px")}); + if($t.p.frozenColumns === true){ + //follow the original set height to use 16, better scrollbar width detection + $('#'+$.jgrid.jqID($t.p.id)+"_frozen").parent().height(bDiv.height() - 16); + } + $t.p.height = nh; + if ($t.p.scroll) { $t.grid.populateVisible(); } + }); + }, + setCaption : function (newcap){ + return this.each(function(){ + var ctop = $(this).jqGrid('getStyleUI',this.p.styleUI+".common",'cornertop', true); + this.p.caption=newcap; + $(".ui-jqgrid-title, .ui-jqgrid-title-rtl",this.grid.cDiv).html(newcap); + $(this.grid.cDiv).show(); + $(this.grid.hDiv).removeClass(ctop); + }); + }, + setLabel : function(colname, nData, prop, attrp ){ + return this.each(function(){ + var $t = this, pos=-1; + if(!$t.grid) {return;} + if(colname != null) { + if(isNaN(colname)) { + $($t.p.colModel).each(function(i){ + if (this.name === colname) { + pos = i;return false; + } + }); + } else { + pos = parseInt(colname,10); + } + } else { return; } + if(pos>=0) { + var thecol = $("tr.ui-jqgrid-labels th:eq("+pos+")",$t.grid.hDiv); + if (nData){ + var ico = $(".s-ico",thecol); + $("[id^=jqgh_]",thecol).empty().html(nData).append(ico); + $t.p.colNames[pos] = nData; + } + if (prop) { + if(typeof prop === 'string') {$(thecol).addClass(prop);} else {$(thecol).css(prop);} + } + if(typeof attrp === 'object') {$(thecol).attr(attrp);} + } + }); + }, + setCell : function(rowid,colname,nData,cssp,attrp, forceupd) { + return this.each(function(){ + var $t = this, pos =-1,v, title; + if(!$t.grid) {return;} + if(isNaN(colname)) { + $($t.p.colModel).each(function(i){ + if (this.name === colname) { + pos = i;return false; + } + }); + } else {pos = parseInt(colname,10);} + if(pos>=0) { + var ind = $($t).jqGrid('getGridRowById', rowid); + if (ind){ + var tcell = $("td:eq("+pos+")",ind), cl=0, rawdat=[]; + if(nData !== "" || forceupd === true ) { + if(ind.cells !== undefined) { + while(cl0) { + $("span",$(tcell)).html(v).attr(title); + } else { + $(tcell).html(v).attr(title); + } + if($t.p.datatype === "local") { + var cm = $t.p.colModel[pos], index; + nData = cm.formatter && typeof cm.formatter === 'string' && cm.formatter === 'date' ? $.unformat.date.call($t,nData,cm) : nData; + index = $t.p._index[$.jgrid.stripPref($t.p.idPrefix, rowid)]; + if(index !== undefined) { + $t.p.data[index][cm.name] = nData; + } + } + } + if(typeof cssp === 'string'){ + $(tcell).addClass(cssp); + } else if(cssp) { + $(tcell).css(cssp); + } + if(typeof attrp === 'object') {$(tcell).attr(attrp);} + } + } + }); + }, + getCell : function(rowid,col) { + var ret = false; + this.each(function(){ + var $t=this, pos=-1; + if(!$t.grid) {return;} + if(isNaN(col)) { + $($t.p.colModel).each(function(i){ + if (this.name === col) { + pos = i;return false; + } + }); + } else {pos = parseInt(col,10);} + if(pos>=0) { + var ind = $($t).jqGrid('getGridRowById', rowid); + if(ind) { + try { + ret = $.unformat.call($t,$("td:eq("+pos+")",ind),{rowId:ind.id, colModel:$t.p.colModel[pos]},pos); + } catch (e){ + ret = $.jgrid.htmlDecode($("td:eq("+pos+")",ind).html()); + } + } + } + }); + return ret; + }, + getCol : function (col, obj, mathopr) { + var ret = [], val, sum=0, min, max, v; + obj = typeof obj !== 'boolean' ? false : obj; + if(mathopr === undefined) { mathopr = false; } + this.each(function(){ + var $t=this, pos=-1; + if(!$t.grid) {return;} + if(isNaN(col)) { + $($t.p.colModel).each(function(i){ + if (this.name === col) { + pos = i;return false; + } + }); + } else {pos = parseInt(col,10);} + if(pos>=0) { + var ln = $t.rows.length, i =0, dlen=0; + if (ln && ln>0){ + while(i= 0 ) { + ret = this.p.data[ind]; + } + } + }); + return ret; + }, + progressBar : function ( p ) { + p = $.extend({ + htmlcontent : "", + method : "hide", + loadtype : "disable" + }, p || {}); + return this.each(function(){ + var sh = p.method==="show" ? true : false, + loadDiv = $("#load_"+$.jgrid.jqID(this.p.id)), + offsetParent, top, + scrollTop = $(window).scrollTop(); + if(p.htmlcontent !== "") { + loadDiv.html( p.htmlcontent ); + } + switch(p.loadtype) { + case "disable": + break; + case "enable": + loadDiv.toggle( sh ); + break; + case "block": + $("#lui_"+$.jgrid.jqID(this.p.id)).toggle( sh ); + loadDiv.toggle( sh ); + break; + } + if (loadDiv.is(':visible')) { + offsetParent = loadDiv.offsetParent(); + loadDiv.css('top', ''); + if (loadDiv.offset().top < scrollTop) { + top = Math.min( + 10 + scrollTop - offsetParent.offset().top, + offsetParent.height() - loadDiv.height() + ); + loadDiv.css('top', top + 'px'); + } + } + }); + }, + getColProp : function(colname){ + var ret ={}, $t = this[0]; + if ( !$t.grid ) { return false; } + var cM = $t.p.colModel, i; + for ( i=0;i=0 && frozen) { + var top = $t.p.caption ? $($t.grid.cDiv).outerHeight() : 0, + hth = $(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID($t.p.id)).height(); + //headers + if($t.p.toppager) { + top = top + $($t.grid.topDiv).outerHeight(); + } + if($t.p.toolbar[0] === true) { + if($t.p.toolbar[1] !== "bottom") { + top = top + $($t.grid.uDiv).outerHeight(); + } + } + $t.grid.fhDiv = $('
'); + $t.grid.fbDiv = $('
'); + $("#gview_"+$.jgrid.jqID($t.p.id)).append($t.grid.fhDiv); + var htbl = $(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID($t.p.id)).clone(true); + // groupheader support - only if useColSpanstyle is false + if($t.p.groupHeader) { + $("tr.jqg-first-row-header, tr.jqg-third-row-header", htbl).each(function(){ + $("th:gt("+maxfrozen+")",this).remove(); + }); + var swapfroz = -1, fdel = -1, cs, rs; + $("tr.jqg-second-row-header th", htbl).each(function(){ + cs= parseInt($(this).attr("colspan"),10); + rs= parseInt($(this).attr("rowspan"),10); + if(rs) { + swapfroz++; + fdel++; + } + if(cs) { + swapfroz = swapfroz+cs; + fdel++; + } + if(swapfroz === maxfrozen) { + fdel = maxfrozen; + return false; + } + }); + if(swapfroz !== maxfrozen) { + fdel = maxfrozen; + } + $("tr.jqg-second-row-header", htbl).each(function(){ + $("th:gt("+fdel+")",this).remove(); + }); + } else { + $("tr",htbl).each(function(){ + $("th:gt("+maxfrozen+")",this).remove(); + }); + } + $(htbl).width(1).css("height","100%"); + // resizing stuff + $($t.grid.fhDiv).append(htbl) + .mousemove(function (e) { + if($t.grid.resizing){ $t.grid.dragMove(e);return false; } + }); + if($t.p.footerrow) { + var hbd = $(".ui-jqgrid-bdiv","#gview_"+$.jgrid.jqID($t.p.id)).height(); + + $t.grid.fsDiv = $('
'); + $("#gview_"+$.jgrid.jqID($t.p.id)).append($t.grid.fsDiv); + var ftbl = $(".ui-jqgrid-ftable","#gview_"+$.jgrid.jqID($t.p.id)).clone(true); + $("tr",ftbl).each(function(){ + $("td:gt("+maxfrozen+")",this).remove(); + }); + $(ftbl).width(1); + $($t.grid.fsDiv).append(ftbl); + } + $($t).bind('jqGridResizeStop.setFrozenColumns', function (e, w, index) { + var rhth = $(".ui-jqgrid-htable",$t.grid.fhDiv); + $("th:eq("+index+")",rhth).width( w ); + var btd = $(".ui-jqgrid-btable",$t.grid.fbDiv); + $("tr:first td:eq("+index+")",btd).width( w ); + if($t.p.footerrow) { + var ftd = $(".ui-jqgrid-ftable",$t.grid.fsDiv); + $("tr:first td:eq("+index+")",ftd).width( w ); + } + }); + + // data stuff + //TODO support for setRowData + $("#gview_"+$.jgrid.jqID($t.p.id)).append($t.grid.fbDiv); + + $($t.grid.fbDiv).bind('mousewheel DOMMouseScroll', function (e) { + var st = $($t.grid.bDiv).scrollTop(); + if (e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) { + //up + $($t.grid.bDiv).scrollTop( st - 25 ); + } else { + //down + $($t.grid.bDiv).scrollTop( st + 25 ); + } + e.preventDefault(); + }); + + if($t.p.hoverrows === true) { + $("#"+$.jgrid.jqID($t.p.id)).unbind('mouseover').unbind('mouseout'); + } + $($t).bind('jqGridAfterGridComplete.setFrozenColumns', function () { + $("#"+$.jgrid.jqID($t.p.id)+"_frozen").remove(); + $($t.grid.fbDiv).height($($t.grid.bDiv).height()-16); + var btbl = $("#"+$.jgrid.jqID($t.p.id)).clone(true); + $("tr[role=row]",btbl).each(function(){ + $("td[role=gridcell]:gt("+maxfrozen+")",this).remove(); + }); + + $(btbl).width(1).attr("id",$t.p.id+"_frozen"); + $($t.grid.fbDiv).append(btbl); + if($t.p.hoverrows === true) { + $("tr.jqgrow", btbl).hover( + function(){ $(this).addClass( hover ); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).addClass( hover ); }, + function(){ $(this).removeClass( hover ); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).removeClass( hover ); } + ); + $("tr.jqgrow", "#"+$.jgrid.jqID($t.p.id)).hover( + function(){ $(this).addClass( hover ); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)+"_frozen").addClass( hover );}, + function(){ $(this).removeClass( hover ); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)+"_frozen").removeClass( hover ); } + ); + } + btbl=null; + }); + if(!$t.grid.hDiv.loading) { + $($t).triggerHandler("jqGridAfterGridComplete"); + } + $t.p.frozenColumns = true; + } + }); + }, + destroyFrozenColumns : function() { + return this.each(function() { + if ( !this.grid ) {return;} + if(this.p.frozenColumns === true) { + var $t = this, + hover = $($t).jqGrid('getStyleUI',$t.p.styleUI+".common",'hover', true); + $($t.grid.fhDiv).remove(); + $($t.grid.fbDiv).remove(); + $t.grid.fhDiv = null; $t.grid.fbDiv=null; + if($t.p.footerrow) { + $($t.grid.fsDiv).remove(); + $t.grid.fsDiv = null; + } + $(this).unbind('.setFrozenColumns'); + if($t.p.hoverrows === true) { + var ptr; + $("#"+$.jgrid.jqID($t.p.id)).bind('mouseover',function(e) { + ptr = $(e.target).closest("tr.jqgrow"); + if($(ptr).attr("class") !== "ui-subgrid") { + $(ptr).addClass( hover ); + } + }).bind('mouseout',function(e) { + ptr = $(e.target).closest("tr.jqgrow"); + $(ptr).removeClass( hover ); + }); + } + this.p.frozenColumns = false; + } + }); + }, + resizeColumn : function (iCol, newWidth) { + return this.each(function(){ + var grid = this.grid, p = this.p, cm = p.colModel, i, cmLen = cm.length, diff, diffnv; + if(typeof iCol === "string" ) { + for(i = 0; i < cmLen; i++) { + if(cm[i].name === iCol) { + iCol = i; + break; + } + } + } else { + iCol = parseInt( iCol, 10 ); + } + newWidth = parseInt( newWidth, 10); + // filters + if(typeof iCol !== "number" || iCol < 0 || iCol > cm.length-1 || typeof newWidth !== "number" ) { + return; + } + + if( newWidth < p.minColWidth ) { return; } + + if( p.forceFit ) { + p.nv = 0; + for (i = iCol+1; i < cmLen; i++){ + if(cm[i].hidden !== true ) { + p.nv = i - iCol; + break; + } + } + } + // use resize stuff + grid.resizing = {idx : iCol }; + diff = newWidth - grid.headers[iCol].width; + if(p.forceFit) { + diffnv = grid.headers[ iCol + p.nv].width - diff; + if(diffnv < p.minColWidth) { return; } + grid.headers[ iCol + p.nv].newWidth = grid.headers[ iCol + p.nv].width - diff; + } + grid.newWidth = p.tblwidth + diff; + grid.headers[ iCol ].newWidth = newWidth; + grid.dragEnd( false ); + + }); + }, + getStyleUI : function( styleui, classui, notclasstag, gridclass) { + try { + var ret = "", stylemod = styleui.split("."), q = ""; + if(!notclasstag) { + ret = "class="; + q = "\""; + } + if(gridclass == null) { + gridclass = ""; + } + switch(stylemod.length) { + case 1 : + ret += q + gridclass + " " + $.jgrid.styleUI[stylemod[0]][classui] + q; + break; + case 2 : + ret += q + gridclass + " " + $.jgrid.styleUI[stylemod[0]][stylemod[1]][classui] + q; + } + } catch (cls) { + ret = ""; + } + return $.trim( ret ); + }, + resizeGrid : function (timeout) { + return this.each(function(){ + var $t = this; + if(timeout === undefined) { + timeout = 500; + } + setTimeout(function(){ + var winwidth = $(window).width(), + parentwidth = $("#gbox_"+$.jgrid.jqID($t.p.id)).parent().width(), + ww = $t.p.width; + if( (winwidth-parentwidth) > 3 ) { + ww = parentwidth; + } else { + ww = winwidth; + } + $("#"+$.jgrid.jqID($t.p.id)).jqGrid('setGridWidth', ww); + }, timeout); + }); + } +}); + +//module begin +$.jgrid.extend({ + editCell : function (iRow,iCol, ed){ + return this.each(function (){ + var $t = this, nm, tmp,cc, cm, + highlight = $(this).jqGrid('getStyleUI',$t.p.styleUI+'.common','highlight', true), + + hover = $(this).jqGrid('getStyleUI',$t.p.styleUI+'.common','hover', true), + inpclass = $(this).jqGrid('getStyleUI',$t.p.styleUI+".celledit",'inputClass', true); + + if (!$t.grid || $t.p.cellEdit !== true) {return;} + iCol = parseInt(iCol,10); + // select the row that can be used for other methods + $t.p.selrow = $t.rows[iRow].id; + if (!$t.p.knv) {$($t).jqGrid("GridNav");} + // check to see if we have already edited cell + if ($t.p.savedRow.length>0) { + // prevent second click on that field and enable selects + if (ed===true ) { + if(iRow == $t.p.iRow && iCol == $t.p.iCol){ + return; + } + } + // save the cell + $($t).jqGrid("saveCell",$t.p.savedRow[0].id,$t.p.savedRow[0].ic); + } else { + window.setTimeout(function () { $("#"+$.jgrid.jqID($t.p.knv)).attr("tabindex","-1").focus();},1); + } + cm = $t.p.colModel[iCol]; + nm = cm.name; + if (nm==='subgrid' || nm==='cb' || nm==='rn') {return;} + cc = $("td:eq("+iCol+")",$t.rows[iRow]); + if (cm.editable===true && ed===true && !cc.hasClass("not-editable-cell") && (!$.isFunction($t.p.isCellEditable) || $t.p.isCellEditable.call($t,nm,iRow,iCol))) { + if(parseInt($t.p.iCol,10)>=0 && parseInt($t.p.iRow,10)>=0) { + //$("td:eq("+$t.p.iCol+")",$t.rows[$t.p.iRow]).removeClass("edit-cell " + highlight); + $($t.rows[$t.p.iRow]).removeClass("selected-row " + hover).find("td:eq("+$t.p.iCol+")").removeClass("edit-cell " + highlight); + } + $(cc).addClass("edit-cell " + highlight); + $($t.rows[iRow]).addClass("selected-row " + hover); + try { + tmp = $.unformat.call($t,cc,{rowId: $t.rows[iRow].id, colModel:cm},iCol); + } catch (_) { + tmp = ( cm.edittype && cm.edittype === 'textarea' ) ? $(cc).text() : $(cc).html(); + } + if($t.p.autoencode) { tmp = $.jgrid.htmlDecode(tmp); } + if (!cm.edittype) {cm.edittype = "text";} + $t.p.savedRow.push({id:iRow,ic:iCol,name:nm,v:tmp}); + if(tmp === " " || tmp === " " || (tmp.length===1 && tmp.charCodeAt(0)===160) ) {tmp='';} + if($.isFunction($t.p.formatCell)) { + var tmp2 = $t.p.formatCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol); + if(tmp2 !== undefined ) {tmp = tmp2;} + } + $($t).triggerHandler("jqGridBeforeEditCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]); + if ($.isFunction($t.p.beforeEditCell)) { + $t.p.beforeEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol); + } + var opt = $.extend({}, cm.editoptions || {} ,{id:iRow+"_"+nm,name:nm,rowId: $t.rows[iRow].id, oper:'edit'}); + var elc = $.jgrid.createEl.call($t,cm.edittype,opt,tmp,true,$.extend({},$.jgrid.ajaxOptions,$t.p.ajaxSelectOptions || {})); + if( $.inArray(cm.edittype, ['text','textarea','password','select']) > -1) { + $(elc).addClass(inpclass); + } + + $(cc).html("").append(elc).attr("tabindex","0"); + $.jgrid.bindEv.call($t, elc, opt); + window.setTimeout(function () { $(elc).focus();},1); + $("input, select, textarea",cc).bind("keydown",function(e) { + if (e.keyCode === 27) { + if($("input.hasDatepicker",cc).length >0) { + if( $(".ui-datepicker").is(":hidden") ) { $($t).jqGrid("restoreCell",iRow,iCol); } + else { $("input.hasDatepicker",cc).datepicker('hide'); } + } else { + $($t).jqGrid("restoreCell",iRow,iCol); + } + } //ESC + if (e.keyCode === 13 && !e.shiftKey) { + $($t).jqGrid("saveCell",iRow,iCol); + // Prevent default action + return false; + } //Enter + if (e.keyCode === 9) { + if(!$t.grid.hDiv.loading ) { + if (e.shiftKey) {$($t).jqGrid("prevCell",iRow,iCol);} //Shift TAb + else {$($t).jqGrid("nextCell",iRow,iCol);} //Tab + } else { + return false; + } + } + e.stopPropagation(); + }); + $($t).triggerHandler("jqGridAfterEditCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]); + if ($.isFunction($t.p.afterEditCell)) { + $t.p.afterEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol); + } + } else { + if (parseInt($t.p.iCol,10)>=0 && parseInt($t.p.iRow,10)>=0) { + //$("td:eq("+$t.p.iCol+")",$t.rows[$t.p.iRow]).removeClass("edit-cell " + highlight); + $($t.rows[$t.p.iRow]).removeClass("selected-row " + hover).find("td:eq("+$t.p.iCol+")").removeClass("edit-cell " + highlight); + } + cc.addClass("edit-cell " + highlight); + $($t.rows[iRow]).addClass("selected-row " + hover); + tmp = cc.html().replace(/\ \;/ig,''); + $($t).triggerHandler("jqGridSelectCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]); + if ($.isFunction($t.p.onSelectCell)) { + $t.p.onSelectCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol); + } + } + $t.p.iCol = iCol; $t.p.iRow = iRow; + }); + }, + saveCell : function (iRow, iCol){ + return this.each(function(){ + var $t= this, fr, + errors = $.jgrid.getRegional(this, 'errors'), + edit =$.jgrid.getRegional(this, 'edit'); + if (!$t.grid || $t.p.cellEdit !== true) {return;} + if ( $t.p.savedRow.length >= 1) {fr = 0;} else {fr=null;} + if(fr !== null) { + var cc = $("td:eq("+iCol+")",$t.rows[iRow]),v,v2, + cm = $t.p.colModel[iCol], nm = cm.name, nmjq = $.jgrid.jqID(nm), + p = $(cc).offset(); + + switch (cm.edittype) { + case "select": + if(!cm.editoptions.multiple) { + v = $("#"+iRow+"_"+nmjq+" option:selected",$t.rows[iRow]).val(); + v2 = $("#"+iRow+"_"+nmjq+" option:selected",$t.rows[iRow]).text(); + } else { + var sel = $("#"+iRow+"_"+nmjq,$t.rows[iRow]), selectedText = []; + v = $(sel).val(); + if(v) { v.join(",");} else { v=""; } + $("option:selected",sel).each( + function(i,selected){ + selectedText[i] = $(selected).text(); + } + ); + v2 = selectedText.join(","); + } + if(cm.formatter) { v2 = v; } + break; + case "checkbox": + var cbv = ["Yes","No"]; + if(cm.editoptions){ + cbv = cm.editoptions.value.split(":"); + } + v = $("#"+iRow+"_"+nmjq,$t.rows[iRow]).is(":checked") ? cbv[0] : cbv[1]; + v2=v; + break; + case "password": + case "text": + case "textarea": + case "button" : + v = $("#"+iRow+"_"+nmjq,$t.rows[iRow]).val(); + v2=v; + break; + case 'custom' : + try { + if(cm.editoptions && $.isFunction(cm.editoptions.custom_value)) { + v = cm.editoptions.custom_value.call($t, $(".customelement",cc),'get'); + if (v===undefined) { throw "e2";} else { v2=v; } + } else { throw "e1"; } + } catch (e) { + if (e==="e1") { $.jgrid.info_dialog(errors.errcap, "function 'custom_value' " + edit.msg.nodefined, edit.bClose, {styleUI : $t.p.styleUI }); } + else if (e==="e2") { $.jgrid.info_dialog(errors.errcap, "function 'custom_value' " + edit.msg.novalue, edit.bClose, {styleUI : $t.p.styleUI }); } + else {$.jgrid.info_dialog(errors.errcap, e.message, edit.bClose, {styleUI : $t.p.styleUI }); } + } + break; + } + // The common approach is if nothing changed do not do anything + if (v2 !== $t.p.savedRow[fr].v){ + var vvv = $($t).triggerHandler("jqGridBeforeSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]); + if (vvv) {v = vvv; v2=vvv;} + if ($.isFunction($t.p.beforeSaveCell)) { + var vv = $t.p.beforeSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol); + if (vv) {v = vv; v2=vv;} + } + var cv = $.jgrid.checkValues.call($t,v,iCol), nuem = false; + if(cv[0] === true) { + var addpost = $($t).triggerHandler("jqGridBeforeSubmitCell", [$t.rows[iRow].id, nm, v, iRow, iCol]) || {}; + if ($.isFunction($t.p.beforeSubmitCell)) { + addpost = $t.p.beforeSubmitCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol); + if (!addpost) {addpost={};} + } + if( $("input.hasDatepicker",cc).length >0) { $("input.hasDatepicker",cc).datepicker('hide'); } + if ($t.p.cellsubmit === 'remote') { + if ($t.p.cellurl) { + var postdata = {}; + if($t.p.autoencode) { v = $.jgrid.htmlEncode(v); } + if(cm.editoptions && cm.editoptions.NullIfEmpty && v === "") { + v = 'null'; + nuem = true; + } + postdata[nm] = v; + var idname,oper, opers; + opers = $t.p.prmNames; + idname = opers.id; + oper = opers.oper; + postdata[idname] = $.jgrid.stripPref($t.p.idPrefix, $t.rows[iRow].id); + postdata[oper] = opers.editoper; + postdata = $.extend(addpost,postdata); + $($t).jqGrid("progressBar", {method:"show", loadtype : $t.p.loadui, htmlcontent: $.jgrid.getRegional($t,'defaults.savetext') }); + $t.grid.hDiv.loading = true; + $.ajax( $.extend( { + url: $t.p.cellurl, + data :$.isFunction($t.p.serializeCellData) ? $t.p.serializeCellData.call($t, postdata, nm) : postdata, + type: "POST", + complete: function (result, stat) { + $($t).jqGrid("progressBar", {method:"hide", loadtype : $t.p.loadui }); + $t.grid.hDiv.loading = false; + if (stat === 'success') { + var ret = $($t).triggerHandler("jqGridAfterSubmitCell", [$t, result, postdata.id, nm, v, iRow, iCol]) || [true, '']; + if (ret[0] === true && $.isFunction($t.p.afterSubmitCell)) { + ret = $t.p.afterSubmitCell.call($t, result,postdata.id,nm,v,iRow,iCol); + } + if(ret[0] === true){ + if(nuem) { + v = ""; + } + $(cc).empty(); + $($t).jqGrid("setCell",$t.rows[iRow].id, iCol, v2, false, false, true); + $(cc).addClass("dirty-cell"); + $($t.rows[iRow]).addClass("edited"); + $($t).triggerHandler("jqGridAfterSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]); + if ($.isFunction($t.p.afterSaveCell)) { + $t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol); + } + $t.p.savedRow.splice(0,1); + } else { + $.jgrid.info_dialog(errors.errcap,ret[1],edit.bClose, {styleUI : $t.p.styleUI }); + if( $t.p.restoreCellonFail) { + $($t).jqGrid("restoreCell",iRow,iCol); + } + } + } + }, + error:function(res,stat,err) { + $("#lui_"+$.jgrid.jqID($t.p.id)).hide(); + $t.grid.hDiv.loading = false; + $($t).triggerHandler("jqGridErrorCell", [res, stat, err]); + if ($.isFunction($t.p.errorCell)) { + $t.p.errorCell.call($t, res,stat,err); + } else { + $.jgrid.info_dialog(errors.errcap,res.status+" : "+res.statusText+"
"+stat, edit.bClose, {styleUI : $t.p.styleUI }); + } + if( $t.p.restoreCellonFail) { + $($t).jqGrid("restoreCell",iRow,iCol); + } + } + }, $.jgrid.ajaxOptions, $t.p.ajaxCellOptions || {})); + } else { + try { + $.jgrid.info_dialog(errors.errcap,errors.nourl, edit.bClose, {styleUI : $t.p.styleUI }); + if( $t.p.restoreCellonFail) { + $($t).jqGrid("restoreCell",iRow,iCol); + } + } catch (e) {} + } + } + if ($t.p.cellsubmit === 'clientArray') { + $(cc).empty(); + $($t).jqGrid("setCell",$t.rows[iRow].id,iCol, v2, false, false, true); + $(cc).addClass("dirty-cell"); + $($t.rows[iRow]).addClass("edited"); + $($t).triggerHandler("jqGridAfterSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]); + if ($.isFunction($t.p.afterSaveCell)) { + $t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol); + } + $t.p.savedRow.splice(0,1); + } + } else { + try { + window.setTimeout(function(){$.jgrid.info_dialog(errors.errcap,v+ " " + cv[1], edit.bClose, {styleUI : $t.p.styleUI, top:p.top+40, left:p.left });},100); + $($t).jqGrid("restoreCell",iRow,iCol); + } catch (e) {} + } + } else { + $($t).jqGrid("restoreCell",iRow,iCol); + } + } + window.setTimeout(function () { $("#"+$.jgrid.jqID($t.p.knv)).attr("tabindex","-1").focus();},0); + }); + }, + restoreCell : function(iRow, iCol) { + return this.each(function(){ + var $t= this, fr; + if (!$t.grid || $t.p.cellEdit !== true ) {return;} + if ( $t.p.savedRow.length >= 1) {fr = 0;} else {fr=null;} + if(fr !== null) { + var cc = $("td:eq("+iCol+")",$t.rows[iRow]); + // datepicker fix + if($.isFunction($.fn.datepicker)) { + try { + $("input.hasDatepicker",cc).datepicker('hide'); + } catch (e) {} + } + $(cc).empty().attr("tabindex","-1"); + $($t).jqGrid("setCell",$t.rows[iRow].id, iCol, $t.p.savedRow[fr].v, false, false, true); + $($t).triggerHandler("jqGridAfterRestoreCell", [$t.rows[iRow].id, $t.p.savedRow[fr].v, iRow, iCol]); + if ($.isFunction($t.p.afterRestoreCell)) { + $t.p.afterRestoreCell.call($t, $t.rows[iRow].id, $t.p.savedRow[fr].v, iRow, iCol); + } + $t.p.savedRow.splice(0,1); + } + window.setTimeout(function () { $("#"+$t.p.knv).attr("tabindex","-1").focus();},0); + }); + }, + nextCell : function (iRow,iCol) { + return this.each(function (){ + var $t = this, nCol=false, i; + if (!$t.grid || $t.p.cellEdit !== true) {return;} + // try to find next editable cell + for (i=iCol+1; i<$t.p.colModel.length; i++) { + if ( $t.p.colModel[i].editable ===true && (!$.isFunction($t.p.isCellEditable) || $t.p.isCellEditable.call($t, $t.p.colModel[i].name,iRow,i))) { + nCol = i; break; + } + } + if(nCol !== false) { + $($t).jqGrid("editCell",iRow,nCol,true); + } else { + if ($t.p.savedRow.length >0) { + $($t).jqGrid("saveCell",iRow,iCol); + } + } + }); + }, + prevCell : function (iRow,iCol) { + return this.each(function (){ + var $t = this, nCol=false, i; + if (!$t.grid || $t.p.cellEdit !== true) {return;} + // try to find next editable cell + for (i=iCol-1; i>=0; i--) { + if ( $t.p.colModel[i].editable ===true && (!$.isFunction($t.p.isCellEditable) || $t.p.isCellEditable.call($t, $t.p.colModel[i].name, iRow,i))) { + nCol = i; break; + } + } + if(nCol !== false) { + $($t).jqGrid("editCell",iRow,nCol,true); + } else { + if ($t.p.savedRow.length >0) { + $($t).jqGrid("saveCell",iRow,iCol); + } + } + }); + }, + GridNav : function() { + return this.each(function () { + var $t = this; + if (!$t.grid || $t.p.cellEdit !== true ) {return;} + // trick to process keydown on non input elements + $t.p.knv = $t.p.id + "_kn"; + var selection = $("
"), + i, kdir; + function scrollGrid(iR, iC, tp){ + if (tp.substr(0,1)==='v') { + var ch = $($t.grid.bDiv)[0].clientHeight, + st = $($t.grid.bDiv)[0].scrollTop, + nROT = $t.rows[iR].offsetTop+$t.rows[iR].clientHeight, + pROT = $t.rows[iR].offsetTop; + if(tp === 'vd') { + if(nROT >= ch) { + $($t.grid.bDiv)[0].scrollTop = $($t.grid.bDiv)[0].scrollTop + $t.rows[iR].clientHeight; + } + } + if(tp === 'vu'){ + if (pROT < st ) { + $($t.grid.bDiv)[0].scrollTop = $($t.grid.bDiv)[0].scrollTop - $t.rows[iR].clientHeight; + } + } + } + if(tp==='h') { + var cw = $($t.grid.bDiv)[0].clientWidth, + sl = $($t.grid.bDiv)[0].scrollLeft, + nCOL = $t.rows[iR].cells[iC].offsetLeft+$t.rows[iR].cells[iC].clientWidth, + pCOL = $t.rows[iR].cells[iC].offsetLeft; + if(nCOL >= cw+parseInt(sl,10)) { + $($t.grid.bDiv)[0].scrollLeft = $($t.grid.bDiv)[0].scrollLeft + $t.rows[iR].cells[iC].clientWidth; + } else if (pCOL < sl) { + $($t.grid.bDiv)[0].scrollLeft = $($t.grid.bDiv)[0].scrollLeft - $t.rows[iR].cells[iC].clientWidth; + } + } + } + function findNextVisible(iC,act){ + var ind, i; + if(act === 'lft') { + ind = iC+1; + for (i=iC;i>=0;i--){ + if ($t.p.colModel[i].hidden !== true) { + ind = i; + break; + } + } + } + if(act === 'rgt') { + ind = iC-1; + for (i=iC; i<$t.p.colModel.length;i++){ + if ($t.p.colModel[i].hidden !== true) { + ind = i; + break; + } + } + } + return ind; + } + + $(selection).insertBefore($t.grid.cDiv); + $("#"+$t.p.knv) + .focus() + .keydown(function (e){ + kdir = e.keyCode; + if($t.p.direction === "rtl") { + if(kdir===37) { kdir = 39;} + else if (kdir===39) { kdir = 37; } + } + switch (kdir) { + case 38: + if ($t.p.iRow-1 >0 ) { + scrollGrid($t.p.iRow-1,$t.p.iCol,'vu'); + $($t).jqGrid("editCell",$t.p.iRow-1,$t.p.iCol,false); + } + break; + case 40 : + if ($t.p.iRow+1 <= $t.rows.length-1) { + scrollGrid($t.p.iRow+1,$t.p.iCol,'vd'); + $($t).jqGrid("editCell",$t.p.iRow+1,$t.p.iCol,false); + } + break; + case 37 : + if ($t.p.iCol -1 >= 0) { + i = findNextVisible($t.p.iCol-1,'lft'); + scrollGrid($t.p.iRow, i,'h'); + $($t).jqGrid("editCell",$t.p.iRow, i,false); + } + break; + case 39 : + if ($t.p.iCol +1 <= $t.p.colModel.length-1) { + i = findNextVisible($t.p.iCol+1,'rgt'); + scrollGrid($t.p.iRow,i,'h'); + $($t).jqGrid("editCell",$t.p.iRow,i,false); + } + break; + case 13: + if (parseInt($t.p.iCol,10)>=0 && parseInt($t.p.iRow,10)>=0) { + $($t).jqGrid("editCell",$t.p.iRow,$t.p.iCol,true); + } + break; + default : + return true; + } + return false; + }); + }); + }, + getChangedCells : function (mthd) { + var ret=[]; + if (!mthd) {mthd='all';} + this.each(function(){ + var $t= this,nm; + if (!$t.grid || $t.p.cellEdit !== true ) {return;} + $($t.rows).each(function(j){ + var res = {}; + if ($(this).hasClass("edited")) { + $('td',this).each( function(i) { + nm = $t.p.colModel[i].name; + if ( nm !== 'cb' && nm !== 'subgrid') { + if (mthd==='dirty') { + if ($(this).hasClass('dirty-cell')) { + try { + res[nm] = $.unformat.call($t,this,{rowId:$t.rows[j].id, colModel:$t.p.colModel[i]},i); + } catch (e){ + res[nm] = $.jgrid.htmlDecode($(this).html()); + } + } + } else { + try { + res[nm] = $.unformat.call($t,this,{rowId:$t.rows[j].id,colModel:$t.p.colModel[i]},i); + } catch (e) { + res[nm] = $.jgrid.htmlDecode($(this).html()); + } + } + } + }); + res.id = this.id; + ret.push(res); + } + }); + }); + return ret; + } +/// end cell editing +}); + +//module begin +$.extend($.jgrid,{ +// Modal functions + showModal : function(h) { + h.w.show(); + }, + closeModal : function(h) { + h.w.hide().attr("aria-hidden","true"); + if(h.o) {h.o.remove();} + }, + hideModal : function (selector,o) { + o = $.extend({jqm : true, gb :'', removemodal: false, formprop: false, form : ''}, o || {}); + var thisgrid = o.gb && typeof o.gb === "string" && o.gb.substr(0,6) === "#gbox_" ? $("#" + o.gb.substr(6))[0] : false; + if(o.onClose) { + var oncret = thisgrid ? o.onClose.call(thisgrid, selector) : o.onClose(selector); + if (typeof oncret === 'boolean' && !oncret ) { return; } + } + if( o.formprop && thisgrid && o.form) { + var fh = $(selector)[0].style.height, + fw = $(selector)[0].style.width; + if(fh.indexOf("px") > -1 ) { + fh = parseFloat(fh); + } + if(fw.indexOf("px") > -1 ) { + fw = parseFloat(fw); + } + var frmgr, frmdata; + if(o.form==='edit'){ + frmgr = '#' +$.jgrid.jqID("FrmGrid_"+ o.gb.substr(6)); + frmdata = "formProp"; + } else if( o.form === 'view') { + frmgr = '#' +$.jgrid.jqID("ViewGrid_"+ o.gb.substr(6)); + frmdata = "viewProp"; + } + $(thisgrid).data(frmdata, { + top:parseFloat($(selector).css("top")), + left : parseFloat($(selector).css("left")), + width : fw, + height : fh, + dataheight : $(frmgr).height(), + datawidth: $(frmgr).width() + }); + } + if ($.fn.jqm && o.jqm === true) { + $(selector).attr("aria-hidden","true").jqmHide(); + } else { + if(o.gb !== '') { + try {$(".jqgrid-overlay:first",o.gb).hide();} catch (e){} + } + $(selector).hide().attr("aria-hidden","true"); + } + if( o.removemodal ) { + $(selector).remove(); + } + }, +//Helper functions + findPos : function(obj) { + var curleft = 0, curtop = 0; + if (obj.offsetParent) { + do { + curleft += obj.offsetLeft; + curtop += obj.offsetTop; + } while (obj = obj.offsetParent); + //do not change obj == obj.offsetParent + } + return [curleft,curtop]; + }, + createModal : function(aIDs, content, p, insertSelector, posSelector, appendsel, css) { + p = $.extend(true, {}, $.jgrid.jqModal || {}, p); + var self = this, + rtlsup = $(p.gbox).attr("dir") === "rtl" ? true : false, + classes = $.jgrid.styleUI[(p.styleUI || 'jQueryUI')].modal, + common = $.jgrid.styleUI[(p.styleUI || 'jQueryUI')].common, + mw = document.createElement('div'); + css = $.extend({}, css || {}); + mw.className= "ui-jqdialog " + classes.modal; + mw.id = aIDs.themodal; + var mh = document.createElement('div'); + mh.className = "ui-jqdialog-titlebar " + classes.header; + mh.id = aIDs.modalhead; + $(mh).append(""+p.caption+""); + var ahr= $("
") + .hover(function(){ahr.addClass(common.hover);}, + function(){ahr.removeClass(common.hover);}) + .append(""); + $(mh).append(ahr); + if(rtlsup) { + mw.dir = "rtl"; + $(".ui-jqdialog-title",mh).css("float","right"); + $(".ui-jqdialog-titlebar-close",mh).css("left",0.3+"em"); + } else { + mw.dir = "ltr"; + $(".ui-jqdialog-title",mh).css("float","left"); + $(".ui-jqdialog-titlebar-close",mh).css("right",0.3+"em"); + } + var mc = document.createElement('div'); + $(mc).addClass("ui-jqdialog-content " + classes.content).attr("id",aIDs.modalcontent); + $(mc).append(content); + mw.appendChild(mc); + $(mw).prepend(mh); + if(appendsel===true) { + $('body').append(mw); + } //append as first child in body -for alert dialog + else if (typeof appendsel === "string") { + $(appendsel).append(mw); + } else { + $(mw).insertBefore(insertSelector); + } + $(mw).css(css); + if(p.jqModal === undefined) {p.jqModal = true;} // internal use + var coord = {}; + if ( $.fn.jqm && p.jqModal === true) { + if(p.left ===0 && p.top===0 && p.overlay) { + var pos = []; + pos = $.jgrid.findPos(posSelector); + p.left = pos[0] + 4; + p.top = pos[1] + 4; + } + coord.top = p.top+"px"; + coord.left = p.left; + } else if(p.left !==0 || p.top!==0) { + coord.left = p.left; + coord.top = p.top+"px"; + } + $("a.ui-jqdialog-titlebar-close",mh).click(function(){ + var oncm = $("#"+$.jgrid.jqID(aIDs.themodal)).data("onClose") || p.onClose; + var gboxclose = $("#"+$.jgrid.jqID(aIDs.themodal)).data("gbox") || p.gbox; + self.hideModal("#"+$.jgrid.jqID(aIDs.themodal),{gb:gboxclose,jqm:p.jqModal,onClose:oncm, removemodal: p.removemodal || false, formprop : !p.recreateForm || false, form: p.form || ''}); + return false; + }); + if (p.width === 0 || !p.width) {p.width = 300;} + if(p.height === 0 || !p.height) {p.height =200;} + if(!p.zIndex) { + var parentZ = $(insertSelector).parents("*[role=dialog]").filter(':first').css("z-index"); + if(parentZ) { + p.zIndex = parseInt(parentZ,10)+2; + } else { + p.zIndex = 950; + } + } + var rtlt = 0; + if( rtlsup && coord.left && !appendsel) { + rtlt = $(p.gbox).width()- (!isNaN(p.width) ? parseInt(p.width,10) :0) - 8; // to do + // just in case + coord.left = parseInt(coord.left,10) + parseInt(rtlt,10); + } + if(coord.left) { coord.left += "px"; } + $(mw).css($.extend({ + width: isNaN(p.width) ? "auto": p.width+"px", + height:isNaN(p.height) ? "auto" : p.height + "px", + zIndex:p.zIndex, + overflow: 'hidden' + },coord)) + .attr({tabIndex: "-1","role":"dialog","aria-labelledby":aIDs.modalhead,"aria-hidden":"true"}); + if(p.drag === undefined) { p.drag=true;} + if(p.resize === undefined) {p.resize=true;} + if (p.drag) { + $(mh).css('cursor','move'); + if($.fn.tinyDraggable) { + //$(mw).jqDrag(mh); + $(mw).tinyDraggable({ handle:"#"+$.jgrid.jqID(mh.id) }); + } else { + try { + $(mw).draggable({handle: $("#"+$.jgrid.jqID(mh.id))}); + } catch (e) {} + } + } + if(p.resize) { + if($.fn.jqResize) { + $(mw).append("
"); + $("#"+$.jgrid.jqID(aIDs.themodal)).jqResize(".jqResize",aIDs.scrollelm ? "#"+$.jgrid.jqID(aIDs.scrollelm) : false); + } else { + try { + $(mw).resizable({handles: 'se, sw',alsoResize: aIDs.scrollelm ? "#"+$.jgrid.jqID(aIDs.scrollelm) : false}); + } catch (r) {} + } + } + if(p.closeOnEscape === true){ + $(mw).keydown( function( e ) { + if( e.which === 27 ) { + var cone = $("#"+$.jgrid.jqID(aIDs.themodal)).data("onClose") || p.onClose; + self.hideModal("#"+$.jgrid.jqID(aIDs.themodal),{gb:p.gbox,jqm:p.jqModal,onClose: cone, removemodal: p.removemodal || false, formprop : !p.recreateForm || false, form: p.form || ''}); + } + }); + } + }, + viewModal : function (selector,o){ + o = $.extend({ + toTop: true, + overlay: 10, + modal: false, + overlayClass : 'ui-widget-overlay', // to be fixed + onShow: $.jgrid.showModal, + onHide: $.jgrid.closeModal, + gbox: '', + jqm : true, + jqM : true + }, o || {}); + if(o.focusField === undefined) { + o.focusField = 0; + } + if(typeof o.focusField === "number" && o.focusField >= 0 ) { + o.focusField = parseInt(o.focusField,10); + } else if(typeof o.focusField === "boolean" && !o.focusField) { + o.focusField = false; + } else { + o.focusField = 0; + } + if ($.fn.jqm && o.jqm === true) { + if(o.jqM) { $(selector).attr("aria-hidden","false").jqm(o).jqmShow(); } + else {$(selector).attr("aria-hidden","false").jqmShow();} + } else { + if(o.gbox !== '') { + $(".jqgrid-overlay:first",o.gbox).show(); + $(selector).data("gbox",o.gbox); + } + $(selector).show().attr("aria-hidden","false"); + if(o.focusField >= 0) { + try{$(':input:visible',selector)[parseInt(o.focusField,10)].focus();}catch(_){} + } + } + }, + info_dialog : function(caption, content,c_b, modalopt) { + var mopt = { + width:290, + height:'auto', + dataheight: 'auto', + drag: true, + resize: false, + left:250, + top:170, + zIndex : 1000, + jqModal : true, + modal : false, + closeOnEscape : true, + align: 'center', + buttonalign : 'center', + buttons : [] + // {text:'textbutt', id:"buttid", onClick : function(){...}} + // if the id is not provided we set it like info_button_+ the index in the array - i.e info_button_0,info_button_1... + }; + $.extend(true, mopt, $.jgrid.jqModal || {}, {caption:""+caption+""}, modalopt || {}); + var jm = mopt.jqModal, self = this, + classes = $.jgrid.styleUI[(mopt.styleUI || 'jQueryUI')].modal, + common = $.jgrid.styleUI[(mopt.styleUI || 'jQueryUI')].common; + if($.fn.jqm && !jm) { jm = false; } + // in case there is no jqModal + var buttstr ="", i; + if(mopt.buttons.length > 0) { + for(i=0;i"+mopt.buttons[i].text+""; + } + } + var dh = isNaN(mopt.dataheight) ? mopt.dataheight : mopt.dataheight+"px", + cn = "text-align:"+mopt.align+";"; + var cnt = "
"; + cnt += "
"+content+"
"; + cnt += c_b ? "
"+c_b+""+buttstr+"
" : + buttstr !== "" ? "
"+buttstr+"
" : ""; + cnt += "
"; + + try { + if($("#info_dialog").attr("aria-hidden") === "false") { + $.jgrid.hideModal("#info_dialog",{jqm:jm}); + } + $("#info_dialog").remove(); + } catch (e){} + $.jgrid.createModal({ + themodal:'info_dialog', + modalhead:'info_head', + modalcontent:'info_content', + scrollelm: 'infocnt'}, + cnt, + mopt, + '','',true + ); + // attach onclick after inserting into the dom + if(buttstr) { + $.each(mopt.buttons,function(i){ + $("#"+$.jgrid.jqID(this.id),"#info_id").bind('click',function(){mopt.buttons[i].onClick.call($("#info_dialog")); return false;}); + }); + } + $("#closedialog", "#info_id").click(function(){ + self.hideModal("#info_dialog",{ + jqm:jm, + onClose: $("#info_dialog").data("onClose") || mopt.onClose, + gb: $("#info_dialog").data("gbox") || mopt.gbox + }); + return false; + }); + $(".fm-button","#info_dialog").hover( + function(){$(this).addClass(common.hover);}, + function(){$(this).removeClass(common.hover);} + ); + if($.isFunction(mopt.beforeOpen) ) { mopt.beforeOpen(); } + $.jgrid.viewModal("#info_dialog",{ + onHide: function(h) { + h.w.hide().remove(); + if(h.o) { h.o.remove(); } + }, + modal :mopt.modal, + jqm:jm + }); + if($.isFunction(mopt.afterOpen) ) { mopt.afterOpen(); } + try{ $("#info_dialog").focus();} catch (m){} + }, + bindEv: function (el, opt) { + var $t = this; + if($.isFunction(opt.dataInit)) { + opt.dataInit.call($t,el,opt); + } + if(opt.dataEvents) { + $.each(opt.dataEvents, function() { + if (this.data !== undefined) { + $(el).bind(this.type, this.data, this.fn); + } else { + $(el).bind(this.type, this.fn); + } + }); + } + }, +// Form Functions + createEl : function(eltype,options,vl,autowidth, ajaxso) { + var elem = "", $t = this; + function setAttributes(elm, atr, exl ) { + var exclude = ['dataInit','dataEvents','dataUrl', 'buildSelect','sopt', 'searchhidden', 'defaultValue', 'attr', 'custom_element', 'custom_value', 'oper']; + if(exl !== undefined && $.isArray(exl)) { + $.merge(exclude, exl); + } + $.each(atr, function(key, value){ + if($.inArray(key, exclude) === -1) { + $(elm).attr(key,value); + } + }); + if(!atr.hasOwnProperty('id')) { + $(elm).attr('id', $.jgrid.randId()); + } + } + switch (eltype) + { + case "textarea" : + elem = document.createElement("textarea"); + if(autowidth) { + if(!options.cols) { $(elem).css({width:"98%"});} + } else if (!options.cols) { options.cols = 20; } + if(!options.rows) { options.rows = 2; } + if(vl===' ' || vl===' ' || (vl.length===1 && vl.charCodeAt(0)===160)) {vl="";} + elem.value = vl; + setAttributes(elem, options); + $(elem).attr({"role":"textbox","multiline":"true"}); + break; + case "checkbox" : //what code for simple checkbox + elem = document.createElement("input"); + elem.type = "checkbox"; + if( !options.value ) { + var vl1 = (vl+"").toLowerCase(); + if(vl1.search(/(false|f|0|no|n|off|undefined)/i)<0 && vl1!=="") { + elem.checked=true; + elem.defaultChecked=true; + elem.value = vl; + } else { + elem.value = "on"; + } + $(elem).attr("offval","off"); + } else { + var cbval = options.value.split(":"); + if(vl === cbval[0]) { + elem.checked=true; + elem.defaultChecked=true; + } + elem.value = cbval[0]; + $(elem).attr("offval",cbval[1]); + } + setAttributes(elem, options, ['value']); + $(elem).attr("role","checkbox"); + break; + case "select" : + elem = document.createElement("select"); + elem.setAttribute("role","select"); + var msl, ovm = []; + if(options.multiple===true) { + msl = true; + elem.multiple="multiple"; + $(elem).attr("aria-multiselectable","true"); + } else { msl = false; } + if(options.dataUrl != null) { + var rowid = null, postData = options.postData || ajaxso.postData; + try { + rowid = options.rowId; + } catch(e) {} + + if ($t.p && $t.p.idPrefix) { + rowid = $.jgrid.stripPref($t.p.idPrefix, rowid); + } + $.ajax($.extend({ + url: $.isFunction(options.dataUrl) ? options.dataUrl.call($t, rowid, vl, String(options.name)) : options.dataUrl, + type : "GET", + dataType: "html", + data: $.isFunction(postData) ? postData.call($t, rowid, vl, String(options.name)) : postData, + context: {elem:elem, options:options, vl:vl}, + success: function(data){ + var ovm = [], elem = this.elem, vl = this.vl, + options = $.extend({},this.options), + msl = options.multiple===true, + cU = options.cacheUrlData === true, + oV ='', txt, + a = $.isFunction(options.buildSelect) ? options.buildSelect.call($t,data) : data; + if(typeof a === 'string') { + a = $( $.trim( a ) ).html(); + } + if(a) { + $(elem).append(a); + setAttributes(elem, options, postData ? ['postData'] : undefined ); + if(options.size === undefined) { options.size = msl ? 3 : 1;} + if(msl) { + ovm = vl.split(","); + ovm = $.map(ovm,function(n){return $.trim(n);}); + } else { + ovm[0] = $.trim(vl); + } + //$(elem).attr(options); + //setTimeout(function(){ + $("option",elem).each(function(i){ + txt = $(this).text(); + vl = $(this).val() || txt; + if(cU) { + oV += (i!== 0 ? ";": "")+ vl+":"+txt; + } + //if(i===0) { this.selected = ""; } + // fix IE8/IE7 problem with selecting of the first item on multiple=true + if (i === 0 && elem.multiple) { this.selected = false; } + $(this).attr("role","option"); + if($.inArray($.trim(txt),ovm) > -1 || $.inArray($.trim(vl),ovm) > -1 ) { + this.selected= "selected"; + } + }); + if(cU) { + if(options.oper === 'edit') { + $($t).jqGrid('setColProp',options.name,{ editoptions: {buildSelect: null, dataUrl : null, value : oV} }); + } else if(options.oper === 'search') { + $($t).jqGrid('setColProp',options.name,{ searchoptions: {dataUrl : null, value : oV} }); + } else if(options.oper ==='filter') { + if($("#fbox_"+$t.p.id)[0].p) { + var cols = $("#fbox_"+$t.p.id)[0].p.columns, nm; + $.each(cols,function(i) { + nm = this.index || this.name; + if(options.name === nm) { + this.searchoptions.dataUrl = null; + this.searchoptions.value = oV; + return false; + } + }); + } + } + } + $($t).triggerHandler("jqGridAddEditAfterSelectUrlComplete", [elem]); + //},0); + } + } + },ajaxso || {})); + } else if(options.value) { + var i; + if(options.size === undefined) { + options.size = msl ? 3 : 1; + } + if(msl) { + ovm = vl.split(","); + ovm = $.map(ovm,function(n){return $.trim(n);}); + } + if(typeof options.value === 'function') { options.value = options.value(); } + var so,sv, ov, oSv, key, value, + sep = options.separator === undefined ? ":" : options.separator, + delim = options.delimiter === undefined ? ";" : options.delimiter; + if(typeof options.value === 'string') { + so = options.value.split(delim); + for(i=0; i 2 ) { + sv[1] = $.map(sv,function(n,ii){if(ii>0) { return n;} }).join(sep); + } + ov = document.createElement("option"); + ov.setAttribute("role","option"); + ov.value = sv[0]; ov.innerHTML = sv[1]; + elem.appendChild(ov); + if (!msl && ($.trim(sv[0]) === $.trim(vl) || $.trim(sv[1]) === $.trim(vl))) { ov.selected ="selected"; } + if (msl && ($.inArray($.trim(sv[1]), ovm)>-1 || $.inArray($.trim(sv[0]), ovm)>-1)) {ov.selected ="selected";} + } + } else if (Object.prototype.toString.call(options.value) === "[object Array]") { + oSv = options.value; + // array of arrays [[Key, Value], [Key, Value], ...] + for (i=0; i-1 || $.inArray($.trim(key),ovm)>-1)) { ov.selected ="selected"; } + } + } + } else if (typeof options.value === 'object') { + oSv = options.value; + for (key in oSv) { + if (oSv.hasOwnProperty(key ) ){ + ov = document.createElement("option"); + ov.setAttribute("role","option"); + ov.value = key; ov.innerHTML = oSv[key]; + elem.appendChild(ov); + if (!msl && ( $.trim(key) === $.trim(vl) || $.trim(oSv[key]) === $.trim(vl)) ) { ov.selected ="selected"; } + if (msl && ($.inArray($.trim(oSv[key]),ovm)>-1 || $.inArray($.trim(key),ovm)>-1)) { ov.selected ="selected"; } + } + } + } + setAttributes(elem, options, ['value']); + } + break; + case "image" : + case "file" : + elem = document.createElement("input"); + elem.type = eltype; + setAttributes(elem, options); + break; + case "custom" : + elem = document.createElement("span"); + try { + if($.isFunction(options.custom_element)) { + var celm = options.custom_element.call($t,vl,options); + if(celm) { + celm = $(celm).addClass("customelement").attr({id:options.id,name:options.name}); + $(elem).empty().append(celm); + } else { + throw "e2"; + } + } else { + throw "e1"; + } + } catch (e) { + var errors = $.jgrid.getRegional($t, 'errors'), + edit =$.jgrid.getRegional($t, 'edit'); + + if (e==="e1") { $.jgrid.info_dialog(errors.errcap,"function 'custom_element' "+edit.msg.nodefined, edit.bClose, {styleUI : $t.p.styleUI });} + else if (e==="e2") { $.jgrid.info_dialog(errors.errcap,"function 'custom_element' "+edit.msg.novalue,edit.bClose, {styleUI : $t.p.styleUI });} + else { $.jgrid.info_dialog(errors.errcap,typeof e==="string"?e:e.message,edit.bClose, {styleUI : $t.p.styleUI }); } + } + break; + default : + var role; + if(eltype==="button") { role = "button"; } + else { role = "textbox"; } // ??? + elem = document.createElement("input"); + elem.type = eltype; + elem.value = vl; + setAttributes(elem, options); + if(eltype !== "button"){ + if(autowidth) { + if(!options.size) { $(elem).css({width:"96%"}); } + } else if (!options.size) { options.size = 20; } + } + $(elem).attr("role",role); + } + return elem; + }, +// Date Validation Javascript + checkDate : function (format, date) { + var daysInFebruary = function(year){ + // February has 29 days in any year evenly divisible by four, + // EXCEPT for centurial years which are not also divisible by 400. + return (((year % 4 === 0) && ( year % 100 !== 0 || (year % 400 === 0))) ? 29 : 28 ); + }, + tsp = {}, sep; + format = format.toLowerCase(); + //we search for /,-,. for the date separator + if(format.indexOf("/") !== -1) { + sep = "/"; + } else if(format.indexOf("-") !== -1) { + sep = "-"; + } else if(format.indexOf(".") !== -1) { + sep = "."; + } else { + sep = "/"; + } + format = format.split(sep); + date = date.split(sep); + if (date.length !== 3) { return false; } + var j=-1,yln, dln=-1, mln=-1, i; + for(i=0;i12){ + return false; + } + if(dln === -1) { + return false; + } + strDate = tsp[format[dln]].toString(); + if (strDate.length<1 || tsp[format[dln]]<1 || tsp[format[dln]]>31 || (tsp[format[mln]]===2 && tsp[format[dln]]>daysInFebruary(tsp[format[j]])) || tsp[format[dln]] > daysInMonth[tsp[format[mln]]]){ + return false; + } + return true; + }, + isEmpty : function(val) + { + if (val.match(/^\s+$/) || val === "") { + return true; + } + return false; + }, + checkTime : function(time){ + // checks only hh:ss (and optional am/pm) + var re = /^(\d{1,2}):(\d{2})([apAP][Mm])?$/,regs; + if(!$.jgrid.isEmpty(time)) + { + regs = time.match(re); + if(regs) { + if(regs[3]) { + if(regs[1] < 1 || regs[1] > 12) { return false; } + } else { + if(regs[1] > 23) { return false; } + } + if(regs[2] > 59) { + return false; + } + } else { + return false; + } + } + return true; + }, + checkValues : function(val, valref, customobject, nam) { + var edtrul,i, nm, dft, len, g = this, cm = g.p.colModel, + msg = $.jgrid.getRegional(this, 'edit.msg'), fmtdate; + if(customobject === undefined) { + if(typeof valref==='string'){ + for( i =0, len=cm.length;i=0) { + edtrul = cm[valref].editrules; + } + } else { + edtrul = customobject; + nm = nam===undefined ? "_" : nam; + } + if(edtrul) { + if(!nm) { nm = g.p.colNames != null ? g.p.colNames[valref] : cm[valref].label; } + if(edtrul.required === true) { + if( $.jgrid.isEmpty(val) ) { return [false,nm+": "+msg.required,""]; } + } + // force required + var rqfield = edtrul.required === false ? false : true; + if(edtrul.number === true) { + if( !(rqfield === false && $.jgrid.isEmpty(val)) ) { + if(isNaN(val)) { return [false,nm+": "+msg.number,""]; } + } + } + if(edtrul.minValue !== undefined && !isNaN(edtrul.minValue)) { + if (parseFloat(val) < parseFloat(edtrul.minValue) ) { return [false,nm+": "+msg.minValue+" "+edtrul.minValue,""];} + } + if(edtrul.maxValue !== undefined && !isNaN(edtrul.maxValue)) { + if (parseFloat(val) > parseFloat(edtrul.maxValue) ) { return [false,nm+": "+msg.maxValue+" "+edtrul.maxValue,""];} + } + var filter; + if(edtrul.email === true) { + if( !(rqfield === false && $.jgrid.isEmpty(val)) ) { + // taken from $ Validate plugin + filter = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i; + if(!filter.test(val)) {return [false,nm+": "+msg.email,""];} + } + } + if(edtrul.integer === true) { + if( !(rqfield === false && $.jgrid.isEmpty(val)) ) { + if(isNaN(val)) { return [false,nm+": "+msg.integer,""]; } + if ((val % 1 !== 0) || (val.indexOf('.') !== -1)) { return [false,nm+": "+msg.integer,""];} + } + } + if(edtrul.date === true) { + if( !(rqfield === false && $.jgrid.isEmpty(val)) ) { + if(cm[valref].formatoptions && cm[valref].formatoptions.newformat) { + dft = cm[valref].formatoptions.newformat; + fmtdate = $.jgrid.getRegional(g, 'formatter.date.masks'); + if(fmtdate && fmtdate.hasOwnProperty(dft) ) { + dft = fmtdate[dft]; + } + } else { + dft = cm[valref].datefmt || "Y-m-d"; + } + if(!$.jgrid.checkDate (dft, val)) { return [false,nm+": "+msg.date+" - "+dft,""]; } + } + } + if(edtrul.time === true) { + if( !(rqfield === false && $.jgrid.isEmpty(val)) ) { + if(!$.jgrid.checkTime (val)) { return [false,nm+": "+msg.date+" - hh:mm (am/pm)",""]; } + } + } + if(edtrul.url === true) { + if( !(rqfield === false && $.jgrid.isEmpty(val)) ) { + filter = /^(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i; + if(!filter.test(val)) {return [false,nm+": "+msg.url,""];} + } + } + if(edtrul.custom === true) { + if( !(rqfield === false && $.jgrid.isEmpty(val)) ) { + if($.isFunction(edtrul.custom_func)) { + var ret = edtrul.custom_func.call(g,val,nm,valref); + return $.isArray(ret) ? ret : [false,msg.customarray,""]; + } + return [false,msg.customfcheck,""]; + } + } + } + return [true,"",""]; + } +}); + +//module begin +$.fn.jqFilter = function( arg ) { + if (typeof arg === 'string') { + + var fn = $.fn.jqFilter[arg]; + if (!fn) { + throw ("jqFilter - No such method: " + arg); + } + var args = $.makeArray(arguments).slice(1); + return fn.apply(this,args); + } + + var p = $.extend(true,{ + filter: null, + columns: [], + sortStrategy: null, + onChange : null, + afterRedraw : null, + checkValues : null, + error: false, + errmsg : "", + errorcheck : true, + showQuery : true, + sopt : null, + ops : [], + operands : null, + numopts : ['eq','ne', 'lt', 'le', 'gt', 'ge', 'nu', 'nn', 'in', 'ni'], + stropts : ['eq', 'ne', 'bw', 'bn', 'ew', 'en', 'cn', 'nc', 'nu', 'nn', 'in', 'ni'], + strarr : ['text', 'string', 'blob'], + groupOps : [{ op: "AND", text: "AND" }, { op: "OR", text: "OR" }], + groupButton : true, + ruleButtons : true, + uniqueSearchFields : false, + direction : "ltr" + }, $.jgrid.filter, arg || {}); + return this.each( function() { + if (this.filter) {return;} + this.p = p; + // setup filter in case if they is not defined + if (this.p.filter === null || this.p.filter === undefined) { + this.p.filter = { + groupOp: this.p.groupOps[0].op, + rules: [], + groups: [] + }; + } + + // Sort the columns if the sort strategy is provided. + if (this.p.sortStrategy != null && $.isFunction(this.p.sortStrategy)) { + this.p.columns.sort(this.p.sortStrategy); + } + + var i, len = this.p.columns.length, cl, + isIE = /msie/i.test(navigator.userAgent) && !window.opera; + + // translating the options + this.p.initFilter = $.extend(true,{},this.p.filter); + + // set default values for the columns if they are not set + if( !len ) {return;} + for(i=0; i < len; i++) { + cl = this.p.columns[i]; + if( cl.stype ) { + // grid compatibility + cl.inputtype = cl.stype; + } else if(!cl.inputtype) { + cl.inputtype = 'text'; + } + if( cl.sorttype ) { + // grid compatibility + cl.searchtype = cl.sorttype; + } else if (!cl.searchtype) { + cl.searchtype = 'string'; + } + if(cl.hidden === undefined) { + // jqGrid compatibility + cl.hidden = false; + } + if(!cl.label) { + cl.label = cl.name; + } + if(cl.index) { + cl.name = cl.index; + } + if(!cl.hasOwnProperty('searchoptions')) { + cl.searchoptions = {}; + } + if(!cl.hasOwnProperty('searchrules')) { + cl.searchrules = {}; + } + if(cl.search === undefined) { + cl.inlist = true; + } else { + cl.inlist = cl.search; + } + } + var getGrid = function () { + return $("#" + $.jgrid.jqID(p.id))[0] || null; + }, + + $tg = getGrid(), + classes = $.jgrid.styleUI[($tg.p.styleUI || 'jQueryUI')].filter, + common = $.jgrid.styleUI[($tg.p.styleUI || 'jQueryUI')].common; + + + if(this.p.showQuery) { + $(this).append("
"); + } + /* + *Perform checking. + * + */ + var checkData = function(val, colModelItem) { + var ret = [true,""], $t = getGrid(); + if($.isFunction(colModelItem.searchrules)) { + ret = colModelItem.searchrules.call($t, val, colModelItem); + } else if($.jgrid && $.jgrid.checkValues) { + try { + ret = $.jgrid.checkValues.call($t, val, -1, colModelItem.searchrules, colModelItem.label); + } catch (e) {} + } + if(ret && ret.length && ret[0] === false) { + p.error = !ret[0]; + p.errmsg = ret[1]; + } + }; + /* moving to common + randId = function() { + return Math.floor(Math.random()*10000).toString(); + }; + */ + + this.onchange = function ( ){ + // clear any error + this.p.error = false; + this.p.errmsg=""; + return $.isFunction(this.p.onChange) ? this.p.onChange.call( this, this.p ) : false; + }; + /* + * Redraw the filter every time when new field is added/deleted + * and field is changed + */ + this.reDraw = function() { + $("table.group:first",this).remove(); + var t = this.createTableForGroup(p.filter, null); + $(this).append(t); + if($.isFunction(this.p.afterRedraw) ) { + this.p.afterRedraw.call(this, this.p); + } + }; + /* + * Creates a grouping data for the filter + * @param group - object + * @param parentgroup - object + */ + this.createTableForGroup = function(group, parentgroup) { + var that = this, i; + // this table will hold all the group (tables) and rules (rows) + var table = $("
"), + // create error message row + align = "left"; + if(this.p.direction === "rtl") { + align = "right"; + table.attr("dir","rtl"); + } + if(parentgroup === null) { + table.append(""); + } + + var tr = $(""); + table.append(tr); + // this header will hold the group operator type and group action buttons for + // creating subgroup "+ {}", creating rule "+" or deleting the group "-" + var th = $(""); + tr.append(th); + + if(this.p.ruleButtons === true) { + // dropdown for: choosing group operator type + var groupOpSelect = $(""); + th.append(groupOpSelect); + // populate dropdown with all posible group operators: or, and + var str= "", selected; + for (i = 0; i < p.groupOps.length; i++) { + selected = group.groupOp === that.p.groupOps[i].op ? " selected='selected'" :""; + str += ""; + } + + groupOpSelect + .append(str) + .bind('change',function() { + group.groupOp = $(groupOpSelect).val(); + that.onchange(); // signals that the filter has changed + }); + } + // button for adding a new subgroup + var inputAddSubgroup =""; + if(this.p.groupButton) { + inputAddSubgroup = $(""); + inputAddSubgroup.bind('click',function() { + if (group.groups === undefined ) { + group.groups = []; + } + + group.groups.push({ + groupOp: p.groupOps[0].op, + rules: [], + groups: [] + }); // adding a new group + + that.reDraw(); // the html has changed, force reDraw + + that.onchange(); // signals that the filter has changed + return false; + }); + } + th.append(inputAddSubgroup); + if(this.p.ruleButtons === true) { + // button for adding a new rule + var inputAddRule = $(""), cm; + inputAddRule.bind('click',function() { + //if(!group) { group = {};} + if (group.rules === undefined) { + group.rules = []; + } + for (i = 0; i < that.p.columns.length; i++) { + // but show only serchable and serchhidden = true fields + var searchable = (that.p.columns[i].search === undefined) ? true: that.p.columns[i].search, + hidden = (that.p.columns[i].hidden === true), + ignoreHiding = (that.p.columns[i].searchoptions.searchhidden === true); + if ((ignoreHiding && searchable) || (searchable && !hidden)) { + cm = that.p.columns[i]; + break; + } + } + if( !cm ) { + return false; + } + var opr; + if( cm.searchoptions.sopt ) {opr = cm.searchoptions.sopt;} + else if(that.p.sopt) { opr= that.p.sopt; } + else if ( $.inArray(cm.searchtype, that.p.strarr) !== -1 ) {opr = that.p.stropts;} + else {opr = that.p.numopts;} + + group.rules.push({ + field: cm.name, + op: opr[0], + data: "" + }); // adding a new rule + + that.reDraw(); // the html has changed, force reDraw + // for the moment no change have been made to the rule, so + // this will not trigger onchange event + return false; + }); + th.append(inputAddRule); + } + + // button for delete the group + if (parentgroup !== null) { // ignore the first group + var inputDeleteGroup = $(""); + th.append(inputDeleteGroup); + inputDeleteGroup.bind('click',function() { + // remove group from parent + for (i = 0; i < parentgroup.groups.length; i++) { + if (parentgroup.groups[i] === group) { + parentgroup.groups.splice(i, 1); + break; + } + } + + that.reDraw(); // the html has changed, force reDraw + + that.onchange(); // signals that the filter has changed + return false; + }); + } + + // append subgroup rows + if (group.groups !== undefined) { + for (i = 0; i < group.groups.length; i++) { + var trHolderForSubgroup = $(""); + table.append(trHolderForSubgroup); + + var tdFirstHolderForSubgroup = $(""); + trHolderForSubgroup.append(tdFirstHolderForSubgroup); + + var tdMainHolderForSubgroup = $(""); + tdMainHolderForSubgroup.append(this.createTableForGroup(group.groups[i], group)); + trHolderForSubgroup.append(tdMainHolderForSubgroup); + } + } + if(group.groupOp === undefined) { + group.groupOp = that.p.groupOps[0].op; + } + + // append rules rows + var suni = that.p.ruleButtons && that.p.uniqueSearchFields; + if( suni ) { + for (var ii = 0; ii < that.p.columns.length; ii++) { + if(that.p.columns[ii].inlist) { + that.p.columns[ii].search = true; + } + } + } + if (group.rules !== undefined) { + for (i = 0; i < group.rules.length; i++) { + table.append( + this.createTableRowForRule(group.rules[i], group) + ); + if( suni ) { + var field = group.rules[i].field; + for (var ii = 0; ii < that.p.columns.length; ii++) { + if(field === that.p.columns[ii].name) { + that.p.columns[ii].search = false; + break; + } + } + } + } + } + return table; + }; + /* + * Create the rule data for the filter + */ + this.createTableRowForRule = function(rule, group ) { + // save current entity in a variable so that it could + // be referenced in anonimous method calls + + var that=this, $t = getGrid(), tr = $(""), + //document.createElement("tr"), + + // first column used for padding + //tdFirstHolderForRule = document.createElement("td"), + i, op, trpar, cm, str="", selected; + //tdFirstHolderForRule.setAttribute("class", "first"); + tr.append(""); + + + // create field container + var ruleFieldTd = $(""); + tr.append(ruleFieldTd); + + + // dropdown for: choosing field + var ruleFieldSelect = $(""), ina, aoprs = []; + ruleFieldTd.append(ruleFieldSelect); + ruleFieldSelect.bind('change',function() { + rule.field = $(ruleFieldSelect).val(); + + trpar = $(this).parents("tr:first"); + $(".data",trpar).empty(); + for (i=0;i"+that.p.ops[ina].text+""; + so++; + } + } + $(".selectopts",trpar).empty().append( s ); + $(".selectopts",trpar)[0].selectedIndex = 0; + if( $.jgrid.msie && $.jgrid.msiever() < 9) { + var sw = parseInt($("select.selectopts",trpar)[0].offsetWidth, 10) + 1; + $(".selectopts",trpar).width( sw ); + $(".selectopts",trpar).css("width","auto"); + } + // data + $(".data",trpar).append( elm ); + $.jgrid.bindEv.call($t, elm, cm.searchoptions); + $(".input-elm",trpar).bind('change',function( e ) { + var elem = e.target; + rule.data = elem.nodeName.toUpperCase() === "SPAN" && cm.searchoptions && $.isFunction(cm.searchoptions.custom_value) ? + cm.searchoptions.custom_value.call($t, $(elem).children(".customelement:first"), 'get') : elem.value; + that.onchange(); // signals that the filter has changed + }); + setTimeout(function(){ //IE, Opera, Chrome + rule.data = $(elm).val(); + that.onchange(); // signals that the filter has changed + }, 0); + }); + + // populate drop down with user provided column definitions + var j=0; + for (i = 0; i < that.p.columns.length; i++) { + // but show only serchable and serchhidden = true fields + var searchable = (that.p.columns[i].search === undefined) ? true: that.p.columns[i].search, + hidden = (that.p.columns[i].hidden === true), + ignoreHiding = (that.p.columns[i].searchoptions.searchhidden === true); + if ((ignoreHiding && searchable) || (searchable && !hidden)) { + selected = ""; + if(rule.field === that.p.columns[i].name) { + selected = " selected='selected'"; + j=i; + } + str += ""; + } + } + ruleFieldSelect.append( str ); + + + // create operator container + var ruleOperatorTd = $(""); + tr.append(ruleOperatorTd); + cm = p.columns[j]; + // create it here so it can be referentiated in the onchange event + //var RD = that.createElement(rule, rule.data); + cm.searchoptions.id = $.jgrid.randId(); + if(isIE && cm.inputtype === "text") { + if(!cm.searchoptions.size) { + cm.searchoptions.size = 10; + } + } + cm.searchoptions.name = rule.field; + cm.searchoptions.oper = 'filter'; + var ruleDataInput = $.jgrid.createEl.call($t, cm.inputtype,cm.searchoptions, rule.data, true, that.p.ajaxSelectOptions || {}, true); + if(rule.op === 'nu' || rule.op === 'nn') { + $(ruleDataInput).attr('readonly','true'); + $(ruleDataInput).attr('disabled','true'); + } //retain the state of disabled text fields in case of null ops + // dropdown for: choosing operator + var ruleOperatorSelect = $(""); + ruleOperatorTd.append(ruleOperatorSelect); + ruleOperatorSelect.bind('change',function() { + rule.op = $(ruleOperatorSelect).val(); + trpar = $(this).parents("tr:first"); + var rd = $(".input-elm",trpar)[0]; + if (rule.op === "nu" || rule.op === "nn") { // disable for operator "is null" and "is not null" + rule.data = ""; + if(rd.tagName.toUpperCase() !== 'SELECT') { rd.value = ""; } + rd.setAttribute("readonly", "true"); + rd.setAttribute("disabled", "true"); + } else { + if(rd.tagName.toUpperCase() === 'SELECT') { rule.data = rd.value; } + rd.removeAttribute("readonly"); + rd.removeAttribute("disabled"); + } + + that.onchange(); // signals that the filter has changed + }); + + // populate drop down with all available operators + if( cm.searchoptions.sopt ) {op = cm.searchoptions.sopt;} + else if(that.p.sopt) { op= that.p.sopt; } + else if ($.inArray(cm.searchtype, that.p.strarr) !== -1) {op = that.p.stropts;} + else {op = that.p.numopts;} + str=""; + $.each(that.p.ops, function() { aoprs.push(this.oper); }); + for ( i = 0; i < op.length; i++) { + ina = $.inArray(op[i],aoprs); + if(ina !== -1) { + selected = rule.op === that.p.ops[ina].oper ? " selected='selected'" : ""; + str += ""; + } + } + ruleOperatorSelect.append( str ); + // create data container + var ruleDataTd = $(""); + tr.append(ruleDataTd); + + // textbox for: data + // is created previously + //ruleDataInput.setAttribute("type", "text"); + ruleDataTd.append(ruleDataInput); + $.jgrid.bindEv.call($t, ruleDataInput, cm.searchoptions); + $(ruleDataInput) + .addClass("input-elm " + classes.srInput ) + .bind('change', function() { + rule.data = cm.inputtype === 'custom' ? cm.searchoptions.custom_value.call($t, $(this).children(".customelement:first"),'get') : $(this).val(); + that.onchange(); // signals that the filter has changed + }); + + // create action container + var ruleDeleteTd = $(""); + tr.append(ruleDeleteTd); + + // create button for: delete rule + if(this.p.ruleButtons === true) { + var ruleDeleteInput = $(""); + ruleDeleteTd.append(ruleDeleteInput); + //$(ruleDeleteInput).html("").height(20).width(30).button({icons: { primary: "ui-icon-minus", text:false}}); + ruleDeleteInput.bind('click',function() { + // remove rule from group + for (i = 0; i < group.rules.length; i++) { + if (group.rules[i] === rule) { + group.rules.splice(i, 1); + break; + } + } + + that.reDraw(); // the html has changed, force reDraw + + that.onchange(); // signals that the filter has changed + return false; + }); + } + return tr; + }; + + this.getStringForGroup = function(group) { + var s = "(", index; + if (group.groups !== undefined) { + for (index = 0; index < group.groups.length; index++) { + if (s.length > 1) { + s += " " + group.groupOp + " "; + } + try { + s += this.getStringForGroup(group.groups[index]); + } catch (eg) {alert(eg);} + } + } + + if (group.rules !== undefined) { + try{ + for (index = 0; index < group.rules.length; index++) { + if (s.length > 1) { + s += " " + group.groupOp + " "; + } + s += this.getStringForRule(group.rules[index]); + } + } catch (e) {alert(e);} + } + + s += ")"; + + if (s === "()") { + return ""; // ignore groups that don't have rules + } + return s; + }; + this.getStringForRule = function(rule) { + var opUF = "",opC="", i, cm, ret, val, + numtypes = ['int', 'integer', 'float', 'number', 'currency']; // jqGrid + for (i = 0; i < this.p.ops.length; i++) { + if (this.p.ops[i].oper === rule.op) { + opUF = this.p.operands.hasOwnProperty(rule.op) ? this.p.operands[rule.op] : ""; + opC = this.p.ops[i].oper; + break; + } + } + for (i=0; i 1) { + if (group.groupOp === "OR") { + s += " || "; + } + else { + s += " && "; + } + } + s += getStringForGroup(group.groups[index]); + } + } + + if (group.rules !== undefined) { + for (index = 0; index < group.rules.length; index++) { + if (s.length > 1) { + if (group.groupOp === "OR") { + s += " || "; + } + else { + s += " && "; + } + } + s += getStringRule(group.rules[index]); + } + } + + s += ")"; + + if (s === "()") { + return ""; // ignore groups that don't have rules + } + return s; + } + + return getStringForGroup(this.p.filter); + }; + + // Here we init the filter + this.reDraw(); + + if(this.p.showQuery) { + this.onchange(); + } + // mark is as created so that it will not be created twice on this element + this.filter = true; + }); +}; +$.extend($.fn.jqFilter,{ + /* + * Return SQL like string. Can be used directly + */ + toSQLString : function() + { + var s =""; + this.each(function(){ + s = this.toUserFriendlyString(); + }); + return s; + }, + /* + * Return filter data as object. + */ + filterData : function() + { + var s; + this.each(function(){ + s = this.p.filter; + }); + return s; + + }, + getParameter : function (param) { + if(param !== undefined) { + if (this.p.hasOwnProperty(param) ) { + return this.p[param]; + } + } + return this.p; + }, + resetFilter: function() { + return this.each(function(){ + this.resetFilter(); + }); + }, + addFilter: function (pfilter) { + if (typeof pfilter === "string") { + pfilter = $.jgrid.parse( pfilter ); + } + this.each(function(){ + this.p.filter = pfilter; + this.reDraw(); + this.onchange(); + }); + } + +}); +$.jgrid.extend({ + filterToolbar : function(p){ + var regional = $.jgrid.getRegional(this[0], 'search'); + p = $.extend({ + autosearch: true, + autosearchDelay: 500, + searchOnEnter : true, + beforeSearch: null, + afterSearch: null, + beforeClear: null, + afterClear: null, + onClearSearchValue : null, + searchurl : '', + stringResult: false, + groupOp: 'AND', + defaultSearch : "bw", + searchOperators : false, + resetIcon : "x", + splitSelect : ",", + groupOpSelect : "OR", + operands : { "eq" :"==", "ne":"!","lt":"<","le":"<=","gt":">","ge":">=","bw":"^","bn":"!^","in":"=","ni":"!=","ew":"|","en":"!@","cn":"~","nc":"!~","nu":"#","nn":"!#", "bt":"..."} + }, regional , p || {}); + return this.each(function(){ + var $t = this; + if($t.p.filterToolbar) { return; } + if(!$($t).data('filterToolbar')) { + $($t).data('filterToolbar', p); + } + if($t.p.force_regional) { + p = $.extend(p, regional); + } + var classes = $.jgrid.styleUI[($t.p.styleUI || 'jQueryUI')].filter, + common = $.jgrid.styleUI[($t.p.styleUI || 'jQueryUI')].common, + base = $.jgrid.styleUI[($t.p.styleUI || 'jQueryUI')].base, + + triggerToolbar = function() { + var sdata={}, j=0, v, nm, sopt={},so, ms = false, ssfield = [], bbt =false, sop; + $.each($t.p.colModel,function(){ + var $elem = $("#gs_"+ $t.p.idPrefix + $.jgrid.jqID(this.name), (this.frozen===true && $t.p.frozenColumns === true) ? $t.grid.fhDiv : $t.grid.hDiv); + nm = this.index || this.name; + sop = this.searchoptions || {}; + if(p.searchOperators && sop.searchOperMenu) { + so = $elem.parent().prev().children("a").attr("soper") || p.defaultSearch; + } else { + so = (sop.sopt) ? sop.sopt[0] : this.stype==='select' ? 'eq' : p.defaultSearch; + } + v = this.stype === "custom" && $.isFunction(sop.custom_value) && $elem.length > 0 && $elem[0].nodeName.toUpperCase() === "SPAN" ? + sop.custom_value.call($t, $elem.children(".customelement:first"), "get") : + $elem.val(); + // detect multiselect + if(this.stype === 'select' && sop.multiple && $.isArray(v) && v.length) { + ms = true; + ssfield.push(nm); + v= v.length === 1 ? v[0] : v; + } + if(so==="bt") { + bbt = true; + } + if(v || so==="nu" || so==="nn") { + sdata[nm] = v; + sopt[nm] = so; + j++; + } else { + try { + delete $t.p.postData[nm]; + } catch (z) {} + } + }); + var sd = j>0 ? true : false; + if(p.stringResult === true || $t.p.datatype === "local" || p.searchOperators === true) + { + var ruleGroup = "{\"groupOp\":\"" + p.groupOp + "\",\"rules\":["; + var gi=0; + $.each(sdata,function(i,n){ + if (gi > 0) {ruleGroup += ",";} + ruleGroup += "{\"field\":\"" + i + "\","; + ruleGroup += "\"op\":\"" + sopt[i] + "\","; + n+=""; + ruleGroup += "\"data\":\"" + n.replace(/\\/g,'\\\\').replace(/\"/g,'\\"') + "\"}"; + gi++; + }); + ruleGroup += "]}"; + // multiselect + var filters, rules, k,str, rule, ssdata, group; + if(ms) { + filters = $.jgrid.parse(ruleGroup);//, rules, k,str, rule, ssdata, group; + if(filters.rules && filters.rules.length) { + rules = filters.rules; + for(k=0;k < rules.length; k++) { + rule = rules[k]; + if($.inArray(rule.filed, ssfield)) { + ssdata = rule.data.split(p.splitSelect); + if(ssdata.length > 1) { + if(filters.groups === undefined) { + filters.groups = []; + } + group = { groupOp: p.groupOpSelect, groups: [], rules: [] }; + filters.groups.push(group); + $.each(ssdata,function(l) { + str = ssdata[l]; + if (str) { + group.rules.push({ data: ssdata[l], op: rule.op, field: rule.field}); + } + }); + rules.splice(k, 1); + k--; + } + } + } + } + //ruleGroup = JSON.stringify( filters ); + } + if(bbt) { + if(!$.isPlainObject(filters)) { + filters = $.jgrid.parse(ruleGroup); + } + if(filters.rules && filters.rules.length) { + rules = filters.rules; + for(k=0;k < rules.length; k++) { + rule = rules[k]; + if(rule.op === "bt") { + ssdata = rule.data.split("..."); + if(ssdata.length > 1) { + if(filters.groups === undefined) { + filters.groups = []; + } + group = { groupOp: 'AND', groups: [], rules: [] }; + filters.groups.push(group); + $.each(ssdata,function(l) { + var btop = l === 0 ? 'ge' : 'le'; + str = ssdata[l]; + if(str) { + group.rules.push({ data: ssdata[l], op: btop, field: rule.field}); + } + }); + rules.splice(k, 1); + k--; + } + } + } + } + } + if(bbt || ms ) { + ruleGroup = JSON.stringify( filters ); + } + $.extend($t.p.postData,{filters:ruleGroup}); + $.each(['searchField', 'searchString', 'searchOper'], function(i, n){ + if($t.p.postData.hasOwnProperty(n)) { delete $t.p.postData[n];} + }); + } else { + $.extend($t.p.postData,sdata); + } + var saveurl; + if($t.p.searchurl) { + saveurl = $t.p.url; + $($t).jqGrid("setGridParam",{url:$t.p.searchurl}); + } + var bsr = $($t).triggerHandler("jqGridToolbarBeforeSearch") === 'stop' ? true : false; + if(!bsr && $.isFunction(p.beforeSearch)){bsr = p.beforeSearch.call($t);} + if(!bsr) { $($t).jqGrid("setGridParam",{search:sd}).trigger("reloadGrid",[{page:1}]); } + if(saveurl) {$($t).jqGrid("setGridParam",{url:saveurl});} + $($t).triggerHandler("jqGridToolbarAfterSearch"); + if($.isFunction(p.afterSearch)){p.afterSearch.call($t);} + }, + clearToolbar = function(trigger){ + var sdata={}, j=0, nm; + trigger = (typeof trigger !== 'boolean') ? true : trigger; + $.each($t.p.colModel,function(){ + var v, $elem = $("#gs_"+$t.p.idPrefix+$.jgrid.jqID(this.name),(this.frozen===true && $t.p.frozenColumns === true) ? $t.grid.fhDiv : $t.grid.hDiv); + if(this.searchoptions && this.searchoptions.defaultValue !== undefined) { + v = this.searchoptions.defaultValue; + } + nm = this.index || this.name; + switch (this.stype) { + case 'select' : + $elem.find("option").each(function (i){ + if(i===0) { this.selected = true; } + if ($(this).val() === v) { + this.selected = true; + return false; + } + }); + if ( v !== undefined ) { + // post the key and not the text + sdata[nm] = v; + j++; + } else { + try { + delete $t.p.postData[nm]; + } catch(e) {} + } + break; + case 'text': + $elem.val(v || ""); + if(v !== undefined) { + sdata[nm] = v; + j++; + } else { + try { + delete $t.p.postData[nm]; + } catch (y){} + } + break; + case 'custom': + if ($.isFunction(this.searchoptions.custom_value) && $elem.length > 0 && $elem[0].nodeName.toUpperCase() === "SPAN") { + this.searchoptions.custom_value.call($t, $elem.children(".customelement:first"), "set", v || ""); + } + break; + } + }); + var sd = j>0 ? true : false; + $t.p.resetsearch = true; + if(p.stringResult === true || $t.p.datatype === "local") { + var ruleGroup = "{\"groupOp\":\"" + p.groupOp + "\",\"rules\":["; + var gi=0; + $.each(sdata,function(i,n){ + if (gi > 0) {ruleGroup += ",";} + ruleGroup += "{\"field\":\"" + i + "\","; + ruleGroup += "\"op\":\"" + "eq" + "\","; + n+=""; + ruleGroup += "\"data\":\"" + n.replace(/\\/g,'\\\\').replace(/\"/g,'\\"') + "\"}"; + gi++; + }); + ruleGroup += "]}"; + $.extend($t.p.postData,{filters:ruleGroup}); + $.each(['searchField', 'searchString', 'searchOper'], function(i, n){ + if($t.p.postData.hasOwnProperty(n)) { delete $t.p.postData[n];} + }); + } else { + $.extend($t.p.postData,sdata); + } + var saveurl; + if($t.p.searchurl) { + saveurl = $t.p.url; + $($t).jqGrid("setGridParam",{url:$t.p.searchurl}); + } + var bcv = $($t).triggerHandler("jqGridToolbarBeforeClear") === 'stop' ? true : false; + if(!bcv && $.isFunction(p.beforeClear)){bcv = p.beforeClear.call($t);} + if(!bcv) { + if(trigger) { + $($t).jqGrid("setGridParam",{search:sd}).trigger("reloadGrid",[{page:1}]); + } + } + if(saveurl) {$($t).jqGrid("setGridParam",{url:saveurl});} + $($t).triggerHandler("jqGridToolbarAfterClear"); + if($.isFunction(p.afterClear)){p.afterClear();} + }, + toggleToolbar = function(){ + var trow = $("tr.ui-search-toolbar",$t.grid.hDiv), + trow2 = $t.p.frozenColumns === true ? $("tr.ui-search-toolbar",$t.grid.fhDiv) : false; + if(trow.css("display") === 'none') { + trow.show(); + if(trow2) { + trow2.show(); + } + } else { + trow.hide(); + if(trow2) { + trow2.hide(); + } + } + }, + buildRuleMenu = function( elem, left, top ){ + $("#sopt_menu").remove(); + + left=parseInt(left,10); + top=parseInt(top,10) + 18; + + var fs = $('.ui-jqgrid-view').css('font-size') || '11px'; + var str = '"; + $('body').append(str); + $("#sopt_menu").addClass("ui-menu " + classes.menu_widget); + $("#sopt_menu > li > a").hover( + function(){ $(this).addClass(common.hover); }, + function(){ $(this).removeClass(common.hover); } + ).click(function() { + var v = $(this).attr("value"), + oper = $(this).attr("oper"); + $($t).triggerHandler("jqGridToolbarSelectOper", [v, oper, elem]); + $("#sopt_menu").hide(); + $(elem).text(oper).attr("soper",v); + if(p.autosearch===true){ + var inpelm = $(elem).parent().next().children()[0]; + if( $(inpelm).val() || v==="nu" || v ==="nn") { + triggerToolbar(); + } + } + }); + }; + // create the row + var tr = $(""), + timeoutHnd, rules, filterobj; + if( p.restoreFromFilters ) { + filterobj = $t.p.postData.filters; + if(filterobj) { + if( typeof filterobj === "string") { + filterobj = $.jgrid.parse( filterobj ); + } + rules = filterobj.rules.length ? filterobj.rules : false; + } + } + $.each($t.p.colModel,function(ci){ + var cm=this, soptions, select="", sot="=", so, i, st, csv, df, elem, restores, + th = $(""), + thd = $("
"), + stbl = $("
"); + if(this.hidden===true) { $(th).css("display","none");} + this.search = this.search === false ? false : true; + if(this.stype === undefined) {this.stype='text';} + this.searchoptions = this.searchoptions || {}; + if(this.searchoptions.searchOperMenu === undefined) { + this.searchoptions.searchOperMenu = true; + } + soptions = $.extend({},this.searchoptions , {name:cm.index || cm.name, id: "gs_"+$t.p.idPrefix+cm.name, oper:'search'}); + if(this.search){ + if( p.restoreFromFilters && rules) { + restores = false; + for( var is = 0; is < rules.length; is++) { + if(rules[is].field ) { + var snm = cm.index || cm.name; + if( snm === rules[is].field) { + restores = rules[is]; + break; + } + } + } + } + if(p.searchOperators) { + so = (soptions.sopt) ? soptions.sopt[0] : cm.stype==='select' ? 'eq' : p.defaultSearch; + // overwrite search operators + if( p.restoreFromFilters && restores) { + so = restores.op; + } + for(i = 0;i"+sot+"" : ""; + } + $("td:eq(0)",stbl).attr("colindex",ci).append(select); + if(soptions.clearSearch === undefined) { + soptions.clearSearch = true; + } + if(soptions.clearSearch) { + csv = p.resetTitle || 'Clear Search Value'; + $("td:eq(2)",stbl).append(""+p.resetIcon+""); + } else { + $("td:eq(2)", stbl).hide(); + } + if(this.surl) { + soptions.dataUrl = this.surl; + } + df=""; + if(soptions.defaultValue ) { + df = $.isFunction(soptions.defaultValue) ? soptions.defaultValue.call($t) : soptions.defaultValue; + } + //overwrite default value if restore from filters + if( p.restoreFromFilters && restores) { + df = restores.data; + } + elem = $.jgrid.createEl.call($t, this.stype, soptions , df, false, $.extend({},$.jgrid.ajaxOptions, $t.p.ajaxSelectOptions || {})); + $(elem).addClass( classes.srInput ); + $("td:eq(1)",stbl).append(elem); + $(thd).append(stbl); + if(soptions.dataEvents == null ) { + soptions.dataEvents = []; + } + switch (this.stype) + { + case "select": + if(p.autosearch === true) { + soptions.dataEvents.push({ + type : "change", + fn : function() { + triggerToolbar(); + return false; + } + }); + } + break; + case "text": + if(p.autosearch===true){ + if(p.searchOnEnter) { + soptions.dataEvents.push({ + type: "keypress", + fn : function(e) { + var key = e.charCode || e.keyCode || 0; + if(key === 13){ + triggerToolbar(); + return false; + } + return this; + } + }); + } else { + soptions.dataEvents.push({ + type: "keydown", + fn : function(e) { + var key = e.which; + switch (key) { + case 13: + return false; + case 9 : + case 16: + case 37: + case 38: + case 39: + case 40: + case 27: + break; + default : + if(timeoutHnd) { clearTimeout(timeoutHnd); } + timeoutHnd = setTimeout(function(){triggerToolbar();}, p.autosearchDelay); + } + } + }); + } + } + break; + } + + $.jgrid.bindEv.call($t, elem , soptions); + } + $(th).append(thd); + $(tr).append(th); + if(!p.searchOperators || select === "") { + $("td:eq(0)",stbl).hide(); + } + }); + $("table thead",$t.grid.hDiv).append(tr); + if(p.searchOperators) { + $(".soptclass",tr).click(function(e){ + var offset = $(this).offset(), + left = ( offset.left ), + top = ( offset.top); + buildRuleMenu(this, left, top ); + e.stopPropagation(); + }); + $("body").on('click', function(e){ + if(e.target.className !== "soptclass") { + $("#sopt_menu").remove(); + } + }); + } + $(".clearsearchclass",tr).click(function() { + var ptr = $(this).parents("tr:first"), + coli = parseInt($("td.ui-search-oper", ptr).attr('colindex'),10), + sval = $.extend({},$t.p.colModel[coli].searchoptions || {}), + dval = sval.defaultValue ? sval.defaultValue : "", + elem; + if($t.p.colModel[coli].stype === "select") { + elem = $("td.ui-search-input select", ptr); + if(dval) { + elem.val( dval ); + } else { + elem[0].selectedIndex = 0; + } + } else { + elem = $("td.ui-search-input input", ptr); + elem.val( dval ); + } + $($t).triggerHandler("jqGridToolbarClearVal",[elem[0], coli, sval, dval]); + if($.isFunction(p.onClearSearchValue)) { + p.onClearSearchValue.call($t, elem[0], coli, sval, dval); + } + // ToDo custom search type + if(p.autosearch===true){ + triggerToolbar(); + } + + }); + this.p.filterToolbar = true; + this.triggerToolbar = triggerToolbar; + this.clearToolbar = clearToolbar; + this.toggleToolbar = toggleToolbar; + }); + }, + destroyFilterToolbar: function () { + return this.each(function () { + if (!this.p.filterToolbar) { + return; + } + this.triggerToolbar = null; + this.clearToolbar = null; + this.toggleToolbar = null; + this.p.filterToolbar = false; + $(this.grid.hDiv).find("table thead tr.ui-search-toolbar").remove(); + }); + }, + refreshFilterToolbar : function ( p ) { + p = $.extend(true, { + filters : "", + onClearVal : null, + onSetVal : null + }, p || {}); + return this.each(function () { + var $t = this, cm = $t.p.colModel, i, l = $t.p.colModel.length, + searchitem, filters, rules, rule, ssfield =[], ia; + // clear the values on toolbar. + // do not call clearToolbar + if(!$t.p.filterToolbar) { + return; + } + for (i = 0; i < l; i++) { + ssfield.push(cm[i].name); + searchitem = $("#gs_" +$t.p.idPrefix+ $.jgrid.jqID(cm[i].name)); + switch (cm[i].stype) { + case 'select' : + case 'text' : + searchitem.val(""); + break; + } + if($.isFunction(p.onClearVal)) { + p.onClearVal.call($t, searchitem, cm[i].name); + } + } + function setrules (filter) { + if(filter && filter.rules) { // condition to exit + rules = filter.rules; + l = rules.length; + for (i = 0; i < l; i++) { + rule = rules[i]; + ia = $.inArray(rule.field, ssfield); + if( ia !== -1) { + searchitem = $("#gs_" + $t.p.idPrefix + $.jgrid.jqID(cm[ia].name)); + // problem for between operator + if ( searchitem.length > 0) { + if (cm[ia].stype === "select") { + searchitem.find("option[value='" + $.jgrid.jqID(rule.data) + "']").prop('selected', true); + } else if (cm[ia].stype === "text") { + searchitem.val(rule.data); + } + if($.isFunction(p.onSetVal)) { + p.onSetVal.call($t, searchitem, cm[ia].name); + } + } + } + } + if(filter.groups) { + for(var k=0;k","lt":"<","le":"<=","gt":">","ge":">=","bw":"LIKE","bn":"NOT LIKE","in":"IN","ni":"NOT IN","ew":"LIKE","en":"NOT LIKE","cn":"LIKE","nc":"NOT LIKE","nu":"IS NULL","nn":"ISNOT NULL"} + }, regional, p || {}); + return this.each(function() { + var $t = this; + if(!$t.grid) {return;} + var fid = "fbox_"+$t.p.id, + showFrm = true, + mustReload = true, + IDs = {themodal:'searchmod'+fid,modalhead:'searchhd'+fid,modalcontent:'searchcnt'+fid, scrollelm : fid}, + defaultFilters = $t.p.postData[p.sFilter], + fl, + classes = $.jgrid.styleUI[($t.p.styleUI || 'jQueryUI')].filter, + common = $.jgrid.styleUI[($t.p.styleUI || 'jQueryUI')].common; + p.styleUI = $t.p.styleUI; + if(typeof defaultFilters === "string") { + defaultFilters = $.jgrid.parse( defaultFilters ); + } + if(p.recreateFilter === true) { + $("#"+$.jgrid.jqID(IDs.themodal)).remove(); + } + function showFilter(_filter) { + showFrm = $($t).triggerHandler("jqGridFilterBeforeShow", [_filter]); + if(showFrm === undefined) { + showFrm = true; + } + if(showFrm && $.isFunction(p.beforeShowSearch)) { + showFrm = p.beforeShowSearch.call($t,_filter); + } + if(showFrm) { + $.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(fid),jqm:p.jqModal, modal:p.modal, overlay: p.overlay, toTop: p.toTop}); + $($t).triggerHandler("jqGridFilterAfterShow", [_filter]); + if($.isFunction(p.afterShowSearch)) { + p.afterShowSearch.call($t, _filter); + } + } + } + if ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) { + showFilter($("#fbox_"+$.jgrid.jqID( $t.p.id ))); + } else { + var fil = $("
").insertBefore("#gview_"+$.jgrid.jqID($t.p.id)), + align = "left", butleft =""; + if($t.p.direction === "rtl") { + align = "right"; + butleft = " style='text-align:left'"; + fil.attr("dir","rtl"); + } + var columns = $.extend([],$t.p.colModel), + bS =""+p.Find+"", + bC =""+p.Reset+"", + bQ = "", tmpl="", colnm, found = false, bt, cmi=-1; + if(p.showQuery) { + bQ ="Query"; + } + if(!p.columns.length) { + $.each(columns, function(i,n){ + if(!n.label) { + n.label = $t.p.colNames[i]; + } + // find first searchable column and set it if no default filter + if(!found) { + var searchable = (n.search === undefined) ? true: n.search , + hidden = (n.hidden === true), + ignoreHiding = (n.searchoptions && n.searchoptions.searchhidden === true); + if ((ignoreHiding && searchable) || (searchable && !hidden)) { + found = true; + colnm = n.index || n.name; + cmi =i; + } + } + }); + } else { + columns = p.columns; + cmi = 0; + colnm = columns[0].index || columns[0].name; + } + // old behaviour + if( (!defaultFilters && colnm) || p.multipleSearch === false ) { + var cmop = "eq"; + if(cmi >=0 && columns[cmi].searchoptions && columns[cmi].searchoptions.sopt) { + cmop = columns[cmi].searchoptions.sopt[0]; + } else if(p.sopt && p.sopt.length) { + cmop = p.sopt[0]; + } + defaultFilters = {groupOp: "AND", rules: [{field: colnm, op: cmop, data: ""}]}; + } + found = false; + if(p.tmplNames && p.tmplNames.length) { + found = true; + tmpl = ""+ p.tmplLabel +""; + tmpl += ""; + } + + bt = ""+tmpl+"

"+bC+""+bQ+bS+"
"; + fid = $.jgrid.jqID( fid); + $("#"+fid).jqFilter({ + columns: columns, + sortStrategy: p.sortStrategy, + filter: p.loadDefaults ? defaultFilters : null, + showQuery: p.showQuery, + errorcheck : p.errorcheck, + sopt: p.sopt, + groupButton : p.multipleGroup, + ruleButtons : p.multipleSearch, + uniqueSearchFields : p.uniqueSearchFields, + afterRedraw : p.afterRedraw, + ops : p.odata, + operands : p.operands, + ajaxSelectOptions: $t.p.ajaxSelectOptions, + groupOps: p.groupOps, + onChange : function() { + if(this.p.showQuery) { + $('.query',this).html(this.toUserFriendlyString()); + } + if ($.isFunction(p.afterChange)) { + p.afterChange.call($t, $("#"+fid), p); + } + }, + direction : $t.p.direction, + id: $t.p.id + }); + fil.append( bt ); + if(found && p.tmplFilters && p.tmplFilters.length) { + $(".ui-template", fil).bind('change', function(){ + var curtempl = $(this).val(); + if(curtempl==="default") { + $("#"+fid).jqFilter('addFilter', defaultFilters); + } else { + $("#"+fid).jqFilter('addFilter', p.tmplFilters[parseInt(curtempl,10)]); + } + return false; + }); + } + if(p.multipleGroup === true) {p.multipleSearch = true;} + $($t).triggerHandler("jqGridFilterInitialize", [$("#"+fid)]); + if($.isFunction(p.onInitializeSearch) ) { + p.onInitializeSearch.call($t, $("#"+fid)); + } + p.gbox = "#gbox_"+fid; + if (p.layer) { + $.jgrid.createModal(IDs ,fil,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0], "#"+$.jgrid.jqID(p.layer), {position: "relative"}); + } else { + $.jgrid.createModal(IDs ,fil,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0]); + } + if (p.searchOnEnter || p.closeOnEscape) { + $("#"+$.jgrid.jqID(IDs.themodal)).keydown(function (e) { + var $target = $(e.target); + if (p.searchOnEnter && e.which === 13 && // 13 === $.ui.keyCode.ENTER + !$target.hasClass('add-group') && !$target.hasClass('add-rule') && + !$target.hasClass('delete-group') && !$target.hasClass('delete-rule') && + (!$target.hasClass("fm-button") || !$target.is("[id$=_query]"))) { + $("#"+fid+"_search").click(); + return false; + } + if (p.closeOnEscape && e.which === 27) { // 27 === $.ui.keyCode.ESCAPE + $("#"+$.jgrid.jqID(IDs.modalhead)).find(".ui-jqdialog-titlebar-close").click(); + return false; + } + }); + } + if(bQ) { + $("#"+fid+"_query").bind('click', function(){ + $(".queryresult", fil).toggle(); + return false; + }); + } + if (p.stringResult===undefined) { + // to provide backward compatibility, inferring stringResult value from multipleSearch + p.stringResult = p.multipleSearch; + } + $("#"+fid+"_search").bind('click', function(){ + var sdata={}, res, filters; + fl = $("#"+fid); + fl.find(".input-elm:focus").change(); + filters = fl.jqFilter('filterData'); + if(p.errorcheck) { + fl[0].hideError(); + if(!p.showQuery) {fl.jqFilter('toSQLString');} + if(fl[0].p.error) { + fl[0].showError(); + return false; + } + } + + if(p.stringResult) { + try { + res = JSON.stringify(filters); + } catch (e2) { } + if(typeof res==="string") { + sdata[p.sFilter] = res; + $.each([p.sField,p.sValue, p.sOper], function() {sdata[this] = "";}); + } + } else { + if(p.multipleSearch) { + sdata[p.sFilter] = filters; + $.each([p.sField,p.sValue, p.sOper], function() {sdata[this] = "";}); + } else { + sdata[p.sField] = filters.rules[0].field; + sdata[p.sValue] = filters.rules[0].data; + sdata[p.sOper] = filters.rules[0].op; + sdata[p.sFilter] = ""; + } + } + $t.p.search = true; + $.extend($t.p.postData,sdata); + mustReload = $($t).triggerHandler("jqGridFilterSearch"); + if( mustReload === undefined) { + mustReload = true; + } + if(mustReload && $.isFunction(p.onSearch) ) { + mustReload = p.onSearch.call($t, $t.p.filters); + } + if (mustReload !== false) { + $($t).trigger("reloadGrid",[{page:1}]); + } + if(p.closeAfterSearch) { + $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:p.jqModal,onClose: p.onClose}); + } + return false; + }); + $("#"+fid+"_reset").bind('click', function(){ + var sdata={}, + fl = $("#"+fid); + $t.p.search = false; + $t.p.resetsearch = true; + if(p.multipleSearch===false) { + sdata[p.sField] = sdata[p.sValue] = sdata[p.sOper] = ""; + } else { + sdata[p.sFilter] = ""; + } + fl[0].resetFilter(); + if(found) { + $(".ui-template", fil).val("default"); + } + $.extend($t.p.postData,sdata); + mustReload = $($t).triggerHandler("jqGridFilterReset"); + if(mustReload === undefined) { + mustReload = true; + } + if(mustReload && $.isFunction(p.onReset) ) { + mustReload = p.onReset.call($t); + } + if(mustReload !== false) { + $($t).trigger("reloadGrid",[{page:1}]); + } + if (p.closeAfterReset) { + $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:p.jqModal,onClose: p.onClose}); + } + return false; + }); + showFilter($("#"+fid)); + $(".fm-button:not(."+common.disabled+")",fil).hover( + function(){$(this).addClass(common.hover);}, + function(){$(this).removeClass(common.hover);} + ); + } + }); + }, + filterInput : function( val, p) { + p = $.extend(true, { + defaultSearch : 'cn', + groupOp : 'OR', + searchAll : false, + beforeSearch : null, + afterSearch : null + }, p || {}); + return this.each(function(){ + var $t = this; + if(!$t.grid) {return;} + var nm, sop,ruleGroup = "{\"groupOp\":\"" + p.groupOp + "\",\"rules\":[", gi=0, so; + val +=""; + if(!$t.p.datatype === 'local') { return; } + $.each($t.p.colModel,function(){ + nm = this.index || this.name; + sop = this.searchoptions || {}; + so = p.defaultSearch ? p.defaultSearch : (sop.sopt) ? sop.sopt[0] : p.defaultSearch; + this.search = this.search === false ? false : true; + if (this.search || p.searchAll) { + if (gi > 0) {ruleGroup += ",";} + ruleGroup += "{\"field\":\"" + nm + "\","; + ruleGroup += "\"op\":\"" + so + "\","; + ruleGroup += "\"data\":\"" + val.replace(/\\/g,'\\\\').replace(/\"/g,'\\"') + "\"}"; + gi++; + } +}); + ruleGroup += "]}"; + $.extend($t.p.postData,{filters:ruleGroup}); + $.each(['searchField', 'searchString', 'searchOper'], function(i, n){ + if($t.p.postData.hasOwnProperty(n)) { delete $t.p.postData[n];} + }); + var bsr = $($t).triggerHandler("jqGridFilterInputBeforeSearch") === 'stop' ? true : false; + if(!bsr && $.isFunction(p.beforeSearch)){bsr = p.beforeSearch.call($t);} + if(!bsr) { $($t).jqGrid("setGridParam",{search:true}).trigger("reloadGrid",[{page:1}]); } + $($t).triggerHandler("jqGridFilterInputAfterSearch"); + if($.isFunction(p.afterSearch)){p.afterSearch.call($t);} + }); + } +}); + +//module begin +var rp_ge = {}; +$.jgrid.extend({ + editGridRow : function(rowid, p){ + var regional = $.jgrid.getRegional(this[0], 'edit'), + currstyle = this[0].p.styleUI, + styles = $.jgrid.styleUI[currstyle].formedit, + commonstyle = $.jgrid.styleUI[currstyle].common; + + p = $.extend(true, { + top : 0, + left: 0, + width: '500', + datawidth: 'auto', + height: 'auto', + dataheight: 'auto', + modal: false, + overlay : 30, + drag: true, + resize: true, + url: null, + mtype : "POST", + clearAfterAdd :true, + closeAfterEdit : false, + reloadAfterSubmit : true, + onInitializeForm: null, + beforeInitData: null, + beforeShowForm: null, + afterShowForm: null, + beforeSubmit: null, + afterSubmit: null, + onclickSubmit: null, + afterComplete: null, + onclickPgButtons : null, + afterclickPgButtons: null, + editData : {}, + recreateForm : false, + jqModal : true, + closeOnEscape : false, + addedrow : "first", + topinfo : '', + bottominfo: '', + saveicon : [], + closeicon : [], + savekey: [false,13], + navkeys: [false,38,40], + checkOnSubmit : false, + checkOnUpdate : false, + processing : false, + onClose : null, + ajaxEditOptions : {}, + serializeEditData : null, + viewPagerButtons : true, + overlayClass : commonstyle.overlay, + removemodal : true, + form: 'edit', + template : null, + focusField : true + }, regional, p || {}); + rp_ge[$(this)[0].p.id] = p; + return this.each(function(){ + var $t = this; + if (!$t.grid || !rowid) {return;} + $t.p.savedData = {}; + var gID = $t.p.id, + frmgr = "FrmGrid_"+gID, frmtborg = "TblGrid_"+gID, frmtb = "#"+$.jgrid.jqID(frmtborg), frmtb2, + IDs = {themodal:'editmod'+gID,modalhead:'edithd'+gID,modalcontent:'editcnt'+gID, scrollelm : frmgr}, + showFrm = true, maxCols = 1, maxRows=0, postdata, diff, frmoper, + templ = typeof rp_ge[$t.p.id].template === "string" && rp_ge[$t.p.id].template.length > 0, + errors =$.jgrid.getRegional(this, 'errors'); + rp_ge[$t.p.id].styleUI = $t.p.styleUI || 'jQueryUI'; + if($.jgrid.isMobile()) { + rp_ge[$t.p.id].resize = false; + } + if (rowid === "new") { + rowid = "_empty"; + frmoper = "add"; + p.caption=rp_ge[$t.p.id].addCaption; + } else { + p.caption=rp_ge[$t.p.id].editCaption; + frmoper = "edit"; + } + if(!p.recreateForm) { + if( $($t).data("formProp") ) { + $.extend(rp_ge[$(this)[0].p.id], $($t).data("formProp")); + } + } + var closeovrl = true; + if(p.checkOnUpdate && p.jqModal && !p.modal) { + closeovrl = false; + } + function getFormData(){ + var a2 ={}, i; + $(frmtb).find(".FormElement").each(function() { + var celm = $(".customelement", this); + if (celm.length) { + var elem = celm[0], nm = $(elem).attr('name'); + $.each($t.p.colModel, function(){ + if(this.name === nm && this.editoptions && $.isFunction(this.editoptions.custom_value)) { + try { + postdata[nm] = this.editoptions.custom_value.call($t, $("#"+$.jgrid.jqID(nm),frmtb),'get'); + if (postdata[nm] === undefined) {throw "e1";} + } catch (e) { + if (e==="e1") {$.jgrid.info_dialog(errors.errcap,"function 'custom_value' "+rp_ge[$(this)[0]].p.msg.novalue,rp_ge[$(this)[0]].p.bClose, {styleUI : rp_ge[$(this)[0]].p.styleUI });} + else {$.jgrid.info_dialog(errors.errcap,e.message,rp_ge[$(this)[0]].p.bClose, {styleUI : rp_ge[$(this)[0]].p.styleUI });} + } + return true; + } + }); + } else { + switch ($(this).get(0).type) { + case "checkbox": + if($(this).is(":checked")) { + postdata[this.name]= $(this).val(); + } else { + var ofv = $(this).attr("offval"); + postdata[this.name]= ofv; + } + break; + case "select-one": + postdata[this.name]= $(this).val(); + break; + case "select-multiple": + postdata[this.name]= $(this).val(); + postdata[this.name] = postdata[this.name] ? postdata[this.name].join(",") : ""; + break; + case "password": + case "text": + case "textarea": + case "button": + postdata[this.name] = $(this).val(); + break; + case "radio" : + if(a2.hasOwnProperty(this.name)) { + return true; + } else { + a2[this.name] = ($(this).attr("offval") === undefined) ? "off" : $(this).attr("offval"); + } + break; + } + if($t.p.autoencode) { + postdata[this.name] = $.jgrid.htmlEncode(postdata[this.name]); + } + } + }); + for(i in a2 ) { + if( a2.hasOwnProperty(i)) { + var val = $('input[name="'+i+'"]:checked',frmtb).val(); + postdata[i] = (val !== undefined) ? val : a2[i]; + if($t.p.autoencode) { + postdata[i] = $.jgrid.htmlEncode(postdata[i]); + } + } + } + return true; + } + function createData(rowid,obj,tb,maxcols){ + var nm, hc,trdata, cnt=0,tmp, dc,elc, retpos=[], ind=false, + tdtmpl = "  ", tmpl="", i, ffld; //*2 + for (i =1; i<=maxcols;i++) { + tmpl += tdtmpl; + } + if(rowid !== '_empty') { + ind = $(obj).jqGrid("getInd",rowid); + } + $(obj.p.colModel).each( function(i) { + nm = this.name; + // hidden fields are included in the form + if(this.editrules && this.editrules.edithidden === true) { + hc = false; + } else { + hc = this.hidden === true ? true : false; + } + dc = hc ? "style='display:none'" : ""; + if ( nm !== 'cb' && nm !== 'subgrid' && this.editable===true && nm !== 'rn') { + if(ind === false) { + tmp = ""; + } else { + if(nm === obj.p.ExpandColumn && obj.p.treeGrid === true) { + tmp = $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).text(); + } else { + try { + tmp = $.unformat.call(obj, $("td[role='gridcell']:eq("+i+")",obj.rows[ind]),{rowId:rowid, colModel:this},i); + } catch (_) { + tmp = (this.edittype && this.edittype === "textarea") ? $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).text() : $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).html(); + } + if(!tmp || tmp === " " || tmp === " " || (tmp.length===1 && tmp.charCodeAt(0)===160) ) {tmp='';} + } + } + var opt = $.extend({}, this.editoptions || {} ,{id:nm,name:nm, rowId: rowid, oper:'edit'}), + frmopt = $.extend({}, {elmprefix:'',elmsuffix:'',rowabove:false,rowcontent:''}, this.formoptions || {}), + rp = parseInt(frmopt.rowpos,10) || cnt+1, + cp = parseInt((parseInt(frmopt.colpos,10) || 1)*2,10); + if(rowid === "_empty" && opt.defaultValue ) { + tmp = $.isFunction(opt.defaultValue) ? opt.defaultValue.call($t) : opt.defaultValue; + } + if(!this.edittype) {this.edittype = "text";} + if($t.p.autoencode) {tmp = $.jgrid.htmlDecode(tmp);} + elc = $.jgrid.createEl.call($t,this.edittype,opt,tmp,false,$.extend({},$.jgrid.ajaxOptions,obj.p.ajaxSelectOptions || {})); + //if(tmp === "" && this.edittype == "checkbox") {tmp = $(elc).attr("offval");} + //if(tmp === "" && this.edittype == "select") {tmp = $("option:eq(0)",elc).text();} + if(this.edittype === "select") { + tmp = $(elc).val(); + if($(elc).get(0).type === 'select-multiple' && tmp) { + tmp = tmp.join(","); + } + } + if(this.edittype === 'checkbox') { + if($(elc).is(":checked")) { + tmp= $(elc).val(); + } else { + tmp = $(elc).attr("offval"); + } + } + $(elc).addClass("FormElement"); + if( $.inArray(this.edittype, ['text','textarea','password','select']) > -1) { + $(elc).addClass( styles.inputClass ); + } + ffld = true; + if(templ) { + var ftmplfld = $(frm).find("#"+nm); + if(ftmplfld.length){ + ftmplfld.replaceWith( elc ); + } else { + ffld = false; + } + } else { + //-------------------- + trdata = $(tb).find("tr[rowpos="+rp+"]"); + if(frmopt.rowabove) { + var newdata = $(""+frmopt.rowcontent+""); + $(tb).append(newdata); + newdata[0].rp = rp; + } + if ( trdata.length===0 ) { + trdata = $("").addClass("FormData").attr("id","tr_"+nm); + $(trdata).append(tmpl); + $(tb).append(trdata); + trdata[0].rp = rp; + } + $("td:eq("+(cp-2)+")",trdata[0]).html(""); + $("td:eq("+(cp-1)+")",trdata[0]).append(frmopt.elmprefix).append(elc).append(frmopt.elmsuffix); + //------------------------- + } + if( (rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) && ffld) { + $t.p.savedData[nm] = tmp; + } + if(this.edittype==='custom' && $.isFunction(opt.custom_value) ) { + opt.custom_value.call($t, $("#"+nm, frmgr),'set',tmp); + } + $.jgrid.bindEv.call($t, elc, opt); + retpos[cnt] = i; + cnt++; + } + }); + if( cnt > 0) { + var idrow; + if(templ) { + idrow = "").attr("dir","ltr"),d.p.rowList.length>0){t='',t+=""}if("rtl"===h&&(s+=t),d.p.pginput===!0&&(r=""+$.jgrid.template($.jgrid.getRegional(d,"defaults.pgtext",d.p.pgtext)||"","","")+""),d.p.pgbuttons===!0){var w=["first"+b,"prev"+b,"next"+b,"last"+b],x=k(l,"pgButtonBox",!0,"ui-pg-button"),y=[$.jgrid.getRegional(d,"defaults.pgfirst",d.p.pgfirst)||"",$.jgrid.getRegional(d,"defaults.pgprev",d.p.pgprev)||"",$.jgrid.getRegional(d,"defaults.pgnext",d.p.pgnext)||"",$.jgrid.getRegional(d,"defaults.pglast",d.p.pglast)||""];"rtl"===h&&(w.reverse(),y.reverse()),s+="",s+="",s+=""!==r?p+r+p:"",s+="",s+=""}else""!==r&&(s+=r);"ltr"===h&&(s+=t),s+="",d.p.viewrecords===!0&&$("td#"+a+"_"+d.p.recordpos,"#"+c).append("
"),$("td#"+a+"_"+d.p.pagerpos,"#"+c).append(s),j=$("#gbox_"+$.jgrid.jqID(d.p.id)).css("font-size")||"11px",$("#gbox_"+$.jgrid.jqID(d.p.id)).append(""),i=$(s).clone().appendTo("#testpg").width(),$("#testpg").remove(),i>0&&(""!==r&&(i+=50),$("td#"+a+"_"+d.p.pagerpos,"#"+c).width(i)),d.p._nvtd=[],d.p._nvtd[0]=i?Math.floor((d.p.width-i)/2):Math.floor(d.p.width/3),d.p._nvtd[1]=0,s=null,$(".ui-pg-selbox","#"+c).bind("change",function(){return u("records",this)?(d.p.page=Math.round(d.p.rowNum*(d.p.page-1)/this.value-.5)+1,d.p.rowNum=this.value,d.p.pager&&$(".ui-pg-selbox",d.p.pager).val(this.value),d.p.toppager&&$(".ui-pg-selbox",d.p.toppager).val(this.value),S(),!1):!1}),d.p.pgbuttons===!0&&($(".ui-pg-button","#"+c).hover(function(){$(this).hasClass(m)?this.style.cursor="default":($(this).addClass(o),this.style.cursor="pointer")},function(){$(this).hasClass(m)||($(this).removeClass(o),this.style.cursor="default")}),$("#first"+$.jgrid.jqID(b)+", #prev"+$.jgrid.jqID(b)+", #next"+$.jgrid.jqID(b)+", #last"+$.jgrid.jqID(b)).click(function(){if($(this).hasClass(m))return!1;var a=z(d.p.page,1),c=z(d.p.lastpage,1),e=!1,f=!0,g=!0,h=!0,i=!0;return 0===c||1===c?(f=!1,g=!1,h=!1,i=!1):c>1&&a>=1?1===a?(f=!1,g=!1):a===c&&(h=!1,i=!1):c>1&&0===a&&(h=!1,i=!1,a=c-1),u(this.id.split("_")[0],this)?(this.id==="first"+b&&f&&(d.p.page=1,e=!0),this.id==="prev"+b&&g&&(d.p.page=a-1,e=!0),this.id==="next"+b&&h&&(d.p.page=a+1,e=!0),this.id==="last"+b&&i&&(d.p.page=c,e=!0),e&&S(),!1):!1})),d.p.pginput===!0&&$("#"+c).on("keypress","input.ui-pg-input",function(a){var b=a.charCode||a.keyCode||0;return 13===b?u("user",this)?($(this).val(z($(this).val(),1)),d.p.page=$(this).val()>0?$(this).val():d.p.page,S(),!1):!1:this})},V=function(a,b,c){var e,f=d.p.colModel,g=d.p.frozenColumns?b:d.grid.headers[a].el,h="";$("span.ui-grid-ico-sort",g).addClass(m),$(g).attr("aria-selected","false"),e=f[a].index||f[a].name,"undefined"==typeof c?f[a].lso?"asc"===f[a].lso?(f[a].lso+="-desc",h="desc"):"desc"===f[a].lso?(f[a].lso+="-asc",h="asc"):("asc-desc"===f[a].lso||"desc-asc"===f[a].lso)&&(f[a].lso=""):f[a].lso=h=f[a].firstsortorder||"asc":f[a].lso=h=c,h?($("span.s-ico",g).show(),$("span.ui-icon-"+h,g).removeClass(m),$(g).attr("aria-selected","true")):d.p.viewsortcols[0]||$("span.s-ico",g).hide();var i=t.indexOf(e);-1===i?(t.push(e),u.push(h)):h?u[i]=h:(u.splice(i,1),t.splice(i,1)),d.p.sortorder="",d.p.sortname="";for(var j=0,k=t.length;k>j;j++)j>0&&(d.p.sortname+=", "),d.p.sortname+=t[j],j!==k-1&&(d.p.sortname+=" "+u[j]);d.p.sortorder=u[k-1]},W=function(a,b,c,e,f){if(d.p.colModel[b].sortable&&!(d.p.savedRow.length>0)){if(c||(d.p.lastsort===b&&""!==d.p.sortname?"asc"===d.p.sortorder?d.p.sortorder="desc":"desc"===d.p.sortorder&&(d.p.sortorder="asc"):d.p.sortorder=d.p.colModel[b].firstsortorder||"asc",d.p.page=1),d.p.multiSort)V(b,f,e);else{if(e){if(d.p.lastsort===b&&d.p.sortorder===e&&!c)return;d.p.sortorder=e}var g,h=d.grid.headers[d.p.lastsort]?d.grid.headers[d.p.lastsort].el:null,i=d.p.frozenColumns?f:d.grid.headers[b].el,j="single"===d.p.viewsortcols[1]?!0:!1;g=$(h).find("span.ui-grid-ico-sort"),g.addClass(m),j&&$(g).css("display","none"),$(h).attr("aria-selected","false"),d.p.frozenColumns&&(g=d.grid.fhDiv.find("span.ui-grid-ico-sort"),g.addClass(m),j&&g.css("display","none"),d.grid.fhDiv.find("th").attr("aria-selected","false")),g=$(i).find("span.ui-icon-"+d.p.sortorder),g.removeClass(m),j&&g.css("display",""),$(i).attr("aria-selected","true"),d.p.viewsortcols[0]||(d.p.lastsort!==b?(d.p.frozenColumns&&d.grid.fhDiv.find("span.s-ico").hide(),$("span.s-ico",h).hide(),$("span.s-ico",i).show()):""===d.p.sortname&&$("span.s-ico",i).show()),a=a.substring(5+d.p.id.length+1),d.p.sortname=d.p.colModel[b].index||a}if("stop"===$(d).triggerHandler("jqGridSortCol",[d.p.sortname,b,d.p.sortorder]))return void(d.p.lastsort=b);if($.isFunction(d.p.onSortCol)&&"stop"===d.p.onSortCol.call(d,d.p.sortname,b,d.p.sortorder))return void(d.p.lastsort=b);if("local"===d.p.datatype?d.p.deselectAfterSort&&$(d).jqGrid("resetSelection"):(d.p.selrow=null,d.p.multiselect&&T(!1),d.p.selarrrow=[],d.p.savedRow=[]),d.p.scroll){var k=d.grid.bDiv.scrollLeft;I.call(d,!0,!1),d.grid.hDiv.scrollLeft=k}d.p.subGrid&&"local"===d.p.datatype&&$("td.sgexpanded","#"+$.jgrid.jqID(d.p.id)).each(function(){$(this).trigger("click")}),d.p._sort=!0,S(),d.p.lastsort=b,d.p.sortname!==a&&b&&(d.p.lastsort=b)}},X=function(){var a,b,c,f,g=0,h=$.jgrid.cell_width?0:z(d.p.cellLayout,0),i=0,j=z(d.p.scrollOffset,0),k=!1,l=0;$.each(d.p.colModel,function(){if(void 0===this.hidden&&(this.hidden=!1),d.p.grouping&&d.p.autowidth){var a=$.inArray(this.name,d.p.groupingView.groupField);a>=0&&d.p.groupingView.groupColumnShow.length>a&&(this.hidden=!d.p.groupingView.groupColumnShow[a])}this.widthOrg=b=z(this.width,0),this.hidden===!1&&(g+=b+h,this.fixed?l+=b+h:i++)}),isNaN(d.p.width)&&(d.p.width=g+(d.p.shrinkToFit!==!1||isNaN(d.p.height)?0:j)),e.width=d.p.width,d.p.tblwidth=g,d.p.shrinkToFit===!1&&d.p.forceFit===!0&&(d.p.forceFit=!1),d.p.shrinkToFit===!0&&i>0&&(c=e.width-h*i-l,isNaN(d.p.height)||(c-=j,k=!0),g=0,$.each(d.p.colModel,function(e){this.hidden!==!1||this.fixed||(b=Math.round(c*this.width/(d.p.tblwidth-h*i-l)),this.width=b,g+=b,a=e)}),f=0,k?e.width-l-(g+h*i)!==j&&(f=e.width-l-(g+h*i)-j):k||1===Math.abs(e.width-l-(g+h*i))||(f=e.width-l-(g+h*i)),d.p.colModel[a].width+=f,d.p.tblwidth=g+f+h*i+l,d.p.tblwidth>d.p.width&&(d.p.colModel[a].width-=d.p.tblwidth-parseInt(d.p.width,10),d.p.tblwidth=d.p.width))},Y=function(a){var b,c=a,e=a;for(b=a+1;b';for(e=0;h>e;e++){var l=g[e].hidden?"":"checked",m=g[e].name,n=d.p.colNames[e];f="cb"===m||"subgrid"===m||"rn"===m||g[e].hidedlg?"style='display:none'":"",k+="",i.push(e)}k+="",$(c).append(k),$("#col_menu").addClass("ui-menu "+r.menu_widget),$.fn.html5sortable()&&$("#col_menu").html5sortable({handle:"span",forcePlaceholderSize:!0}).bind("sortupdate",function(a,b){for(i.splice(b.startindex,1),i.splice(b.endindex,0,b.startindex),$(d).jqGrid("destroyFrozenColumns"),$(d).jqGrid("remapColumns",i,!0),$(d).jqGrid("setFrozenColumns"),e=0;h>e;e++)i[e]=e}),$("#col_menu > li > a").on("click",function(a){var b;$(a.target).hasClass("notclick")||($(a.target).is(":input")?b=$(a.target).is(":checked"):(b=!$("input",this).is(":checked"),$("input",this).prop("checked",b)),b?($(d).jqGrid("showCol",$("input",this).attr("name")),$(this).parent().attr("draggable","true")):($(d).jqGrid("hideCol",$("input",this).attr("name")),$(this).parent().attr("draggable","false")))}).hover(function(){$(this).addClass(o)},function(){$(this).removeClass(o)})},ba=function(a,b,c,e){var f,g,h,i,j,k=d.p.colModel[a],l="",m="",n="",p="",q="",s="",t=["eq","ne","lt","le","gt","ge","nu","nn","in","ni"],u=["eq","ne","bw","bn","ew","en","cn","nc","nu","nn","in","ni"],v=$.jgrid.getRegional(d,"search"),w=$.jgrid.styleUI[d.p.styleUI||"jQueryUI"].common; +if(k){f=d.p.colFilters&&d.p.colFilters[k.name]?d.p.colFilters[k.name]:!1,f&&!$.isEmptyObject(f)&&(l=f.oper1,m=f.value1,n=f.rule,p=f.oper2,q=f.value2),k.searchoptions||(k.searchoptions={}),g=k.searchoptions.sopt?k.searchoptions.sopt:"text"===k.sorttype?u:t,h=k.searchoptions.operands?k.searchoptions.operands:v.groupOps,j=$("
");var x="
"+$.jgrid.getRegional(d,"colmenu.searchTitle")+"
";x+='
",j.append(x);var y="";k.searchoptions.defaultValue&&(y=$.isFunction(k.searchoptions.defaultValue)?k.searchoptions.defaultValue.call(d):k.searchoptions.defaultValue),m&&(y=m);var z=$.extend(k.searchoptions,{name:k.index||k.name,id:"sval1_"+d.p.idPrefix+k.name,oper:"search"}),A=$.jgrid.createEl.call(d,k.stype,z,y,!1,$.extend({},$.jgrid.ajaxOptions,d.p.ajaxSelectOptions||{}));$(A).addClass(r.filter_input),x=$("
").append(A),j.append(x),x='
",j.append(x),s="",$.each(v.odata,function(a,b){i=b.oper===p?'selected="selected"':"",-1!==$.inArray(b.oper,g)&&(s+='")}),x='
",j.append(x),y=q?q:"",z=$.extend(k.searchoptions,{name:k.index||k.name,id:"sval2_"+d.p.idPrefix+k.name,oper:"search"}),A=$.jgrid.createEl.call(d,k.stype,z,y,!1,$.extend({},$.jgrid.ajaxOptions,d.p.ajaxSelectOptions||{})),$(A).addClass(r.filter_input),x=$("
").append(A),j.append(x),x="
",x+="",x+="",x+="
",j.append(x),j=$('').append(j),j=$('').append(j),$(e).append(j),$("#search_menu").addClass("ui-menu "+r.menu_widget),$("#bs_reset, #bs_search","#search_menu").hover(function(){$(this).addClass(o)},function(){$(this).removeClass(o)}),$(j).find("#bs_reset").click(function(a){return d.p.colFilters[k.name]={},d.p.postData.filters=ca(),d.p.search=!0,$(d).trigger("reloadGrid"),$("#column_menu").remove(),!1}),$(j).find("#bs_search").click(function(a){return d.p.colFilters[k.name]={oper1:$("#oper1","#search_menu").val(),value1:$("#sval1_"+d.p.idPrefix+k.name,"#search_menu").val(),rule:$("#operand","#search_menu").val(),oper2:$("#oper2","#search_menu").val(),value2:$("#sval2_"+d.p.idPrefix+k.name,"#search_menu").val()},d.p.postData.filters=ca(),d.p.search=!0,$(d).trigger("reloadGrid"),$("#column_menu").remove(),!1})}},ca=function(){var a="AND",b='{"groupOp":"'+a+'","rules":[], "groups" : [',c=0;for(var e in d.p.colFilters)if(d.p.colFilters.hasOwnProperty(e)){var f=d.p.colFilters[e];$.isEmptyObject(f)||(c>0&&(b+=","),b+='{"groupOp": "'+f.rule+'", "rules" : [',b+='{"field":"'+e+'",',b+='"op":"'+f.oper1+'",',f.value1+="",b+='"data":"'+f.value1.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"}',f.value2&&(b+=',{"field":"'+e+'",',b+='"op":"'+f.oper2+'",',f.value2+="",b+='"data":"'+f.value2.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"}'),b+="]}",c++)}return b+="]}"},da=function(a,b){var c=d.p.colModel[a],e=d.p.groupingView;-1!==b?e.groupField.splice(b,1):e.groupField.push(c.name),$(d).jqGrid("groupingGroupBy",e.groupField),d.p.frozenColumns&&($(d).jqGrid("destroyFrozenColumns"),$(d).jqGrid("setFrozenColumns"))},ea=function(a,b){var c,e=[],f=d.p.colModel.length,g=-1,h=d.p.colModel;for(c=0;f>c;c++)h[c].frozen&&(g=c),e.push(c);e.splice(a,1),e.splice(g+(b?1:0),0,a),h[a].frozen=b,$(d).jqGrid("destroyFrozenColumns"),$(d).jqGrid("remapColumns",e,!0),$(d).jqGrid("setFrozenColumns")},fa=function(a,b,c){b=parseInt(b,10),c=parseInt(c,10)+25;var e,f,g=$(".ui-jqgrid-view").css("font-size")||"11px",h='",$("body").append(h),$("#column_menu").addClass("ui-menu "+r.menu_widget),$("#column_menu > li > a").hover(function(){if($("#col_menu").remove(),$("#search_menu").remove(),"columns"===$(this).attr("value")){var b=$(this).parent().width()+18,c=$(this).parent().position().top-5;aa(c,b,$(this).parent())}if("filtering"===$(this).attr("value")){var b=$(this).parent().width()+18,c=$(this).parent().position().top-5;ba(a,c,b,$(this).parent())}$(this).addClass(o)},function(){$(this).removeClass(o)}).click(function(){var b=$(this).attr("value"),c=d.grid.headers[a].el;"sortasc"===b?W("jqgh_"+d.p.id+"_"+i.name,a,!0,"asc",c):"sortdesc"===b?W("jqgh_"+d.p.id+"_"+i.name,a,!0,"desc",c):"grouping"===b?da(a,e):"freeze"===b&&ea(a,f),(-1!==b.indexOf("sort")||"grouping"===b||"freeze"===b)&&$(this).remove()})};for(d.p.colMenu&&$("body").on("click",function(a){$(a.target).closest(".column-menu").length||$("#column_menu").remove()}),this.p.id=this.id,-1===$.inArray(d.p.multikey,y)&&(d.p.multikey=!1),d.p.keyName=!1,i=0;i"),this.p.colModel.unshift({name:"cb",width:$.jgrid.cell_width?d.p.multiselectWidth+d.p.cellLayout:d.p.multiselectWidth,sortable:!1,resizable:!1,hidedlg:!0,search:!1,align:"center",fixed:!0,frozen:!0})),this.p.rownumbers&&(this.p.colNames.unshift(""),this.p.colModel.unshift({name:"rn",width:d.p.rownumWidth,sortable:!1,resizable:!1,hidedlg:!0,search:!1,align:"center",fixed:!0,frozen:!0})),d.p.xmlReader=$.extend(!0,{root:"rows",row:"row",page:"rows>page",total:"rows>total",records:"rows>records",repeatitems:!0,cell:"cell",id:"[id]",userdata:"userdata",subgrid:{root:"rows",row:"row",repeatitems:!0,cell:"cell"}},d.p.xmlReader),d.p.jsonReader=$.extend(!0,{root:"rows",page:"page",total:"total",records:"records",repeatitems:!0,cell:"cell",id:"id",userdata:"userdata",subgrid:{root:"rows",repeatitems:!0,cell:"cell"}},d.p.jsonReader),d.p.localReader=$.extend(!0,{root:"rows",page:"page",total:"total",records:"records",repeatitems:!1,cell:"cell",id:"id",userdata:"userdata",subgrid:{root:"rows",repeatitems:!0,cell:"cell"}},d.p.localReader),d.p.scroll&&(d.p.pgbuttons=!1,d.p.pginput=!1,d.p.rowList=[]),d.p.data.length&&(J(),K());var ia,ja,ka,la,ma,na,oa,pa,qa,ra="",sa="",ta="",ua="";if(d.p.shrinkToFit===!0&&d.p.forceFit===!0)for(i=d.p.colModel.length-1;i>=0;i--)if(!d.p.colModel[i].hidden){d.p.colModel[i].resizable=!1;break}if("horizontal"===d.p.viewsortcols[1]?(ta=" ui-i-asc",ua=" ui-i-desc"):"single"===d.p.viewsortcols[1]&&(ta=" ui-single-sort-asc",ua=" ui-single-sort-desc",sa=" style='display:none'",d.p.viewsortcols[0]=!1),ia=s?"class='ui-th-div-ie'":"",pa="",d.p.multiSort&&d.p.sortname)for(t=d.p.sortname.split(","),i=0;i",ja=qa.index||qa.name,ra+="
"+d.p.colNames[i],qa.width?qa.width=parseInt(qa.width,10):qa.width=150,"boolean"!=typeof qa.title&&(qa.title=!0),qa.lso="",ja===d.p.sortname&&(d.p.lastsort=i),d.p.multiSort&&(v=$.inArray(ja,t),-1!==v&&(qa.lso=u[v])),ra+=pa,d.p.colMenu&&qa.colmenu&&(ra+=""),ra+="
"}if(ra+="",pa=null,qa=null,$(this).append(ra),$("thead tr:first th",this).hover(function(){$(this).addClass(o)},function(){$(this).removeClass(o)}),this.p.multiselect){var wa,xa=[];$("#cb_"+$.jgrid.jqID(d.p.id),this).bind("click",function(){d.p.selarrrow=[];var a=d.p.frozenColumns===!0?d.p.id+"_frozen":"";this.checked?($(d.rows).each(function(b){b>0&&($(this).hasClass("ui-subgrid")||$(this).hasClass("jqgroup")||$(this).hasClass(m)||$(this).hasClass("jqfoot")||($("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+$.jgrid.jqID(this.id))[d.p.useProp?"prop":"attr"]("checked",!0),$(this).addClass(n).attr("aria-selected","true"),d.p.selarrrow.push(this.id),d.p.selrow=this.id,a&&($("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+$.jgrid.jqID(this.id),d.grid.fbDiv)[d.p.useProp?"prop":"attr"]("checked",!0),$("#"+$.jgrid.jqID(this.id),d.grid.fbDiv).addClass(n))))}),wa=!0,xa=[]):($(d.rows).each(function(b){b>0&&($(this).hasClass("ui-subgrid")||$(this).hasClass("jqgroup")||$(this).hasClass(m)||$(this).hasClass("jqfoot")||($("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+$.jgrid.jqID(this.id))[d.p.useProp?"prop":"attr"]("checked",!1),$(this).removeClass(n).attr("aria-selected","false"),xa.push(this.id),a&&($("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+$.jgrid.jqID(this.id),d.grid.fbDiv)[d.p.useProp?"prop":"attr"]("checked",!1),$("#"+$.jgrid.jqID(this.id),d.grid.fbDiv).removeClass(n))))}),d.p.selrow=null,wa=!1),$(d).triggerHandler("jqGridSelectAll",[wa?d.p.selarrrow:xa,wa]),$.isFunction(d.p.onSelectAll)&&d.p.onSelectAll.call(d,wa?d.p.selarrrow:xa,wa)})}if(d.p.autowidth===!0){var ya=$(w).innerWidth();d.p.width=ya>0?ya:"nw"}X(),$(w).css("width",e.width+"px").append("
 
"),d.p.scrollPopUp&&$(w).append("
"),$(j).css("width",e.width+"px"),ra=$("thead:first",d).get(0);var za="";d.p.footerrow&&(za+="");var Aa=$("tr:first",ra),Ba="";if(d.p.disableClick=!1,$("th",Aa).each(function(a){qa=d.p.colModel[a],ka=qa.width,void 0===qa.resizable&&(qa.resizable=!0),qa.resizable?(la=document.createElement("span"),$(la).html(" ").addClass("ui-jqgrid-resize ui-jqgrid-resize-"+h).css("cursor","col-resize"),$(this).addClass(d.p.resizeclass)):la="",$(this).css("width",ka+"px").prepend(la),la=null;var b="";qa.hidden&&($(this).css("display","none"),b="display:none;"),Ba+="",e.headers[a]={width:ka,el:this},sa=qa.sortable,"boolean"!=typeof sa&&(qa.sortable=!0,sa=!0);var c=qa.name;"cb"!==c&&"subgrid"!==c&&"rn"!==c&&d.p.viewsortcols[2]&&$(">div",this).addClass("ui-jqgrid-sortable"),sa&&(d.p.multiSort?d.p.viewsortcols[0]?($("div span.s-ico",this).show(),d.p.colModel[a].lso&&$("div span.ui-icon-"+qa.lso,this).removeClass(m).css("display","")):d.p.colModel[a].lso&&($("div span.s-ico",this).show(),$("div span.ui-icon-"+qa.lso,this).removeClass(m).css("display","")):d.p.viewsortcols[0]?($("div span.s-ico",this).show(),a===d.p.lastsort&&$("div span.ui-icon-"+d.p.sortorder,this).removeClass(m).css("display","")):a===d.p.lastsort&&""!==d.p.sortname&&($("div span.s-ico",this).show(),$("div span.ui-icon-"+d.p.sortorder,this).removeClass(m).css("display",""))),d.p.footerrow&&(za+="")}).mousedown(function(a){if(1===$(a.target).closest("th>span.ui-jqgrid-resize").length){var b=_(this);return d.p.forceFit===!0&&(d.p.nv=Y(b)),e.dragStart(b,a,Z(b)),!1}}).click(function(a){if(d.p.disableClick)return d.p.disableClick=!1,!1;var b,c,e="th>div.ui-jqgrid-sortable";d.p.viewsortcols[2]||(e="th>div>span>span.ui-grid-ico-sort");var f=$(a.target).closest(e);if(1===f.length){var g;if(d.p.frozenColumns){var h=$(this)[0].id.substring(d.p.id.length+1);$(d.p.colModel).each(function(a){return this.name===h?(g=a,!1):void 0})}else g=_(this);if($(a.target).hasClass("colmenuspan")){null!=$("#column_menu")[0]&&$("#column_menu").remove();var i=$.jgrid.getCellIndex(a.target);if(-1===i)return;var j=$(this).offset(),k=j.left,l=j.top;return fa(i,k,l,f),void a.stopPropagation()}return d.p.viewsortcols[2]||(b=!0,c=f.attr("sort")),null!=g&&W($("div",this)[0].id,g,b,c,this),!1}}),qa=null,d.p.sortable&&$.fn.sortable)try{$(d).jqGrid("sortableColumns",Aa)}catch(Ca){}d.p.footerrow&&(za+="
 
"),Ba+="",oa=document.createElement("tbody"),this.appendChild(oa),$(this).addClass(k(l,"rowTable",!0,"ui-jqgrid-btable ui-common-table")).append(Ba),Ba=null;var Da=$("
").append(ra),Ea=d.p.caption&&d.p.hiddengrid===!0?!0:!1,Fa=$("
");ra=null,e.hDiv=document.createElement("div"),e.hDiv.style.width=e.width+"px",e.hDiv.className=k(l,"headerDiv",!0,"ui-jqgrid-hdiv"),$(e.hDiv).append(Fa),$(Fa).append(Da),Da=null,Ea&&$(e.hDiv).hide(),d.p.pager&&("string"==typeof d.p.pager?"#"!==d.p.pager.substr(0,1)&&(d.p.pager="#"+d.p.pager):d.p.pager="#"+$(d.p.pager).attr("id"),$(d.p.pager).css({width:e.width+"px"}).addClass(k(l,"pagerBox",!0,"ui-jqgrid-pager")).appendTo(w),Ea&&$(d.p.pager).hide(),U(d.p.pager,"")),d.p.cellEdit===!1&&d.p.hoverrows===!0&&$(d).bind("mouseover",function(a){na=$(a.target).closest("tr.jqgrow"),"ui-subgrid"!==$(na).attr("class")&&$(na).addClass(o)}).bind("mouseout",function(a){na=$(a.target).closest("tr.jqgrow"),$(na).removeClass(o)});var Ga,Ha,Ia;$(d).before(e.hDiv).click(function(a){if(ma=a.target,na=$(ma,d.rows).closest("tr.jqgrow"),0===$(na).length||na[0].className.indexOf(m)>-1||($(ma,d).closest("table.ui-jqgrid-btable").attr("id")||"").replace("_frozen","")!==d.id)return this;var b=$(ma).hasClass("cbox"),c=$(d).triggerHandler("jqGridBeforeSelectRow",[na[0].id,a]);if(c=c===!1||"stop"===c?!1:!0,$.isFunction(d.p.beforeSelectRow)){var e=d.p.beforeSelectRow.call(d,na[0].id,a);(e===!1||"stop"===e)&&(c=!1)}if("A"!==ma.tagName&&("INPUT"!==ma.tagName&&"TEXTAREA"!==ma.tagName&&"OPTION"!==ma.tagName&&"SELECT"!==ma.tagName||b))if(Ga=na[0].id,ma=$(ma).closest("tr.jqgrow>td"),ma.length>0&&(Ha=$.jgrid.getCellIndex(ma),Ia=$(ma).closest("td,th").html(),$(d).triggerHandler("jqGridCellSelect",[Ga,Ha,Ia,a]),$.isFunction(d.p.onCellSelect)&&d.p.onCellSelect.call(d,Ga,Ha,Ia,a)),d.p.cellEdit!==!0){if(c)if(d.p.multikey)a[d.p.multikey]?$(d).jqGrid("setSelection",Ga,!0,a):d.p.multiselect&&b&&(b=$("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+Ga).is(":checked"),$("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+Ga)[d.p.useProp?"prop":"attr"]("checked",!b));else if(d.p.multiselect&&d.p.multiboxonly)if(b)$(d).jqGrid("setSelection",Ga,!0,a);else{var f=d.p.frozenColumns?d.p.id+"_frozen":"";$(d.p.selarrrow).each(function(a,b){var c=$(d).jqGrid("getGridRowById",b);c&&$(c).removeClass(n),$("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+$.jgrid.jqID(b))[d.p.useProp?"prop":"attr"]("checked",!1),f&&($("#"+$.jgrid.jqID(b),"#"+$.jgrid.jqID(f)).removeClass(n),$("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+$.jgrid.jqID(b),"#"+$.jgrid.jqID(f))[d.p.useProp?"prop":"attr"]("checked",!1))}),d.p.selarrrow=[],$(d).jqGrid("setSelection",Ga,!0,a)}else $(d).jqGrid("setSelection",Ga,!0,a)}else if(d.p.multiselect&&b&&c)$(d).jqGrid("setSelection",Ga,!0,a);else if(ma.length>0)try{$(d).jqGrid("editCell",na[0].rowIndex,Ha,!0)}catch(g){}}).bind("reloadGrid",function(a,b){if(d.p.treeGrid===!0&&(d.p.datatype=d.p.treedatatype),b=b||{},b.current&&d.grid.selectionPreserver(d),"local"===d.p.datatype?($(d).jqGrid("resetSelection"),d.p.data.length&&(J(),K())):d.p.treeGrid||(d.p.selrow=null,d.p.multiselect&&(d.p.selarrrow=[],T(!1)),d.p.savedRow=[]),d.p.scroll&&I.call(d,!0,!1),b.page){var c=b.page;c>d.p.lastpage&&(c=d.p.lastpage),1>c&&(c=1),d.p.page=c,d.grid.prevRowHeight?d.grid.bDiv.scrollTop=(c-1)*d.grid.prevRowHeight*d.p.rowNum:d.grid.bDiv.scrollTop=0}return d.grid.prevRowHeight&&d.p.scroll&&void 0===b.page?(delete d.p.lastpage,d.grid.populateVisible()):d.grid.populate(),d.p.inlineNav===!0&&$(d).jqGrid("showAddEditButtons"),!1}).dblclick(function(a){if(ma=a.target,na=$(ma,d.rows).closest("tr.jqgrow"),0!==$(na).length){Ga=na[0].rowIndex,Ha=$.jgrid.getCellIndex(ma);var b=$(d).triggerHandler("jqGridDblClickRow",[$(na).attr("id"),Ga,Ha,a]);return null!=b?b:$.isFunction(d.p.ondblClickRow)&&(b=d.p.ondblClickRow.call(d,$(na).attr("id"),Ga,Ha,a),null!=b)?b:void 0}}).bind("contextmenu",function(a){if(ma=a.target,na=$(ma,d.rows).closest("tr.jqgrow"),0!==$(na).length){d.p.multiselect||$(d).jqGrid("setSelection",na[0].id,!0,a),Ga=na[0].rowIndex,Ha=$.jgrid.getCellIndex(ma);var b=$(d).triggerHandler("jqGridRightClickRow",[$(na).attr("id"),Ga,Ha,a]);return null!=b?b:$.isFunction(d.p.onRightClickRow)&&(b=d.p.onRightClickRow.call(d,$(na).attr("id"),Ga,Ha,a),null!=b)?b:void 0}}),e.bDiv=document.createElement("div"),s&&"auto"===String(d.p.height).toLowerCase()&&(d.p.height="100%"),$(e.bDiv).append($('
').append("
").append(this)).addClass("ui-jqgrid-bdiv").css({height:d.p.height+(isNaN(d.p.height)?"":"px"),width:e.width+"px"}).scroll(e.scrollGrid),$("table:first",e.bDiv).css({width:d.p.tblwidth+"px"}),$.support.tbody||2===$("tbody",this).length&&$("tbody:gt(0)",this).remove(),d.p.multikey&&($.jgrid.msie?$(e.bDiv).bind("selectstart",function(){return!1}):$(e.bDiv).bind("mousedown",function(){return!1})),Ea&&$(e.bDiv).hide();var Ja=q+" "+k(l,"icon_caption_open",!0),Ka=q+" "+k(l,"icon_caption_close",!0);e.cDiv=document.createElement("div");var La=d.p.hidegrid===!0?$("").hover(function(){La.addClass(o)},function(){La.removeClass(o)}).append("").css("rtl"===h?"left":"right","0px"):"";if($(e.cDiv).append(La).append(""+d.p.caption+"").addClass("ui-jqgrid-titlebar ui-jqgrid-caption"+("rtl"===h?"-rtl":"")+" "+k(l,"gridtitleBox",!0)),$(e.cDiv).insertBefore(e.hDiv),d.p.toolbar[0]){var Ma=k(l,"customtoolbarBox",!0,"ui-userdata");e.uDiv=document.createElement("div"),"top"===d.p.toolbar[1]?$(e.uDiv).insertBefore(e.hDiv):"bottom"===d.p.toolbar[1]&&$(e.uDiv).insertAfter(e.hDiv),"both"===d.p.toolbar[1]?(e.ubDiv=document.createElement("div"),$(e.uDiv).addClass(Ma+" ui-userdata-top").attr("id","t_"+this.id).insertBefore(e.hDiv).width(e.width),$(e.ubDiv).addClass(Ma+" ui-userdata-bottom").attr("id","tb_"+this.id).insertAfter(e.hDiv).width(e.width),Ea&&$(e.ubDiv).hide()):$(e.uDiv).width(e.width).addClass(Ma+" ui-userdata-top").attr("id","t_"+this.id),Ea&&$(e.uDiv).hide()}if(d.p.toppager&&(d.p.toppager=$.jgrid.jqID(d.p.id)+"_toppager",e.topDiv=$("
")[0],d.p.toppager="#"+d.p.toppager,$(e.topDiv).addClass(k(l,"toppagerBox",!0,"ui-jqgrid-toppager")).width(e.width).insertBefore(e.hDiv),U(d.p.toppager,"_t")),d.p.footerrow&&(e.sDiv=$("
")[0],Fa=$("
"),$(e.sDiv).append(Fa).width(e.width).insertAfter(e.hDiv),$(Fa).append(za),e.footers=$(".ui-jqgrid-ftable",e.sDiv)[0].rows[0].cells,d.p.rownumbers&&(e.footers[0].className=k(l,"rownumBox",!0,"jqgrid-rownum")),Ea&&$(e.sDiv).hide()),Fa=null,d.p.caption){var Na=d.p.datatype;d.p.hidegrid===!0&&($(".ui-jqgrid-titlebar-close",e.cDiv).click(function(a){var b,c=$.isFunction(d.p.onHeaderClick),f=".ui-jqgrid-bdiv, .ui-jqgrid-hdiv, .ui-jqgrid-toppager, .ui-jqgrid-pager, .ui-jqgrid-sdiv",g=this;return d.p.toolbar[0]===!0&&("both"===d.p.toolbar[1]&&(f+=", #"+$(e.ubDiv).attr("id")),f+=", #"+$(e.uDiv).attr("id")),b=$(f,"#gview_"+$.jgrid.jqID(d.p.id)).length,"visible"===d.p.gridstate?$(f,"#gbox_"+$.jgrid.jqID(d.p.id)).slideUp("fast",function(){b--,0===b&&($("span",g).removeClass(Ja).addClass(Ka),d.p.gridstate="hidden",$("#gbox_"+$.jgrid.jqID(d.p.id)).hasClass("ui-resizable")&&$(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(d.p.id)).hide(),$(d).triggerHandler("jqGridHeaderClick",[d.p.gridstate,a]),c&&(Ea||d.p.onHeaderClick.call(d,d.p.gridstate,a)))}):"hidden"===d.p.gridstate&&$(f,"#gbox_"+$.jgrid.jqID(d.p.id)).slideDown("fast",function(){b--,0===b&&($("span",g).removeClass(Ka).addClass(Ja),Ea&&(d.p.datatype=Na,S(),Ea=!1),d.p.gridstate="visible",$("#gbox_"+$.jgrid.jqID(d.p.id)).hasClass("ui-resizable")&&$(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(d.p.id)).show(),$(d).triggerHandler("jqGridHeaderClick",[d.p.gridstate,a]),c&&(Ea||d.p.onHeaderClick.call(d,d.p.gridstate,a)))}),!1}),Ea&&(d.p.datatype="local",$(".ui-jqgrid-titlebar-close",e.cDiv).trigger("click")))}else $(e.cDiv).hide(),d.p.toppager||$(e.hDiv).addClass(k(d.p.styleUI+".common","cornertop",!0));if($(e.hDiv).after(e.bDiv).mousemove(function(a){return e.resizing?(e.dragMove(a),!1):void 0}),$(".ui-jqgrid-labels",e.hDiv).bind("selectstart",function(){return!1}),$(document).bind("mouseup.jqGrid"+d.p.id,function(){return e.resizing?(e.dragEnd(!0),!1):!0}),d.formatCol=A,d.sortData=W,d.updatepager=P,d.refreshIndex=K,d.setHeadCheckBox=T,d.constructTr=L,d.formatter=function(a,b,c,d,e){return C(a,b,c,d,e)},$.extend(e,{populate:S,emptyRows:I,beginReq:Q,endReq:R}),this.grid=e,d.addXmlData=function(a){M(a)},d.addJSONData=function(a){N(a)},this.grid.cols=this.rows[0].cells,$(d).triggerHandler("jqGridInitGrid"),$.isFunction(d.p.onInitGrid)&&d.p.onInitGrid.call(d),S(),d.p.hiddengrid=!1,d.p.responsive){var Oa="onorientationchange"in window,Pa=Oa?"orientationchange":"resize";$(window).on(Pa,function(){$(d).jqGrid("resizeGrid")})}}})},$.jgrid.extend({getGridParam:function(a,b){var c,d=this[0];if(d&&d.grid){if(void 0===b&&"string"!=typeof b&&(b="jqGrid"),c=d.p,"jqGrid"!==b)try{c=$(d).data(b)}catch(e){c=d.p}return a?void 0!==c[a]?c[a]:null:c}},setGridParam:function(a,b){return this.each(function(){if(null==b&&(b=!1),this.grid&&"object"==typeof a)if(b===!0){var c=$.extend({},this.p,a);this.p=c}else $.extend(!0,this.p,a)})},getGridRowById:function(a){var b;return this.each(function(){try{for(var c=this.rows.length;c--;)if(a.toString()===this.rows[c].id){b=this.rows[c];break}}catch(d){b=$(this.grid.bDiv).find("#"+$.jgrid.jqID(a))}}),b},getDataIDs:function(){var a,b=[],c=0,d=0;return this.each(function(){if(a=this.rows.length,a&&a>0)for(;a>c;)$(this.rows[c]).hasClass("jqgrow")&&(b[d]=this.rows[c].id,d++),c++}),b},setSelection:function(a,b,c){return this.each(function(){function d(a){var b=$(l.grid.bDiv)[0].clientHeight,c=$(l.grid.bDiv)[0].scrollTop,d=$(l.rows[a]).position().top,e=l.rows[a].clientHeight;d+e>=b+c?$(l.grid.bDiv)[0].scrollTop=d-(b+c)+e+c:b+c>d&&c>d&&($(l.grid.bDiv)[0].scrollTop=d)}var e,f,g,h,i,j,k,l=this,m=$.jgrid.getMethod("getStyleUI"),n=m(l.p.styleUI+".common","highlight",!0),o=m(l.p.styleUI+".common","disabled",!0);void 0!==a&&(b=b===!1?!1:!0,f=$(l).jqGrid("getGridRowById",a),!f||!f.className||f.className.indexOf(o)>-1||(l.p.scrollrows===!0&&(g=$(l).jqGrid("getGridRowById",a).rowIndex,g>=0&&d(g)),l.p.frozenColumns===!0&&(j=l.p.id+"_frozen"),l.p.multiselect?(l.setHeadCheckBox(!1),l.p.selrow=f.id,h=$.inArray(l.p.selrow,l.p.selarrrow),-1===h?("ui-subgrid"!==f.className&&$(f).addClass(n).attr("aria-selected","true"),e=!0,l.p.selarrrow.push(l.p.selrow)):("ui-subgrid"!==f.className&&$(f).removeClass(n).attr("aria-selected","false"),e=!1,l.p.selarrrow.splice(h,1),i=l.p.selarrrow[0],l.p.selrow=void 0===i?null:i),$("#jqg_"+$.jgrid.jqID(l.p.id)+"_"+$.jgrid.jqID(f.id))[l.p.useProp?"prop":"attr"]("checked",e),j&&(-1===h?$("#"+$.jgrid.jqID(a),"#"+$.jgrid.jqID(j)).addClass(n):$("#"+$.jgrid.jqID(a),"#"+$.jgrid.jqID(j)).removeClass(n),$("#jqg_"+$.jgrid.jqID(l.p.id)+"_"+$.jgrid.jqID(a),"#"+$.jgrid.jqID(j))[l.p.useProp?"prop":"attr"]("checked",e)),b&&($(l).triggerHandler("jqGridSelectRow",[f.id,e,c]),l.p.onSelectRow&&l.p.onSelectRow.call(l,f.id,e,c))):"ui-subgrid"!==f.className&&(l.p.selrow!==f.id?(k=$(l).jqGrid("getGridRowById",l.p.selrow),k&&$(k).removeClass(n).attr({"aria-selected":"false",tabindex:"-1"}),$(f).addClass(n).attr({"aria-selected":"true",tabindex:"0"}),j&&($("#"+$.jgrid.jqID(l.p.selrow),"#"+$.jgrid.jqID(j)).removeClass(n),$("#"+$.jgrid.jqID(a),"#"+$.jgrid.jqID(j)).addClass(n)),e=!0):e=!1,l.p.selrow=f.id,b&&($(l).triggerHandler("jqGridSelectRow",[f.id,e,c]),l.p.onSelectRow&&l.p.onSelectRow.call(l,f.id,e,c)))))})},resetSelection:function(a){return this.each(function(){var b,c,d=this,e=$.jgrid.getMethod("getStyleUI"),f=e(d.p.styleUI+".common","highlight",!0),g=e(d.p.styleUI+".common","hover",!0);if(d.p.frozenColumns===!0&&(c=d.p.id+"_frozen"),void 0!==a){if(b=a===d.p.selrow?d.p.selrow:a,$("#"+$.jgrid.jqID(d.p.id)+" tbody:first tr#"+$.jgrid.jqID(b)).removeClass(f).attr("aria-selected","false"),c&&$("#"+$.jgrid.jqID(b),"#"+$.jgrid.jqID(c)).removeClass(f),d.p.multiselect){$("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+$.jgrid.jqID(b),"#"+$.jgrid.jqID(d.p.id))[d.p.useProp?"prop":"attr"]("checked",!1),c&&$("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+$.jgrid.jqID(b),"#"+$.jgrid.jqID(c))[d.p.useProp?"prop":"attr"]("checked",!1),d.setHeadCheckBox(!1);var h=$.inArray($.jgrid.jqID(b),d.p.selarrrow);-1!==h&&d.p.selarrrow.splice(h,1)}d.p.onUnSelectRow&&d.p.onUnSelectRow.call(d,b),b=null}else d.p.multiselect?($(d.p.selarrrow).each(function(a,b){$($(d).jqGrid("getGridRowById",b)).removeClass(f).attr("aria-selected","false"),$("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+$.jgrid.jqID(b))[d.p.useProp?"prop":"attr"]("checked",!1),c&&($("#"+$.jgrid.jqID(b),"#"+$.jgrid.jqID(c)).removeClass(f),$("#jqg_"+$.jgrid.jqID(d.p.id)+"_"+$.jgrid.jqID(b),"#"+$.jgrid.jqID(c))[d.p.useProp?"prop":"attr"]("checked",!1)),d.p.onUnSelectRow&&d.p.onUnSelectRow.call(d,b)}),d.setHeadCheckBox(!1),d.p.selarrrow=[],d.p.selrow=null):d.p.selrow&&($("#"+$.jgrid.jqID(d.p.id)+" tbody:first tr#"+$.jgrid.jqID(d.p.selrow)).removeClass(f).attr("aria-selected","false"),c&&$("#"+$.jgrid.jqID(d.p.selrow),"#"+$.jgrid.jqID(c)).removeClass(f),d.p.onUnSelectRow&&d.p.onUnSelectRow.call(d,d.p.selrow),d.p.selrow=null);d.p.cellEdit===!0&&parseInt(d.p.iCol,10)>=0&&parseInt(d.p.iRow,10)>=0&&($("td:eq("+d.p.iCol+")",d.rows[d.p.iRow]).removeClass("edit-cell "+f),$(d.rows[d.p.iRow]).removeClass("selected-row "+g)),d.p.savedRow=[]})},getRowData:function(a,b){var c,d,e={},f=!1,g=0;return this.each(function(){var h,i,j=this;if(null==a)f=!0,c=[],d=j.rows.length;else{if(i=$(j).jqGrid("getGridRowById",a),!i)return e;d=2}for(b&&b===!0&&j.p.data.length>0||(b=!1);d>g;)f&&(i=j.rows[g]),$(i).hasClass("jqgrow")&&(b?e=j.p.data[j.p._index[i.id]]:$('td[role="gridcell"]',i).each(function(a){if(h=j.p.colModel[a].name,"cb"!==h&&"subgrid"!==h&&"rn"!==h)if(j.p.treeGrid===!0&&h===j.p.ExpandColumn)e[h]=$.jgrid.htmlDecode($("span:first",this).html());else try{e[h]=$.unformat.call(j,this,{rowId:i.id,colModel:j.p.colModel[a]},a)}catch(b){e[h]=$.jgrid.htmlDecode($(this).html())}}),f&&(c.push(e),e={})),g++}),c||e},delRowData:function(a){var b,c,d,e=!1;return this.each(function(){var f=this;if(b=$(f).jqGrid("getGridRowById",a),!b)return!1;if(f.p.subGrid&&(d=$(b).next(),d.hasClass("ui-subgrid")&&d.remove()),$(b).remove(),f.p.records--,f.p.reccount--,f.updatepager(!0,!1),e=!0,f.p.multiselect&&(c=$.inArray(a,f.p.selarrrow),-1!==c&&f.p.selarrrow.splice(c,1)),f.p.multiselect&&f.p.selarrrow.length>0?f.p.selrow=f.p.selarrrow[f.p.selarrrow.length-1]:f.p.selrow===a&&(f.p.selrow=null),"local"===f.p.datatype){var g=$.jgrid.stripPref(f.p.idPrefix,a),h=f.p._index[g];void 0!==h&&(f.p.data.splice(h,1),f.refreshIndex())}if(f.p.altRows===!0&&e){var i=f.p.altclass;$(f.rows).each(function(a){a%2===1?$(this).addClass(i):$(this).removeClass(i)})}}),e},setRowData:function(a,b,c){var d,e,f=!0;return this.each(function(){if(!this.grid)return!1;var g,h,i=this,j=typeof c,k={};if(h=$(this).jqGrid("getGridRowById",a),!h)return!1;if(b)try{if($(this.p.colModel).each(function(c){d=this.name;var f=$.jgrid.getAccessor(b,d);void 0!==f&&(k[d]=this.formatter&&"string"==typeof this.formatter&&"date"===this.formatter?$.unformat.date.call(i,f,this):f,g=i.formatter(a,k[d],c,b,"edit"),e=this.title?{title:$.jgrid.stripHtml(g)}:{},i.p.treeGrid===!0&&d===i.p.ExpandColumn?$("td[role='gridcell']:eq("+c+") > span:first",h).html(g).attr(e):$("td[role='gridcell']:eq("+c+")",h).html(g).attr(e))}),"local"===i.p.datatype){var l,m=$.jgrid.stripPref(i.p.idPrefix,a),n=i.p._index[m]; +if(i.p.treeGrid)for(l in i.p.treeReader)i.p.treeReader.hasOwnProperty(l)&&delete k[i.p.treeReader[l]];void 0!==n&&(i.p.data[n]=$.extend(!0,i.p.data[n],k)),k=null}}catch(o){f=!1}f&&("string"===j?$(h).addClass(c):null!==c&&"object"===j&&$(h).css(c),$(i).triggerHandler("jqGridAfterGridComplete"))}),f},addRowData:function(a,b,c,d){-1===$.inArray(c,["first","last","before","after"])&&(c="last");var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s=!1,t="",u="",v="";return b&&($.isArray(b)?(m=!0,n=a):(b=[b],m=!1),this.each(function(){var w=this,x=b.length;i=w.p.rownumbers===!0?1:0,g=w.p.multiselect===!0?1:0,h=w.p.subGrid===!0?1:0,m||(void 0!==a?a=String(a):(a=$.jgrid.randId(),w.p.keyName!==!1&&(n=w.p.keyName,void 0!==b[0][n]&&(a=b[0][n])))),o=w.p.altclass;var y,z=0,A=$(w).jqGrid("getStyleUI",w.p.styleUI+".base","rowBox",!0,"jqgrow ui-row-"+w.p.direction),B={},C=$.isFunction(w.p.afterInsertRow)?!0:!1;for(i&&(t=$(w).jqGrid("getStyleUI",w.p.styleUI+".base","rownumBox",!1,"jqgrid-rownum")),g&&(u=$(w).jqGrid("getStyleUI",w.p.styleUI+".base","multiBox",!1,"cbox"));x>z;){if(p=b[z],f=[],y=A,m){try{a=p[n],void 0===a&&(a=$.jgrid.randId())}catch(D){a=$.jgrid.randId()}y+=w.p.altRows===!0&&(w.rows.length-1)%2===0?" "+o:""}for(r=a,a=w.p.idPrefix+a,i&&(v=w.formatCol(0,1,"",null,a,!0),f[f.length]='0"),g&&(l='",v=w.formatCol(i,1,"",null,a,!0),f[f.length]='"+l+""),h&&(f[f.length]=$(w).jqGrid("addSubGridCell",g+i,1)),k=g+h+i;k"+l+"";if(f.unshift(w.constructTr(a,!1,y,B,p)),f[f.length]="",0===w.rows.length)$("table:first",w.grid.bDiv).append(f.join(""));else switch(c){case"last":$(w.rows[w.rows.length-1]).after(f.join("")),j=w.rows.length-1;break;case"first":$(w.rows[0]).after(f.join("")),j=1;break;case"after":j=$(w).jqGrid("getGridRowById",d),j&&($(w.rows[j.rowIndex+1]).hasClass("ui-subgrid")?$(w.rows[j.rowIndex+1]).after(f):$(j).after(f.join("")),j=j.rowIndex+1);break;case"before":j=$(w).jqGrid("getGridRowById",d),j&&($(j).before(f.join("")),j=j.rowIndex-1)}w.p.subGrid===!0&&$(w).jqGrid("addSubGrid",g+i,j),w.p.records++,w.p.reccount++,$(w).triggerHandler("jqGridAfterInsertRow",[a,p,p]),C&&w.p.afterInsertRow.call(w,a,p,p),z++,"local"===w.p.datatype&&(B[w.p.localReader.id]=r,w.p._index[r]=w.p.data.length,w.p.data.push(B),B={})}w.p.altRows!==!0||m||("last"===c?(w.rows.length-1)%2===0&&$(w.rows[w.rows.length-1]).addClass(o):$(w.rows).each(function(a){a%2===0?$(this).addClass(o):$(this).removeClass(o)})),w.updatepager(!0,!0),s=!0})),s},footerData:function(a,b,c){function d(a){var b;for(b in a)if(a.hasOwnProperty(b))return!1;return!0}var e,f,g=!1,h={};return void 0===a&&(a="get"),"boolean"!=typeof c&&(c=!0),a=a.toLowerCase(),this.each(function(){var i,j=this;return j.grid&&j.p.footerrow?"set"===a&&d(b)?!1:(g=!0,void $(this.p.colModel).each(function(d){e=this.name,"set"===a?void 0!==b[e]&&(i=c?j.formatter("",b[e],d,b,"edit"):b[e],f=this.title?{title:$.jgrid.stripHtml(i)}:{},$("tr.footrow td:eq("+d+")",j.grid.sDiv).html(i).attr(f),g=!0):"get"===a&&(h[e]=$("tr.footrow td:eq("+d+")",j.grid.sDiv).html())})):!1}),"get"===a?h:g},showHideCol:function(a,b){return this.each(function(){var c,d=this,e=!1,f=$.jgrid.cell_width?0:d.p.cellLayout;if(d.grid){"string"==typeof a&&(a=[a]),b="none"!==b?"":"none";var g=""===b?!0:!1,h=d.p.groupHeader&&($.isArray(d.p.groupHeader)||$.isFunction(d.p.groupHeader));if(h&&$(d).jqGrid("destroyGroupHeader",!1),$(this.p.colModel).each(function(h){if(-1!==$.inArray(this.name,a)&&this.hidden===g){if(d.p.frozenColumns===!0&&this.frozen===!0)return!0;$("tr[role=row]",d.grid.hDiv).each(function(){$(this.cells[h]).css("display",b)}),$(d.rows).each(function(){$(this).hasClass("jqgroup")||$(this.cells[h]).css("display",b)}),d.p.footerrow&&$("tr.footrow td:eq("+h+")",d.grid.sDiv).css("display",b),c=parseInt(this.width,10),"none"===b?d.p.tblwidth-=c+f:d.p.tblwidth+=c+f,this.hidden=!g,e=!0,$(d).triggerHandler("jqGridShowHideCol",[g,this.name,h])}}),e===!0&&(d.p.shrinkToFit!==!0||isNaN(d.p.height)||(d.p.tblwidth+=parseInt(d.p.scrollOffset,10)),$(d).jqGrid("setGridWidth",d.p.shrinkToFit===!0?d.p.tblwidth:d.p.width)),h){var i=$.extend([],d.p.groupHeader);d.p.groupHeader=null;for(var j=0;jtr"+(c||""),b).each(function(){var b=this,c=$.makeArray(b.cells);$.each(a,function(){var a=c[this];a&&b.appendChild(a)})})}var f=this.get(0);d(f.p.colModel),d(f.p.colNames),d(f.grid.headers),e($("thead:first",f.grid.hDiv),c&&":not(.ui-jqgrid-labels)"),b&&e($("#"+$.jgrid.jqID(f.p.id)+" tbody:first"),".jqgfirstrow, tr.jqgrow, tr.jqfoot"),f.p.footerrow&&e($("tbody:first",f.grid.sDiv)),f.p.remapColumns&&(f.p.remapColumns.length?d(f.p.remapColumns):f.p.remapColumns=$.makeArray(a)),f.p.lastsort=$.inArray(f.p.lastsort,a),f.p.treeGrid&&(f.p.expColInd=$.inArray(f.p.expColInd,a)),$(f).triggerHandler("jqGridRemapColumns",[a,b,c])},setGridWidth:function(a,b){return this.each(function(){if(this.grid){var c,d,e,f,g=this,h=0,i=$.jgrid.cell_width?0:g.p.cellLayout,j=0,k=!1,l=g.p.scrollOffset,m=0;if("boolean"!=typeof b&&(b=g.p.shrinkToFit),!isNaN(a)){if(a=parseInt(a,10),g.grid.width=g.p.width=a,$("#gbox_"+$.jgrid.jqID(g.p.id)).css("width",a+"px"),$("#gview_"+$.jgrid.jqID(g.p.id)).css("width",a+"px"),$(g.grid.bDiv).css("width",a+"px"),$(g.grid.hDiv).css("width",a+"px"),g.p.pager&&$(g.p.pager).css("width",a+"px"),g.p.toppager&&$(g.p.toppager).css("width",a+"px"),g.p.toolbar[0]===!0&&($(g.grid.uDiv).css("width",a+"px"),"both"===g.p.toolbar[1]&&$(g.grid.ubDiv).css("width",a+"px")),g.p.footerrow&&$(g.grid.sDiv).css("width",a+"px"),b===!1&&g.p.forceFit===!0&&(g.p.forceFit=!1),b===!0){if($.each(g.p.colModel,function(){this.hidden===!1&&(c=this.widthOrg,h+=c+i,this.fixed?m+=c+i:j++)}),0===j)return;g.p.tblwidth=h,e=a-i*j-m,isNaN(g.p.height)||($(g.grid.bDiv)[0].clientHeight<$(g.grid.bDiv)[0].scrollHeight||1===g.rows.length)&&(k=!0,e-=l),h=0;var n=g.grid.cols.length>0;if($.each(g.p.colModel,function(a){if(this.hidden===!1&&!this.fixed){if(c=this.widthOrg,c=Math.round(e*c/(g.p.tblwidth-i*j-m)),0>c)return;this.width=c,h+=c,g.grid.headers[a].width=c,g.grid.headers[a].el.style.width=c+"px",g.p.footerrow&&(g.grid.footers[a].style.width=c+"px"),n&&(g.grid.cols[a].style.width=c+"px"),d=a}}),!d)return;if(f=0,k?a-m-(h+i*j)!==l&&(f=a-m-(h+i*j)-l):1!==Math.abs(a-m-(h+i*j))&&(f=a-m-(h+i*j)),g.p.colModel[d].width+=f,g.p.tblwidth=h+f+i*j+m,g.p.tblwidth>a){var o=g.p.tblwidth-parseInt(a,10);g.p.tblwidth=a,c=g.p.colModel[d].width=g.p.colModel[d].width-o}else c=g.p.colModel[d].width;g.grid.headers[d].width=c,g.grid.headers[d].el.style.width=c+"px",n&&(g.grid.cols[d].style.width=c+"px"),g.p.footerrow&&(g.grid.footers[d].style.width=c+"px")}g.p.tblwidth&&($("table:first",g.grid.bDiv).css("width",g.p.tblwidth+"px"),$("table:first",g.grid.hDiv).css("width",g.p.tblwidth+"px"),g.grid.hDiv.scrollLeft=g.grid.bDiv.scrollLeft,g.p.footerrow&&$("table:first",g.grid.sDiv).css("width",g.p.tblwidth+"px"))}}})},setGridHeight:function(a){return this.each(function(){var b=this;if(b.grid){var c=$(b.grid.bDiv);c.css({height:a+(isNaN(a)?"":"px")}),b.p.frozenColumns===!0&&$("#"+$.jgrid.jqID(b.p.id)+"_frozen").parent().height(c.height()-16),b.p.height=a,b.p.scroll&&b.grid.populateVisible()}})},setCaption:function(a){return this.each(function(){var b=$(this).jqGrid("getStyleUI",this.p.styleUI+".common","cornertop",!0);this.p.caption=a,$(".ui-jqgrid-title, .ui-jqgrid-title-rtl",this.grid.cDiv).html(a),$(this.grid.cDiv).show(),$(this.grid.hDiv).removeClass(b)})},setLabel:function(a,b,c,d){return this.each(function(){var e=this,f=-1;if(e.grid&&null!=a&&(isNaN(a)?$(e.p.colModel).each(function(b){return this.name===a?(f=b,!1):void 0}):f=parseInt(a,10),f>=0)){var g=$("tr.ui-jqgrid-labels th:eq("+f+")",e.grid.hDiv);if(b){var h=$(".s-ico",g);$("[id^=jqgh_]",g).empty().html(b).append(h),e.p.colNames[f]=b}c&&("string"==typeof c?$(g).addClass(c):$(g).css(c)),"object"==typeof d&&$(g).attr(d)}})},setCell:function(a,b,c,d,e,f){return this.each(function(){var g,h,i=this,j=-1;if(i.grid&&(isNaN(b)?$(i.p.colModel).each(function(a){return this.name===b?(j=a,!1):void 0}):j=parseInt(b,10),j>=0)){var k=$(i).jqGrid("getGridRowById",a);if(k){var l=$("td:eq("+j+")",k),m=0,n=[];if(""!==c||f===!0){if(void 0!==k.cells)for(;m0?$("span",$(l)).html(g).attr(h):$(l).html(g).attr(h),"local"===i.p.datatype){var o,p=i.p.colModel[j];c=p.formatter&&"string"==typeof p.formatter&&"date"===p.formatter?$.unformat.date.call(i,c,p):c,o=i.p._index[$.jgrid.stripPref(i.p.idPrefix,a)],void 0!==o&&(i.p.data[o][p.name]=c)}}"string"==typeof d?$(l).addClass(d):d&&$(l).css(d),"object"==typeof e&&$(l).attr(e)}}})},getCell:function(a,b){var c=!1;return this.each(function(){var d=this,e=-1;if(d.grid&&(isNaN(b)?$(d.p.colModel).each(function(a){return this.name===b?(e=a,!1):void 0}):e=parseInt(b,10),e>=0)){var f=$(d).jqGrid("getGridRowById",a);if(f)try{c=$.unformat.call(d,$("td:eq("+e+")",f),{rowId:f.id,colModel:d.p.colModel[e]},e)}catch(g){c=$.jgrid.htmlDecode($("td:eq("+e+")",f).html())}}}),c},getCol:function(a,b,c){var d,e,f,g,h=[],i=0;return b="boolean"!=typeof b?!1:b,void 0===c&&(c=!1),this.each(function(){var j=this,k=-1;if(j.grid&&(isNaN(a)?$(j.p.colModel).each(function(b){return this.name===a?(k=b,!1):void 0}):k=parseInt(a,10),k>=0)){var l=j.rows.length,m=0,n=0;if(l&&l>0){for(;l>m;){if($(j.rows[m]).hasClass("jqgrow")){try{d=$.unformat.call(j,$(j.rows[m].cells[k]),{rowId:j.rows[m].id,colModel:j.p.colModel[k]},k)}catch(o){d=$.jgrid.htmlDecode(j.rows[m].cells[k].innerHTML)}c?(g=parseFloat(d),isNaN(g)||(i+=g,void 0===f&&(f=e=g),e=Math.min(e,g),f=Math.max(f,g),n++)):b?h.push({id:j.rows[m].id,value:d}):h.push(d)}m++}if(c)switch(c.toLowerCase()){case"sum":h=i;break;case"avg":h=i/n;break;case"count":h=l-1;break;case"min":h=e;break;case"max":h=f}}}}),h},clearGridData:function(a){return this.each(function(){var b=this;if(b.grid){if("boolean"!=typeof a&&(a=!1),b.p.deepempty)$("#"+$.jgrid.jqID(b.p.id)+" tbody:first tr:gt(0)").remove();else{var c=$("#"+$.jgrid.jqID(b.p.id)+" tbody:first tr:first")[0];$("#"+$.jgrid.jqID(b.p.id)+" tbody:first").empty().append(c)}b.p.footerrow&&a&&$(".ui-jqgrid-ftable td",b.grid.sDiv).html(" "),b.p.selrow=null,b.p.selarrrow=[],b.p.savedRow=[],b.p.records=0,b.p.page=1,b.p.lastpage=0,b.p.reccount=0,b.p.data=[],b.p._index={},b.updatepager(!0,!1)}})},getInd:function(a,b){var c,d=!1;return this.each(function(){c=$(this).jqGrid("getGridRowById",a),c&&(d=b===!0?c:c.rowIndex)}),d},bindKeys:function(a){var b=$.extend({onEnter:null,onSpace:null,onLeftKey:null,onRightKey:null,scrollingRows:!0},a||{});return this.each(function(){var a=this;$("body").is("[role]")||$("body").attr("role","application"),a.p.scrollrows=b.scrollingRows,$(a).keydown(function(c){var d,e,f,g=$(a).find("tr[tabindex=0]")[0],h=a.p.treeReader.expanded_field;if(g)if(f=a.p._index[$.jgrid.stripPref(a.p.idPrefix,g.id)],37===c.keyCode||38===c.keyCode||39===c.keyCode||40===c.keyCode){if(38===c.keyCode){if(e=g.previousSibling,d="",e)if($(e).is(":hidden")){for(;e;)if(e=e.previousSibling,!$(e).is(":hidden")&&$(e).hasClass("jqgrow")){d=e.id;break}}else d=e.id;$(a).jqGrid("setSelection",d,!0,c),c.preventDefault()}if(40===c.keyCode){if(e=g.nextSibling,d="",e)if($(e).is(":hidden")){for(;e;)if(e=e.nextSibling,!$(e).is(":hidden")&&$(e).hasClass("jqgrow")){d=e.id;break}}else d=e.id;$(a).jqGrid("setSelection",d,!0,c),c.preventDefault()}37===c.keyCode&&(a.p.treeGrid&&a.p.data[f][h]&&$(g).find("div.treeclick").trigger("click"),$(a).triggerHandler("jqGridKeyLeft",[a.p.selrow]),$.isFunction(b.onLeftKey)&&b.onLeftKey.call(a,a.p.selrow)),39===c.keyCode&&(a.p.treeGrid&&!a.p.data[f][h]&&$(g).find("div.treeclick").trigger("click"),$(a).triggerHandler("jqGridKeyRight",[a.p.selrow]),$.isFunction(b.onRightKey)&&b.onRightKey.call(a,a.p.selrow))}else 13===c.keyCode?($(a).triggerHandler("jqGridKeyEnter",[a.p.selrow]),$.isFunction(b.onEnter)&&b.onEnter.call(a,a.p.selrow)):32===c.keyCode&&($(a).triggerHandler("jqGridKeySpace",[a.p.selrow]),$.isFunction(b.onSpace)&&b.onSpace.call(a,a.p.selrow))})})},unbindKeys:function(){return this.each(function(){$(this).unbind("keydown")})},getLocalRow:function(a){var b,c=!1;return this.each(function(){void 0!==a&&(b=this.p._index[$.jgrid.stripPref(this.p.idPrefix,a)],b>=0&&(c=this.p.data[b]))}),c},progressBar:function(a){return a=$.extend({htmlcontent:"",method:"hide",loadtype:"disable"},a||{}),this.each(function(){var b,c,d="show"===a.method?!0:!1,e=$("#load_"+$.jgrid.jqID(this.p.id)),f=$(window).scrollTop();switch(""!==a.htmlcontent&&e.html(a.htmlcontent),a.loadtype){case"disable":break;case"enable":e.toggle(d);break;case"block":$("#lui_"+$.jgrid.jqID(this.p.id)).toggle(d),e.toggle(d)}e.is(":visible")&&(b=e.offsetParent(),e.css("top",""),e.offset().topc&&b[c].frozen===!0;)f=!0,e=c,c++;if(e>=0&&f){var i=a.p.caption?$(a.grid.cDiv).outerHeight():0,j=$(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID(a.p.id)).height();a.p.toppager&&(i+=$(a.grid.topDiv).outerHeight()),a.p.toolbar[0]===!0&&"bottom"!==a.p.toolbar[1]&&(i+=$(a.grid.uDiv).outerHeight()),a.grid.fhDiv=$('
'),a.grid.fbDiv=$('
'),$("#gview_"+$.jgrid.jqID(a.p.id)).append(a.grid.fhDiv);var k=$(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID(a.p.id)).clone(!0);if(a.p.groupHeader){$("tr.jqg-first-row-header, tr.jqg-third-row-header",k).each(function(){$("th:gt("+e+")",this).remove()});var l,m,n=-1,o=-1;$("tr.jqg-second-row-header th",k).each(function(){return l=parseInt($(this).attr("colspan"),10),m=parseInt($(this).attr("rowspan"),10),m&&(n++,o++),l&&(n+=l,o++),n===e?(o=e,!1):void 0}),n!==e&&(o=e),$("tr.jqg-second-row-header",k).each(function(){$("th:gt("+o+")",this).remove()})}else $("tr",k).each(function(){$("th:gt("+e+")",this).remove()});if($(k).width(1).css("height","100%"),$(a.grid.fhDiv).append(k).mousemove(function(b){return a.grid.resizing?(a.grid.dragMove(b),!1):void 0}),a.p.footerrow){var p=$(".ui-jqgrid-bdiv","#gview_"+$.jgrid.jqID(a.p.id)).height();a.grid.fsDiv=$('
'),$("#gview_"+$.jgrid.jqID(a.p.id)).append(a.grid.fsDiv);var q=$(".ui-jqgrid-ftable","#gview_"+$.jgrid.jqID(a.p.id)).clone(!0);$("tr",q).each(function(){$("td:gt("+e+")",this).remove()}),$(q).width(1),$(a.grid.fsDiv).append(q)}$(a).bind("jqGridResizeStop.setFrozenColumns",function(b,c,d){var e=$(".ui-jqgrid-htable",a.grid.fhDiv);$("th:eq("+d+")",e).width(c);var f=$(".ui-jqgrid-btable",a.grid.fbDiv);if($("tr:first td:eq("+d+")",f).width(c),a.p.footerrow){var g=$(".ui-jqgrid-ftable",a.grid.fsDiv);$("tr:first td:eq("+d+")",g).width(c)}}),$("#gview_"+$.jgrid.jqID(a.p.id)).append(a.grid.fbDiv),$(a.grid.fbDiv).bind("mousewheel DOMMouseScroll",function(b){var c=$(a.grid.bDiv).scrollTop();b.originalEvent.wheelDelta>0||b.originalEvent.detail<0?$(a.grid.bDiv).scrollTop(c-25):$(a.grid.bDiv).scrollTop(c+25),b.preventDefault()}),a.p.hoverrows===!0&&$("#"+$.jgrid.jqID(a.p.id)).unbind("mouseover").unbind("mouseout"),$(a).bind("jqGridAfterGridComplete.setFrozenColumns",function(){$("#"+$.jgrid.jqID(a.p.id)+"_frozen").remove(),$(a.grid.fbDiv).height($(a.grid.bDiv).height()-16);var b=$("#"+$.jgrid.jqID(a.p.id)).clone(!0);$("tr[role=row]",b).each(function(){$("td[role=gridcell]:gt("+e+")",this).remove()}),$(b).width(1).attr("id",a.p.id+"_frozen"),$(a.grid.fbDiv).append(b),a.p.hoverrows===!0&&($("tr.jqgrow",b).hover(function(){$(this).addClass(h),$("#"+$.jgrid.jqID(this.id),"#"+$.jgrid.jqID(a.p.id)).addClass(h)},function(){$(this).removeClass(h),$("#"+$.jgrid.jqID(this.id),"#"+$.jgrid.jqID(a.p.id)).removeClass(h)}),$("tr.jqgrow","#"+$.jgrid.jqID(a.p.id)).hover(function(){$(this).addClass(h),$("#"+$.jgrid.jqID(this.id),"#"+$.jgrid.jqID(a.p.id)+"_frozen").addClass(h)},function(){$(this).removeClass(h),$("#"+$.jgrid.jqID(this.id),"#"+$.jgrid.jqID(a.p.id)+"_frozen").removeClass(h)})),b=null}),a.grid.hDiv.loading||$(a).triggerHandler("jqGridAfterGridComplete"),a.p.frozenColumns=!0}}}})},destroyFrozenColumns:function(){return this.each(function(){if(this.grid&&this.p.frozenColumns===!0){var a=this,b=$(a).jqGrid("getStyleUI",a.p.styleUI+".common","hover",!0);if($(a.grid.fhDiv).remove(),$(a.grid.fbDiv).remove(),a.grid.fhDiv=null,a.grid.fbDiv=null,a.p.footerrow&&($(a.grid.fsDiv).remove(),a.grid.fsDiv=null),$(this).unbind(".setFrozenColumns"),a.p.hoverrows===!0){var c;$("#"+$.jgrid.jqID(a.p.id)).bind("mouseover",function(a){c=$(a.target).closest("tr.jqgrow"),"ui-subgrid"!==$(c).attr("class")&&$(c).addClass(b)}).bind("mouseout",function(a){c=$(a.target).closest("tr.jqgrow"),$(c).removeClass(b)})}this.p.frozenColumns=!1}})},resizeColumn:function(a,b){return this.each(function(){var c,d,e,f=this.grid,g=this.p,h=g.colModel,i=h.length;if("string"==typeof a){for(c=0;i>c;c++)if(h[c].name===a){a=c;break}}else a=parseInt(a,10);if(b=parseInt(b,10),!("number"!=typeof a||0>a||a>h.length-1||"number"!=typeof b||bc;c++)if(h[c].hidden!==!0){g.nv=c-a;break}if(f.resizing={idx:a},d=b-f.headers[a].width,g.forceFit){if(e=f.headers[a+g.nv].width-d,e3?c:a,$("#"+$.jgrid.jqID(b.p.id)).jqGrid("setGridWidth",d)},a)})}}),$.jgrid.extend({editCell:function(a,b,c){return this.each(function(){var d,e,f,g,h=this,i=$(this).jqGrid("getStyleUI",h.p.styleUI+".common","highlight",!0),j=$(this).jqGrid("getStyleUI",h.p.styleUI+".common","hover",!0),k=$(this).jqGrid("getStyleUI",h.p.styleUI+".celledit","inputClass",!0);if(h.grid&&h.p.cellEdit===!0){if(b=parseInt(b,10),h.p.selrow=h.rows[a].id,h.p.knv||$(h).jqGrid("GridNav"),h.p.savedRow.length>0){if(c===!0&&a==h.p.iRow&&b==h.p.iCol)return;$(h).jqGrid("saveCell",h.p.savedRow[0].id,h.p.savedRow[0].ic)}else window.setTimeout(function(){$("#"+$.jgrid.jqID(h.p.knv)).attr("tabindex","-1").focus()},1);if(g=h.p.colModel[b],d=g.name,"subgrid"!==d&&"cb"!==d&&"rn"!==d){if(f=$("td:eq("+b+")",h.rows[a]),g.editable!==!0||c!==!0||f.hasClass("not-editable-cell")||$.isFunction(h.p.isCellEditable)&&!h.p.isCellEditable.call(h,d,a,b))parseInt(h.p.iCol,10)>=0&&parseInt(h.p.iRow,10)>=0&&$(h.rows[h.p.iRow]).removeClass("selected-row "+j).find("td:eq("+h.p.iCol+")").removeClass("edit-cell "+i),f.addClass("edit-cell "+i),$(h.rows[a]).addClass("selected-row "+j),e=f.html().replace(/\ \;/gi,""),$(h).triggerHandler("jqGridSelectCell",[h.rows[a].id,d,e,a,b]),$.isFunction(h.p.onSelectCell)&&h.p.onSelectCell.call(h,h.rows[a].id,d,e,a,b);else{parseInt(h.p.iCol,10)>=0&&parseInt(h.p.iRow,10)>=0&&$(h.rows[h.p.iRow]).removeClass("selected-row "+j).find("td:eq("+h.p.iCol+")").removeClass("edit-cell "+i),$(f).addClass("edit-cell "+i),$(h.rows[a]).addClass("selected-row "+j);try{e=$.unformat.call(h,f,{rowId:h.rows[a].id,colModel:g},b)}catch(l){e=g.edittype&&"textarea"===g.edittype?$(f).text():$(f).html()}if(h.p.autoencode&&(e=$.jgrid.htmlDecode(e)),g.edittype||(g.edittype="text"),h.p.savedRow.push({id:a,ic:b,name:d,v:e}),(" "===e||" "===e||1===e.length&&160===e.charCodeAt(0))&&(e=""),$.isFunction(h.p.formatCell)){var m=h.p.formatCell.call(h,h.rows[a].id,d,e,a,b);void 0!==m&&(e=m)}$(h).triggerHandler("jqGridBeforeEditCell",[h.rows[a].id,d,e,a,b]),$.isFunction(h.p.beforeEditCell)&&h.p.beforeEditCell.call(h,h.rows[a].id,d,e,a,b);var n=$.extend({},g.editoptions||{},{id:a+"_"+d,name:d,rowId:h.rows[a].id,oper:"edit"}),o=$.jgrid.createEl.call(h,g.edittype,n,e,!0,$.extend({},$.jgrid.ajaxOptions,h.p.ajaxSelectOptions||{}));$.inArray(g.edittype,["text","textarea","password","select"])>-1&&$(o).addClass(k),$(f).html("").append(o).attr("tabindex","0"),$.jgrid.bindEv.call(h,o,n),window.setTimeout(function(){$(o).focus()},1),$("input, select, textarea",f).bind("keydown",function(c){if(27===c.keyCode&&($("input.hasDatepicker",f).length>0?$(".ui-datepicker").is(":hidden")?$(h).jqGrid("restoreCell",a,b):$("input.hasDatepicker",f).datepicker("hide"):$(h).jqGrid("restoreCell",a,b)),13===c.keyCode&&!c.shiftKey)return $(h).jqGrid("saveCell",a,b),!1;if(9===c.keyCode){if(h.grid.hDiv.loading)return!1;c.shiftKey?$(h).jqGrid("prevCell",a,b):$(h).jqGrid("nextCell",a,b)}c.stopPropagation()}),$(h).triggerHandler("jqGridAfterEditCell",[h.rows[a].id,d,e,a,b]),$.isFunction(h.p.afterEditCell)&&h.p.afterEditCell.call(h,h.rows[a].id,d,e,a,b)}h.p.iCol=b,h.p.iRow=a}}})},saveCell:function(a,b){return this.each(function(){var c,d=this,e=$.jgrid.getRegional(this,"errors"),f=$.jgrid.getRegional(this,"edit");if(d.grid&&d.p.cellEdit===!0){if(c=d.p.savedRow.length>=1?0:null,null!==c){var g,h,i=$("td:eq("+b+")",d.rows[a]),j=d.p.colModel[b],k=j.name,l=$.jgrid.jqID(k),m=$(i).offset();switch(j.edittype){case"select":if(j.editoptions.multiple){var n=$("#"+a+"_"+l,d.rows[a]),o=[];g=$(n).val(),g?g.join(","):g="",$("option:selected",n).each(function(a,b){o[a]=$(b).text()}),h=o.join(",")}else g=$("#"+a+"_"+l+" option:selected",d.rows[a]).val(),h=$("#"+a+"_"+l+" option:selected",d.rows[a]).text();j.formatter&&(h=g);break;case"checkbox":var p=["Yes","No"];j.editoptions&&(p=j.editoptions.value.split(":")),g=$("#"+a+"_"+l,d.rows[a]).is(":checked")?p[0]:p[1],h=g;break;case"password":case"text":case"textarea":case"button":g=$("#"+a+"_"+l,d.rows[a]).val(),h=g;break;case"custom":try{if(!j.editoptions||!$.isFunction(j.editoptions.custom_value))throw"e1";if(g=j.editoptions.custom_value.call(d,$(".customelement",i),"get"),void 0===g)throw"e2";h=g}catch(q){"e1"===q?$.jgrid.info_dialog(e.errcap,"function 'custom_value' "+f.msg.nodefined,f.bClose,{styleUI:d.p.styleUI}):"e2"===q?$.jgrid.info_dialog(e.errcap,"function 'custom_value' "+f.msg.novalue,f.bClose,{styleUI:d.p.styleUI}):$.jgrid.info_dialog(e.errcap,q.message,f.bClose,{styleUI:d.p.styleUI})}}if(h!==d.p.savedRow[c].v){var r=$(d).triggerHandler("jqGridBeforeSaveCell",[d.rows[a].id,k,g,a,b]);if(r&&(g=r,h=r),$.isFunction(d.p.beforeSaveCell)){var s=d.p.beforeSaveCell.call(d,d.rows[a].id,k,g,a,b);s&&(g=s,h=s)}var t=$.jgrid.checkValues.call(d,g,b),u=!1;if(t[0]===!0){var v=$(d).triggerHandler("jqGridBeforeSubmitCell",[d.rows[a].id,k,g,a,b])||{};if($.isFunction(d.p.beforeSubmitCell)&&(v=d.p.beforeSubmitCell.call(d,d.rows[a].id,k,g,a,b),v||(v={})),$("input.hasDatepicker",i).length>0&&$("input.hasDatepicker",i).datepicker("hide"),"remote"===d.p.cellsubmit)if(d.p.cellurl){var w={};d.p.autoencode&&(g=$.jgrid.htmlEncode(g)),j.editoptions&&j.editoptions.NullIfEmpty&&""===g&&(g="null",u=!0),w[k]=g;var x,y,z;z=d.p.prmNames,x=z.id,y=z.oper,w[x]=$.jgrid.stripPref(d.p.idPrefix,d.rows[a].id),w[y]=z.editoper,w=$.extend(v,w),$(d).jqGrid("progressBar",{method:"show",loadtype:d.p.loadui,htmlcontent:$.jgrid.getRegional(d,"defaults.savetext")}),d.grid.hDiv.loading=!0,$.ajax($.extend({url:d.p.cellurl,data:$.isFunction(d.p.serializeCellData)?d.p.serializeCellData.call(d,w,k):w,type:"POST",complete:function(c,j){if($(d).jqGrid("progressBar",{method:"hide",loadtype:d.p.loadui}),d.grid.hDiv.loading=!1,"success"===j){var l=$(d).triggerHandler("jqGridAfterSubmitCell",[d,c,w.id,k,g,a,b])||[!0,""];l[0]===!0&&$.isFunction(d.p.afterSubmitCell)&&(l=d.p.afterSubmitCell.call(d,c,w.id,k,g,a,b)),l[0]===!0?(u&&(g=""),$(i).empty(),$(d).jqGrid("setCell",d.rows[a].id,b,h,!1,!1,!0),$(i).addClass("dirty-cell"),$(d.rows[a]).addClass("edited"),$(d).triggerHandler("jqGridAfterSaveCell",[d.rows[a].id,k,g,a,b]),$.isFunction(d.p.afterSaveCell)&&d.p.afterSaveCell.call(d,d.rows[a].id,k,g,a,b),d.p.savedRow.splice(0,1)):($.jgrid.info_dialog(e.errcap,l[1],f.bClose,{styleUI:d.p.styleUI}),d.p.restoreCellonFail&&$(d).jqGrid("restoreCell",a,b))}},error:function(c,g,h){$("#lui_"+$.jgrid.jqID(d.p.id)).hide(),d.grid.hDiv.loading=!1,$(d).triggerHandler("jqGridErrorCell",[c,g,h]),$.isFunction(d.p.errorCell)?d.p.errorCell.call(d,c,g,h):$.jgrid.info_dialog(e.errcap,c.status+" : "+c.statusText+"
"+g,f.bClose,{styleUI:d.p.styleUI}),d.p.restoreCellonFail&&$(d).jqGrid("restoreCell",a,b)}},$.jgrid.ajaxOptions,d.p.ajaxCellOptions||{}))}else try{$.jgrid.info_dialog(e.errcap,e.nourl,f.bClose,{styleUI:d.p.styleUI}),d.p.restoreCellonFail&&$(d).jqGrid("restoreCell",a,b)}catch(q){}"clientArray"===d.p.cellsubmit&&($(i).empty(),$(d).jqGrid("setCell",d.rows[a].id,b,h,!1,!1,!0),$(i).addClass("dirty-cell"),$(d.rows[a]).addClass("edited"),$(d).triggerHandler("jqGridAfterSaveCell",[d.rows[a].id,k,g,a,b]),$.isFunction(d.p.afterSaveCell)&&d.p.afterSaveCell.call(d,d.rows[a].id,k,g,a,b),d.p.savedRow.splice(0,1))}else try{window.setTimeout(function(){$.jgrid.info_dialog(e.errcap,g+" "+t[1],f.bClose,{styleUI:d.p.styleUI,top:m.top+40,left:m.left})},100),$(d).jqGrid("restoreCell",a,b)}catch(q){}}else $(d).jqGrid("restoreCell",a,b)}window.setTimeout(function(){$("#"+$.jgrid.jqID(d.p.knv)).attr("tabindex","-1").focus()},0)}})},restoreCell:function(a,b){return this.each(function(){var c,d=this;if(d.grid&&d.p.cellEdit===!0){if(c=d.p.savedRow.length>=1?0:null,null!==c){var e=$("td:eq("+b+")",d.rows[a]);if($.isFunction($.fn.datepicker))try{$("input.hasDatepicker",e).datepicker("hide")}catch(f){}$(e).empty().attr("tabindex","-1"),$(d).jqGrid("setCell",d.rows[a].id,b,d.p.savedRow[c].v,!1,!1,!0),$(d).triggerHandler("jqGridAfterRestoreCell",[d.rows[a].id,d.p.savedRow[c].v,a,b]),$.isFunction(d.p.afterRestoreCell)&&d.p.afterRestoreCell.call(d,d.rows[a].id,d.p.savedRow[c].v,a,b),d.p.savedRow.splice(0,1)}window.setTimeout(function(){$("#"+d.p.knv).attr("tabindex","-1").focus()},0)}})},nextCell:function(a,b){return this.each(function(){var c,d=this,e=!1;if(d.grid&&d.p.cellEdit===!0){for(c=b+1;c0&&$(d).jqGrid("saveCell",a,b)}})},prevCell:function(a,b){return this.each(function(){var c,d=this,e=!1;if(d.grid&&d.p.cellEdit===!0){for(c=b-1;c>=0;c--)if(d.p.colModel[c].editable===!0&&(!$.isFunction(d.p.isCellEditable)||d.p.isCellEditable.call(d,d.p.colModel[c].name,a,c))){e=c;break}e!==!1?$(d).jqGrid("editCell",a,e,!0):d.p.savedRow.length>0&&$(d).jqGrid("saveCell",a,b)}})},GridNav:function(){return this.each(function(){function a(a,b,d){if("v"===d.substr(0,1)){var e=$(c.grid.bDiv)[0].clientHeight,f=$(c.grid.bDiv)[0].scrollTop,g=c.rows[a].offsetTop+c.rows[a].clientHeight,h=c.rows[a].offsetTop;"vd"===d&&g>=e&&($(c.grid.bDiv)[0].scrollTop=$(c.grid.bDiv)[0].scrollTop+c.rows[a].clientHeight),"vu"===d&&f>h&&($(c.grid.bDiv)[0].scrollTop=$(c.grid.bDiv)[0].scrollTop-c.rows[a].clientHeight)}if("h"===d){var i=$(c.grid.bDiv)[0].clientWidth,j=$(c.grid.bDiv)[0].scrollLeft,k=c.rows[a].cells[b].offsetLeft+c.rows[a].cells[b].clientWidth,l=c.rows[a].cells[b].offsetLeft;k>=i+parseInt(j,10)?$(c.grid.bDiv)[0].scrollLeft=$(c.grid.bDiv)[0].scrollLeft+c.rows[a].cells[b].clientWidth:j>l&&($(c.grid.bDiv)[0].scrollLeft=$(c.grid.bDiv)[0].scrollLeft-c.rows[a].cells[b].clientWidth)}}function b(a,b){var d,e;if("lft"===b)for(d=a+1,e=a;e>=0;e--)if(c.p.colModel[e].hidden!==!0){d=e;break}if("rgt"===b)for(d=a-1,e=a;e
");$(f).insertBefore(c.grid.cDiv),$("#"+c.p.knv).focus().keydown(function(f){switch(e=f.keyCode,"rtl"===c.p.direction&&(37===e?e=39:39===e&&(e=37)),e){case 38:c.p.iRow-1>0&&(a(c.p.iRow-1,c.p.iCol,"vu"),$(c).jqGrid("editCell",c.p.iRow-1,c.p.iCol,!1));break;case 40:c.p.iRow+1<=c.rows.length-1&&(a(c.p.iRow+1,c.p.iCol,"vd"),$(c).jqGrid("editCell",c.p.iRow+1,c.p.iCol,!1));break;case 37:c.p.iCol-1>=0&&(d=b(c.p.iCol-1,"lft"),a(c.p.iRow,d,"h"),$(c).jqGrid("editCell",c.p.iRow,d,!1));break;case 39:c.p.iCol+1<=c.p.colModel.length-1&&(d=b(c.p.iCol+1,"rgt"),a(c.p.iRow,d,"h"),$(c).jqGrid("editCell",c.p.iRow,d,!1));break;case 13:parseInt(c.p.iCol,10)>=0&&parseInt(c.p.iRow,10)>=0&&$(c).jqGrid("editCell",c.p.iRow,c.p.iCol,!0); +break;default:return!0}return!1})}})},getChangedCells:function(a){var b=[];return a||(a="all"),this.each(function(){var c,d=this;d.grid&&d.p.cellEdit===!0&&$(d.rows).each(function(e){var f={};$(this).hasClass("edited")&&($("td",this).each(function(b){if(c=d.p.colModel[b].name,"cb"!==c&&"subgrid"!==c)if("dirty"===a){if($(this).hasClass("dirty-cell"))try{f[c]=$.unformat.call(d,this,{rowId:d.rows[e].id,colModel:d.p.colModel[b]},b)}catch(g){f[c]=$.jgrid.htmlDecode($(this).html())}}else try{f[c]=$.unformat.call(d,this,{rowId:d.rows[e].id,colModel:d.p.colModel[b]},b)}catch(g){f[c]=$.jgrid.htmlDecode($(this).html())}}),f.id=this.id,b.push(f))})}),b}}),$.extend($.jgrid,{showModal:function(a){a.w.show()},closeModal:function(a){a.w.hide().attr("aria-hidden","true"),a.o&&a.o.remove()},hideModal:function(a,b){b=$.extend({jqm:!0,gb:"",removemodal:!1,formprop:!1,form:""},b||{});var c=b.gb&&"string"==typeof b.gb&&"#gbox_"===b.gb.substr(0,6)?$("#"+b.gb.substr(6))[0]:!1;if(b.onClose){var d=c?b.onClose.call(c,a):b.onClose(a);if("boolean"==typeof d&&!d)return}if(b.formprop&&c&&b.form){var e=$(a)[0].style.height,f=$(a)[0].style.width;e.indexOf("px")>-1&&(e=parseFloat(e)),f.indexOf("px")>-1&&(f=parseFloat(f));var g,h;"edit"===b.form?(g="#"+$.jgrid.jqID("FrmGrid_"+b.gb.substr(6)),h="formProp"):"view"===b.form&&(g="#"+$.jgrid.jqID("ViewGrid_"+b.gb.substr(6)),h="viewProp"),$(c).data(h,{top:parseFloat($(a).css("top")),left:parseFloat($(a).css("left")),width:f,height:e,dataheight:$(g).height(),datawidth:$(g).width()})}if($.fn.jqm&&b.jqm===!0)$(a).attr("aria-hidden","true").jqmHide();else{if(""!==b.gb)try{$(".jqgrid-overlay:first",b.gb).hide()}catch(i){}$(a).hide().attr("aria-hidden","true")}b.removemodal&&$(a).remove()},findPos:function(a){var b=0,c=0;if(a.offsetParent)do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent);return[b,c]},createModal:function(a,b,c,d,e,f,g){c=$.extend(!0,{},$.jgrid.jqModal||{},c);var h=this,i="rtl"===$(c.gbox).attr("dir")?!0:!1,j=$.jgrid.styleUI[c.styleUI||"jQueryUI"].modal,k=$.jgrid.styleUI[c.styleUI||"jQueryUI"].common,l=document.createElement("div");g=$.extend({},g||{}),l.className="ui-jqdialog "+j.modal,l.id=a.themodal;var m=document.createElement("div");m.className="ui-jqdialog-titlebar "+j.header,m.id=a.modalhead,$(m).append(""+c.caption+"");var n=$("
").hover(function(){n.addClass(k.hover)},function(){n.removeClass(k.hover)}).append("");$(m).append(n),i?(l.dir="rtl",$(".ui-jqdialog-title",m).css("float","right"),$(".ui-jqdialog-titlebar-close",m).css("left","0.3em")):(l.dir="ltr",$(".ui-jqdialog-title",m).css("float","left"),$(".ui-jqdialog-titlebar-close",m).css("right","0.3em"));var o=document.createElement("div");$(o).addClass("ui-jqdialog-content "+j.content).attr("id",a.modalcontent),$(o).append(b),l.appendChild(o),$(l).prepend(m),f===!0?$("body").append(l):"string"==typeof f?$(f).append(l):$(l).insertBefore(d),$(l).css(g),void 0===c.jqModal&&(c.jqModal=!0);var p={};if($.fn.jqm&&c.jqModal===!0){if(0===c.left&&0===c.top&&c.overlay){var q=[];q=$.jgrid.findPos(e),c.left=q[0]+4,c.top=q[1]+4}p.top=c.top+"px",p.left=c.left}else(0!==c.left||0!==c.top)&&(p.left=c.left,p.top=c.top+"px");if($("a.ui-jqdialog-titlebar-close",m).click(function(){var b=$("#"+$.jgrid.jqID(a.themodal)).data("onClose")||c.onClose,d=$("#"+$.jgrid.jqID(a.themodal)).data("gbox")||c.gbox;return h.hideModal("#"+$.jgrid.jqID(a.themodal),{gb:d,jqm:c.jqModal,onClose:b,removemodal:c.removemodal||!1,formprop:!c.recreateForm||!1,form:c.form||""}),!1}),0!==c.width&&c.width||(c.width=300),0!==c.height&&c.height||(c.height=200),!c.zIndex){var r=$(d).parents("*[role=dialog]").filter(":first").css("z-index");r?c.zIndex=parseInt(r,10)+2:c.zIndex=950}var s=0;if(i&&p.left&&!f&&(s=$(c.gbox).width()-(isNaN(c.width)?0:parseInt(c.width,10))-8,p.left=parseInt(p.left,10)+parseInt(s,10)),p.left&&(p.left+="px"),$(l).css($.extend({width:isNaN(c.width)?"auto":c.width+"px",height:isNaN(c.height)?"auto":c.height+"px",zIndex:c.zIndex,overflow:"hidden"},p)).attr({tabIndex:"-1",role:"dialog","aria-labelledby":a.modalhead,"aria-hidden":"true"}),void 0===c.drag&&(c.drag=!0),void 0===c.resize&&(c.resize=!0),c.drag)if($(m).css("cursor","move"),$.fn.tinyDraggable)$(l).tinyDraggable({handle:"#"+$.jgrid.jqID(m.id)});else try{$(l).draggable({handle:$("#"+$.jgrid.jqID(m.id))})}catch(t){}if(c.resize)if($.fn.jqResize)$(l).append("
"),$("#"+$.jgrid.jqID(a.themodal)).jqResize(".jqResize",a.scrollelm?"#"+$.jgrid.jqID(a.scrollelm):!1);else try{$(l).resizable({handles:"se, sw",alsoResize:a.scrollelm?"#"+$.jgrid.jqID(a.scrollelm):!1})}catch(u){}c.closeOnEscape===!0&&$(l).keydown(function(b){if(27===b.which){var d=$("#"+$.jgrid.jqID(a.themodal)).data("onClose")||c.onClose;h.hideModal("#"+$.jgrid.jqID(a.themodal),{gb:c.gbox,jqm:c.jqModal,onClose:d,removemodal:c.removemodal||!1,formprop:!c.recreateForm||!1,form:c.form||""})}})},viewModal:function(a,b){if(b=$.extend({toTop:!0,overlay:10,modal:!1,overlayClass:"ui-widget-overlay",onShow:$.jgrid.showModal,onHide:$.jgrid.closeModal,gbox:"",jqm:!0,jqM:!0},b||{}),void 0===b.focusField&&(b.focusField=0),"number"==typeof b.focusField&&b.focusField>=0?b.focusField=parseInt(b.focusField,10):"boolean"!=typeof b.focusField||b.focusField?b.focusField=0:b.focusField=!1,$.fn.jqm&&b.jqm===!0)b.jqM?$(a).attr("aria-hidden","false").jqm(b).jqmShow():$(a).attr("aria-hidden","false").jqmShow();else if(""!==b.gbox&&($(".jqgrid-overlay:first",b.gbox).show(),$(a).data("gbox",b.gbox)),$(a).show().attr("aria-hidden","false"),b.focusField>=0)try{$(":input:visible",a)[parseInt(b.focusField,10)].focus()}catch(c){}},info_dialog:function(a,b,c,d){var e={width:290,height:"auto",dataheight:"auto",drag:!0,resize:!1,left:250,top:170,zIndex:1e3,jqModal:!0,modal:!1,closeOnEscape:!0,align:"center",buttonalign:"center",buttons:[]};$.extend(!0,e,$.jgrid.jqModal||{},{caption:""+a+""},d||{});var f=e.jqModal,g=this,h=$.jgrid.styleUI[e.styleUI||"jQueryUI"].modal,i=$.jgrid.styleUI[e.styleUI||"jQueryUI"].common;$.fn.jqm&&!f&&(f=!1);var j,k="";if(e.buttons.length>0)for(j=0;j"+e.buttons[j].text+"";var l=isNaN(e.dataheight)?e.dataheight:e.dataheight+"px",m="text-align:"+e.align+";",n="
";n+="
"+b+"
",n+=c?"
"+c+""+k+"
":""!==k?"
"+k+"
":"",n+="
";try{"false"===$("#info_dialog").attr("aria-hidden")&&$.jgrid.hideModal("#info_dialog",{jqm:f}),$("#info_dialog").remove()}catch(o){}$.jgrid.createModal({themodal:"info_dialog",modalhead:"info_head",modalcontent:"info_content",scrollelm:"infocnt"},n,e,"","",!0),k&&$.each(e.buttons,function(a){$("#"+$.jgrid.jqID(this.id),"#info_id").bind("click",function(){return e.buttons[a].onClick.call($("#info_dialog")),!1})}),$("#closedialog","#info_id").click(function(){return g.hideModal("#info_dialog",{jqm:f,onClose:$("#info_dialog").data("onClose")||e.onClose,gb:$("#info_dialog").data("gbox")||e.gbox}),!1}),$(".fm-button","#info_dialog").hover(function(){$(this).addClass(i.hover)},function(){$(this).removeClass(i.hover)}),$.isFunction(e.beforeOpen)&&e.beforeOpen(),$.jgrid.viewModal("#info_dialog",{onHide:function(a){a.w.hide().remove(),a.o&&a.o.remove()},modal:e.modal,jqm:f}),$.isFunction(e.afterOpen)&&e.afterOpen();try{$("#info_dialog").focus()}catch(p){}},bindEv:function(a,b){var c=this;$.isFunction(b.dataInit)&&b.dataInit.call(c,a,b),b.dataEvents&&$.each(b.dataEvents,function(){void 0!==this.data?$(a).bind(this.type,this.data,this.fn):$(a).bind(this.type,this.fn)})},createEl:function(a,b,c,d,e){function f(a,b,c){var d=["dataInit","dataEvents","dataUrl","buildSelect","sopt","searchhidden","defaultValue","attr","custom_element","custom_value","oper"];void 0!==c&&$.isArray(c)&&$.merge(d,c),$.each(b,function(b,c){-1===$.inArray(b,d)&&$(a).attr(b,c)}),b.hasOwnProperty("id")||$(a).attr("id",$.jgrid.randId())}var g="",h=this;switch(a){case"textarea":g=document.createElement("textarea"),d?b.cols||$(g).css({width:"98%"}):b.cols||(b.cols=20),b.rows||(b.rows=2),(" "===c||" "===c||1===c.length&&160===c.charCodeAt(0))&&(c=""),g.value=c,f(g,b),$(g).attr({role:"textbox",multiline:"true"});break;case"checkbox":if(g=document.createElement("input"),g.type="checkbox",b.value){var i=b.value.split(":");c===i[0]&&(g.checked=!0,g.defaultChecked=!0),g.value=i[0],$(g).attr("offval",i[1])}else{var j=(c+"").toLowerCase();j.search(/(false|f|0|no|n|off|undefined)/i)<0&&""!==j?(g.checked=!0,g.defaultChecked=!0,g.value=c):g.value="on",$(g).attr("offval","off")}f(g,b,["value"]),$(g).attr("role","checkbox");break;case"select":g=document.createElement("select"),g.setAttribute("role","select");var k,l=[];if(b.multiple===!0?(k=!0,g.multiple="multiple",$(g).attr("aria-multiselectable","true")):k=!1,null!=b.dataUrl){var m=null,n=b.postData||e.postData;try{m=b.rowId}catch(o){}h.p&&h.p.idPrefix&&(m=$.jgrid.stripPref(h.p.idPrefix,m)),$.ajax($.extend({url:$.isFunction(b.dataUrl)?b.dataUrl.call(h,m,c,String(b.name)):b.dataUrl,type:"GET",dataType:"html",data:$.isFunction(n)?n.call(h,m,c,String(b.name)):n,context:{elem:g,options:b,vl:c},success:function(a){var b,c=[],d=this.elem,e=this.vl,g=$.extend({},this.options),i=g.multiple===!0,j=g.cacheUrlData===!0,k="",l=$.isFunction(g.buildSelect)?g.buildSelect.call(h,a):a;if("string"==typeof l&&(l=$($.trim(l)).html()),l){if($(d).append(l),f(d,g,n?["postData"]:void 0),void 0===g.size&&(g.size=i?3:1),i?(c=e.split(","),c=$.map(c,function(a){return $.trim(a)})):c[0]=$.trim(e),$("option",d).each(function(a){b=$(this).text(),e=$(this).val()||b,j&&(k+=(0!==a?";":"")+e+":"+b),0===a&&d.multiple&&(this.selected=!1),$(this).attr("role","option"),($.inArray($.trim(b),c)>-1||$.inArray($.trim(e),c)>-1)&&(this.selected="selected")}),j)if("edit"===g.oper)$(h).jqGrid("setColProp",g.name,{editoptions:{buildSelect:null,dataUrl:null,value:k}});else if("search"===g.oper)$(h).jqGrid("setColProp",g.name,{searchoptions:{dataUrl:null,value:k}});else if("filter"===g.oper&&$("#fbox_"+h.p.id)[0].p){var m,o=$("#fbox_"+h.p.id)[0].p.columns;$.each(o,function(a){return m=this.index||this.name,g.name===m?(this.searchoptions.dataUrl=null,this.searchoptions.value=k,!1):void 0})}$(h).triggerHandler("jqGridAddEditAfterSelectUrlComplete",[d])}}},e||{}))}else if(b.value){var p;void 0===b.size&&(b.size=k?3:1),k&&(l=c.split(","),l=$.map(l,function(a){return $.trim(a)})),"function"==typeof b.value&&(b.value=b.value());var q,r,s,t,u,v,w=void 0===b.separator?":":b.separator,x=void 0===b.delimiter?";":b.delimiter;if("string"==typeof b.value)for(q=b.value.split(x),p=0;p2&&(r[1]=$.map(r,function(a,b){return b>0?a:void 0}).join(w)),s=document.createElement("option"),s.setAttribute("role","option"),s.value=r[0],s.innerHTML=r[1],g.appendChild(s),k||$.trim(r[0])!==$.trim(c)&&$.trim(r[1])!==$.trim(c)||(s.selected="selected"),k&&($.inArray($.trim(r[1]),l)>-1||$.inArray($.trim(r[0]),l)>-1)&&(s.selected="selected");else if("[object Array]"===Object.prototype.toString.call(b.value))for(t=b.value,p=0;p-1||$.inArray($.trim(u),l)>-1)&&(s.selected="selected"));else if("object"==typeof b.value){t=b.value;for(u in t)t.hasOwnProperty(u)&&(s=document.createElement("option"),s.setAttribute("role","option"),s.value=u,s.innerHTML=t[u],g.appendChild(s),k||$.trim(u)!==$.trim(c)&&$.trim(t[u])!==$.trim(c)||(s.selected="selected"),k&&($.inArray($.trim(t[u]),l)>-1||$.inArray($.trim(u),l)>-1)&&(s.selected="selected"))}f(g,b,["value"])}break;case"image":case"file":g=document.createElement("input"),g.type=a,f(g,b);break;case"custom":g=document.createElement("span");try{if(!$.isFunction(b.custom_element))throw"e1";var y=b.custom_element.call(h,c,b);if(!y)throw"e2";y=$(y).addClass("customelement").attr({id:b.id,name:b.name}),$(g).empty().append(y)}catch(o){var z=$.jgrid.getRegional(h,"errors"),A=$.jgrid.getRegional(h,"edit");"e1"===o?$.jgrid.info_dialog(z.errcap,"function 'custom_element' "+A.msg.nodefined,A.bClose,{styleUI:h.p.styleUI}):"e2"===o?$.jgrid.info_dialog(z.errcap,"function 'custom_element' "+A.msg.novalue,A.bClose,{styleUI:h.p.styleUI}):$.jgrid.info_dialog(z.errcap,"string"==typeof o?o:o.message,A.bClose,{styleUI:h.p.styleUI})}break;default:var B;B="button"===a?"button":"textbox",g=document.createElement("input"),g.type=a,g.value=c,f(g,b),"button"!==a&&(d?b.size||$(g).css({width:"96%"}):b.size||(b.size=20)),$(g).attr("role",B)}return g},checkDate:function(a,b){var c,d=function(a){return a%4!==0||a%100===0&&a%400!==0?28:29},e={};if(a=a.toLowerCase(),c=-1!==a.indexOf("/")?"/":-1!==a.indexOf("-")?"-":-1!==a.indexOf(".")?".":"/",a=a.split(c),b=b.split(c),3!==b.length)return!1;var f,g,h=-1,i=-1,j=-1;for(g=0;g12?!1:-1===i?!1:(l=e[a[i]].toString(),l.length<1||e[a[i]]<1||e[a[i]]>31||2===e[a[j]]&&e[a[i]]>d(e[a[h]])||e[a[i]]>m[e[a[j]]]?!1:!0)))},isEmpty:function(a){return a.match(/^\s+$/)||""===a?!0:!1},checkTime:function(a){var b,c=/^(\d{1,2}):(\d{2})([apAP][Mm])?$/;if(!$.jgrid.isEmpty(a)){if(b=a.match(c),!b)return!1;if(b[3]){if(b[1]<1||b[1]>12)return!1}else if(b[1]>23)return!1;if(b[2]>59)return!1}return!0},checkValues:function(a,b,c,d){var e,f,g,h,i,j,k=this,l=k.p.colModel,m=$.jgrid.getRegional(this,"edit.msg");if(void 0===c)if("string"==typeof b){for(f=0,i=l.length;i>f;f++)if(l[f].name===b){e=l[f].editrules,b=f,null!=l[f].formoptions&&(g=l[f].formoptions.label);break}}else b>=0&&(e=l[b].editrules);else e=c,g=void 0===d?"_":d;if(e){if(g||(g=null!=k.p.colNames?k.p.colNames[b]:l[b].label),e.required===!0&&$.jgrid.isEmpty(a))return[!1,g+": "+m.required,""];var n=e.required===!1?!1:!0;if(e.number===!0&&(n!==!1||!$.jgrid.isEmpty(a))&&isNaN(a))return[!1,g+": "+m.number,""];if(void 0!==e.minValue&&!isNaN(e.minValue)&&parseFloat(a)parseFloat(e.maxValue))return[!1,g+": "+m.maxValue+" "+e.maxValue,""];var o;if(e.email===!0&&!(n===!1&&$.jgrid.isEmpty(a)||(o=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,o.test(a))))return[!1,g+": "+m.email,""];if(e.integer===!0&&(n!==!1||!$.jgrid.isEmpty(a))){if(isNaN(a))return[!1,g+": "+m.integer,""];if(a%1!==0||-1!==a.indexOf("."))return[!1,g+": "+m.integer,""]}if(e.date===!0&&!(n===!1&&$.jgrid.isEmpty(a)||(l[b].formatoptions&&l[b].formatoptions.newformat?(h=l[b].formatoptions.newformat,j=$.jgrid.getRegional(k,"formatter.date.masks"),j&&j.hasOwnProperty(h)&&(h=j[h])):h=l[b].datefmt||"Y-m-d",$.jgrid.checkDate(h,a))))return[!1,g+": "+m.date+" - "+h,""];if(e.time===!0&&!(n===!1&&$.jgrid.isEmpty(a)||$.jgrid.checkTime(a)))return[!1,g+": "+m.date+" - hh:mm (am/pm)",""];if(e.url===!0&&!(n===!1&&$.jgrid.isEmpty(a)||(o=/^(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i,o.test(a))))return[!1,g+": "+m.url,""];if(e.custom===!0&&(n!==!1||!$.jgrid.isEmpty(a))){if($.isFunction(e.custom_func)){var p=e.custom_func.call(k,a,g,b);return $.isArray(p)?p:[!1,m.customarray,""]}return[!1,m.customfcheck,""]}}return[!0,"",""]}}),$.fn.jqFilter=function(a){if("string"==typeof a){var b=$.fn.jqFilter[a];if(!b)throw"jqFilter - No such method: "+a;var c=$.makeArray(arguments).slice(1);return b.apply(this,c)}var d=$.extend(!0,{filter:null,columns:[],sortStrategy:null,onChange:null,afterRedraw:null,checkValues:null,error:!1,errmsg:"",errorcheck:!0,showQuery:!0,sopt:null,ops:[],operands:null,numopts:["eq","ne","lt","le","gt","ge","nu","nn","in","ni"],stropts:["eq","ne","bw","bn","ew","en","cn","nc","nu","nn","in","ni"],strarr:["text","string","blob"],groupOps:[{op:"AND",text:"AND"},{op:"OR",text:"OR"}],groupButton:!0,ruleButtons:!0,uniqueSearchFields:!1,direction:"ltr"},$.jgrid.filter,a||{});return this.each(function(){if(!this.filter){this.p=d,(null===this.p.filter||void 0===this.p.filter)&&(this.p.filter={groupOp:this.p.groupOps[0].op,rules:[],groups:[]}),null!=this.p.sortStrategy&&$.isFunction(this.p.sortStrategy)&&this.p.columns.sort(this.p.sortStrategy);var a,b,c=this.p.columns.length,e=/msie/i.test(navigator.userAgent)&&!window.opera;if(this.p.initFilter=$.extend(!0,{},this.p.filter),c){for(a=0;c>a;a++)b=this.p.columns[a],b.stype?b.inputtype=b.stype:b.inputtype||(b.inputtype="text"),b.sorttype?b.searchtype=b.sorttype:b.searchtype||(b.searchtype="string"),void 0===b.hidden&&(b.hidden=!1),b.label||(b.label=b.name),b.index&&(b.name=b.index),b.hasOwnProperty("searchoptions")||(b.searchoptions={}),b.hasOwnProperty("searchrules")||(b.searchrules={}),void 0===b.search?b.inlist=!0:b.inlist=b.search;var f=function(){return $("#"+$.jgrid.jqID(d.id))[0]||null},g=f(),h=$.jgrid.styleUI[g.p.styleUI||"jQueryUI"].filter,i=$.jgrid.styleUI[g.p.styleUI||"jQueryUI"].common;this.p.showQuery&&$(this).append("
");var j=function(a,b){var c=[!0,""],e=f();if($.isFunction(b.searchrules))c=b.searchrules.call(e,a,b);else if($.jgrid&&$.jgrid.checkValues)try{c=$.jgrid.checkValues.call(e,a,-1,b.searchrules,b.label)}catch(g){}c&&c.length&&c[0]===!1&&(d.error=!c[0],d.errmsg=c[1])};this.onchange=function(){return this.p.error=!1,this.p.errmsg="",$.isFunction(this.p.onChange)?this.p.onChange.call(this,this.p):!1},this.reDraw=function(){$("table.group:first",this).remove();var a=this.createTableForGroup(d.filter,null);$(this).append(a),$.isFunction(this.p.afterRedraw)&&this.p.afterRedraw.call(this,this.p)},this.createTableForGroup=function(a,b){var c,e=this,f=$("
"),g="left";"rtl"===this.p.direction&&(g="right",f.attr("dir","rtl")),null===b&&f.append("");var j=$("");f.append(j);var k=$("");if(j.append(k),this.p.ruleButtons===!0){var l=$("");k.append(l);var m,n="";for(c=0;c"+e.p.groupOps[c].text+"";l.append(n).bind("change",function(){a.groupOp=$(l).val(),e.onchange()})}var o="";if(this.p.groupButton&&(o=$(""),o.bind("click",function(){return void 0===a.groups&&(a.groups=[]),a.groups.push({groupOp:d.groupOps[0].op,rules:[],groups:[]}),e.reDraw(),e.onchange(),!1})),k.append(o),this.p.ruleButtons===!0){var p,q=$("");q.bind("click",function(){for(void 0===a.rules&&(a.rules=[]),c=0;c");k.append(r),r.bind("click",function(){for(c=0;c");f.append(s);var t=$("");s.append(t);var u=$("");u.append(this.createTableForGroup(a.groups[c],a)),s.append(u)}void 0===a.groupOp&&(a.groupOp=e.p.groupOps[0].op);var v=e.p.ruleButtons&&e.p.uniqueSearchFields;if(v)for(var w=0;w"),p="";o.append("");var q=$("");o.append(q);var r,s=$(""),t=[];q.append(s),s.bind("change",function(){for(a.field=$(s).val(),j=$(this).parents("tr:first"),$(".data",j).empty(),c=0;c"+m.p.ops[r].text+"",f++);if($(".selectopts",j).empty().append(d),$(".selectopts",j)[0].selectedIndex=0,$.jgrid.msie&&$.jgrid.msiever()<9){var i=parseInt($("select.selectopts",j)[0].offsetWidth,10)+1;$(".selectopts",j).width(i),$(".selectopts",j).css("width","auto")}$(".data",j).append(b),$.jgrid.bindEv.call(n,b,k.searchoptions),$(".input-elm",j).bind("change",function(b){var c=b.target;a.data="SPAN"===c.nodeName.toUpperCase()&&k.searchoptions&&$.isFunction(k.searchoptions.custom_value)?k.searchoptions.custom_value.call(n,$(c).children(".customelement:first"),"get"):c.value,m.onchange()}),setTimeout(function(){a.data=$(b).val(),m.onchange()},0)}});var u=0;for(c=0;c"+m.p.columns[c].label+"")}s.append(p);var y=$("");o.append(y),k=d.columns[u],k.searchoptions.id=$.jgrid.randId(),e&&"text"===k.inputtype&&(k.searchoptions.size||(k.searchoptions.size=10)),k.searchoptions.name=a.field,k.searchoptions.oper="filter";var z=$.jgrid.createEl.call(n,k.inputtype,k.searchoptions,a.data,!0,m.p.ajaxSelectOptions||{},!0);("nu"===a.op||"nn"===a.op)&&($(z).attr("readonly","true"),$(z).attr("disabled","true"));var A=$("");for(y.append(A),A.bind("change",function(){a.op=$(A).val(),j=$(this).parents("tr:first");var b=$(".input-elm",j)[0];"nu"===a.op||"nn"===a.op?(a.data="","SELECT"!==b.tagName.toUpperCase()&&(b.value=""),b.setAttribute("readonly","true"),b.setAttribute("disabled","true")):("SELECT"===b.tagName.toUpperCase()&&(a.data=b.value),b.removeAttribute("readonly"),b.removeAttribute("disabled")),m.onchange()}),g=k.searchoptions.sopt?k.searchoptions.sopt:m.p.sopt?m.p.sopt:-1!==$.inArray(k.searchtype,m.p.strarr)?m.p.stropts:m.p.numopts,p="",$.each(m.p.ops,function(){t.push(this.oper)}),c=0;c"+m.p.ops[r].text+"");A.append(p);var B=$("");o.append(B),B.append(z),$.jgrid.bindEv.call(n,z,k.searchoptions),$(z).addClass("input-elm "+h.srInput).bind("change",function(){a.data="custom"===k.inputtype?k.searchoptions.custom_value.call(n,$(this).children(".customelement:first"),"get"):$(this).val(),m.onchange()});var C=$("");if(o.append(C),this.p.ruleButtons===!0){var D=$("");C.append(D),D.bind("click",function(){for(c=0;c1&&(c+=" "+a.groupOp+" ");try{c+=this.getStringForGroup(a.groups[b])}catch(d){alert(d)}}if(void 0!==a.rules)try{for(b=0;b1&&(c+=" "+a.groupOp+" "),c+=this.getStringForRule(a.rules[b])}catch(e){alert(e)}return c+=")","()"===c?"":c},this.getStringForRule=function(a){var b,c,e,f,g="",h="",i=["int","integer","float","number","currency"];for(b=0;b1&&(e+="OR"===c.groupOp?" || ":" && "),e+=b(c.groups[d]);if(void 0!==c.rules)for(d=0;d1&&(e+="OR"===c.groupOp?" || ":" && "),e+=a(c.rules[d]);return e+=")","()"===e?"":e}var c=this;return b(this.p.filter)},this.reDraw(),this.p.showQuery&&this.onchange(),this.filter=!0}}})},$.extend($.fn.jqFilter,{toSQLString:function(){var a="";return this.each(function(){a=this.toUserFriendlyString()}),a},filterData:function(){var a;return this.each(function(){a=this.p.filter}),a},getParameter:function(a){return void 0!==a&&this.p.hasOwnProperty(a)?this.p[a]:this.p},resetFilter:function(){return this.each(function(){this.resetFilter()})},addFilter:function(a){"string"==typeof a&&(a=$.jgrid.parse(a)),this.each(function(){this.p.filter=a,this.reDraw(),this.onchange()})}}),$.jgrid.extend({filterToolbar:function(a){var b=$.jgrid.getRegional(this[0],"search");return a=$.extend({autosearch:!0,autosearchDelay:500,searchOnEnter:!0,beforeSearch:null,afterSearch:null,beforeClear:null,afterClear:null,onClearSearchValue:null,searchurl:"",stringResult:!1,groupOp:"AND",defaultSearch:"bw",searchOperators:!1,resetIcon:"x",splitSelect:",",groupOpSelect:"OR",operands:{eq:"==",ne:"!",lt:"<",le:"<=",gt:">",ge:">=",bw:"^",bn:"!^","in":"=",ni:"!=",ew:"|",en:"!@",cn:"~",nc:"!~",nu:"#",nn:"!#",bt:"..."}},b,a||{}),this.each(function(){var c=this;if(!c.p.filterToolbar){$(c).data("filterToolbar")||$(c).data("filterToolbar",a),c.p.force_regional&&(a=$.extend(a,b));var d,e,f,g=$.jgrid.styleUI[c.p.styleUI||"jQueryUI"].filter,h=$.jgrid.styleUI[c.p.styleUI||"jQueryUI"].common,i=$.jgrid.styleUI[c.p.styleUI||"jQueryUI"].base,j=function(){var b,d,e,f,g={},h=0,i={},j=!1,k=[],l=!1;$.each(c.p.colModel,function(){var m=$("#gs_"+c.p.idPrefix+$.jgrid.jqID(this.name),this.frozen===!0&&c.p.frozenColumns===!0?c.grid.fhDiv:c.grid.hDiv);if(d=this.index||this.name,f=this.searchoptions||{},e=a.searchOperators&&f.searchOperMenu?m.parent().prev().children("a").attr("soper")||a.defaultSearch:f.sopt?f.sopt[0]:"select"===this.stype?"eq":a.defaultSearch,b="custom"===this.stype&&$.isFunction(f.custom_value)&&m.length>0&&"SPAN"===m[0].nodeName.toUpperCase()?f.custom_value.call(c,m.children(".customelement:first"),"get"):m.val(),"select"===this.stype&&f.multiple&&$.isArray(b)&&b.length&&(j=!0,k.push(d),b=1===b.length?b[0]:b),"bt"===e&&(l=!0),b||"nu"===e||"nn"===e)g[d]=b,i[d]=e,h++;else try{delete c.p.postData[d]}catch(n){}});var m=h>0?!0:!1;if(a.stringResult===!0||"local"===c.p.datatype||a.searchOperators===!0){var n='{"groupOp":"'+a.groupOp+'","rules":[',o=0;$.each(g,function(a,b){o>0&&(n+=","),n+='{"field":"'+a+'",',n+='"op":"'+i[a]+'",',b+="",n+='"data":"'+b.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"}',o++}),n+="]}";var p,q,r,s,t,u,v;if(j&&(p=$.jgrid.parse(n),p.rules&&p.rules.length))for(q=p.rules,r=0;r1&&(void 0===p.groups&&(p.groups=[]),v={groupOp:a.groupOpSelect,groups:[],rules:[]},p.groups.push(v),$.each(u,function(a){s=u[a],s&&v.rules.push({data:u[a],op:t.op,field:t.field})}),q.splice(r,1),r--));if(l&&($.isPlainObject(p)||(p=$.jgrid.parse(n)),p.rules&&p.rules.length))for(q=p.rules,r=0;r1&&(void 0===p.groups&&(p.groups=[]),v={groupOp:"AND",groups:[],rules:[]},p.groups.push(v),$.each(u,function(a){var b=0===a?"ge":"le";s=u[a],s&&v.rules.push({data:u[a],op:b,field:t.field})}),q.splice(r,1),r--));(l||j)&&(n=JSON.stringify(p)),$.extend(c.p.postData,{filters:n}),$.each(["searchField","searchString","searchOper"],function(a,b){c.p.postData.hasOwnProperty(b)&&delete c.p.postData[b]})}else $.extend(c.p.postData,g);var w;c.p.searchurl&&(w=c.p.url,$(c).jqGrid("setGridParam",{url:c.p.searchurl}));var x="stop"===$(c).triggerHandler("jqGridToolbarBeforeSearch")?!0:!1;!x&&$.isFunction(a.beforeSearch)&&(x=a.beforeSearch.call(c)),x||$(c).jqGrid("setGridParam",{search:m}).trigger("reloadGrid",[{page:1 +}]),w&&$(c).jqGrid("setGridParam",{url:w}),$(c).triggerHandler("jqGridToolbarAfterSearch"),$.isFunction(a.afterSearch)&&a.afterSearch.call(c)},k=function(b){var d,e={},f=0;b="boolean"!=typeof b?!0:b,$.each(c.p.colModel,function(){var a,b=$("#gs_"+c.p.idPrefix+$.jgrid.jqID(this.name),this.frozen===!0&&c.p.frozenColumns===!0?c.grid.fhDiv:c.grid.hDiv);switch(this.searchoptions&&void 0!==this.searchoptions.defaultValue&&(a=this.searchoptions.defaultValue),d=this.index||this.name,this.stype){case"select":if(b.find("option").each(function(b){return 0===b&&(this.selected=!0),$(this).val()===a?(this.selected=!0,!1):void 0}),void 0!==a)e[d]=a,f++;else try{delete c.p.postData[d]}catch(g){}break;case"text":if(b.val(a||""),void 0!==a)e[d]=a,f++;else try{delete c.p.postData[d]}catch(h){}break;case"custom":$.isFunction(this.searchoptions.custom_value)&&b.length>0&&"SPAN"===b[0].nodeName.toUpperCase()&&this.searchoptions.custom_value.call(c,b.children(".customelement:first"),"set",a||"")}});var g=f>0?!0:!1;if(c.p.resetsearch=!0,a.stringResult===!0||"local"===c.p.datatype){var h='{"groupOp":"'+a.groupOp+'","rules":[',i=0;$.each(e,function(a,b){i>0&&(h+=","),h+='{"field":"'+a+'",',h+='"op":"eq",',b+="",h+='"data":"'+b.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"}',i++}),h+="]}",$.extend(c.p.postData,{filters:h}),$.each(["searchField","searchString","searchOper"],function(a,b){c.p.postData.hasOwnProperty(b)&&delete c.p.postData[b]})}else $.extend(c.p.postData,e);var j;c.p.searchurl&&(j=c.p.url,$(c).jqGrid("setGridParam",{url:c.p.searchurl}));var k="stop"===$(c).triggerHandler("jqGridToolbarBeforeClear")?!0:!1;!k&&$.isFunction(a.beforeClear)&&(k=a.beforeClear.call(c)),k||b&&$(c).jqGrid("setGridParam",{search:g}).trigger("reloadGrid",[{page:1}]),j&&$(c).jqGrid("setGridParam",{url:j}),$(c).triggerHandler("jqGridToolbarAfterClear"),$.isFunction(a.afterClear)&&a.afterClear()},l=function(){var a=$("tr.ui-search-toolbar",c.grid.hDiv),b=c.p.frozenColumns===!0?$("tr.ui-search-toolbar",c.grid.fhDiv):!1;"none"===a.css("display")?(a.show(),b&&b.show()):(a.hide(),b&&b.hide())},m=function(b,d,e){$("#sopt_menu").remove(),d=parseInt(d,10),e=parseInt(e,10)+18;for(var f,i,k=$(".ui-jqgrid-view").css("font-size")||"11px",l='",$("body").append(l),$("#sopt_menu").addClass("ui-menu "+g.menu_widget),$("#sopt_menu > li > a").hover(function(){$(this).addClass(h.hover)},function(){$(this).removeClass(h.hover)}).click(function(){var d=$(this).attr("value"),e=$(this).attr("oper");if($(c).triggerHandler("jqGridToolbarSelectOper",[d,e,b]),$("#sopt_menu").hide(),$(b).text(e).attr("soper",d),a.autosearch===!0){var f=$(b).parent().next().children()[0];($(f).val()||"nu"===d||"nn"===d)&&j()}})},n=$("");a.restoreFromFilters&&(f=c.p.postData.filters,f&&("string"==typeof f&&(f=$.jgrid.parse(f)),e=f.rules.length?f.rules:!1)),$.each(c.p.colModel,function(b){var f,h,k,l,m,o,p,q,r=this,s="",t="=",u=$(""),v=$("
"),w=$("
");if(this.hidden===!0&&$(u).css("display","none"),this.search=this.search===!1?!1:!0,void 0===this.stype&&(this.stype="text"),this.searchoptions=this.searchoptions||{},void 0===this.searchoptions.searchOperMenu&&(this.searchoptions.searchOperMenu=!0),f=$.extend({},this.searchoptions,{name:r.index||r.name,id:"gs_"+c.p.idPrefix+r.name,oper:"search"}),this.search){if(a.restoreFromFilters&&e){q=!1;for(var x=0;x"+t+"":""}switch($("td:eq(0)",w).attr("colindex",b).append(s),void 0===f.clearSearch&&(f.clearSearch=!0),f.clearSearch?(m=a.resetTitle||"Clear Search Value",$("td:eq(2)",w).append(""+a.resetIcon+"")):$("td:eq(2)",w).hide(),this.surl&&(f.dataUrl=this.surl),o="",f.defaultValue&&(o=$.isFunction(f.defaultValue)?f.defaultValue.call(c):f.defaultValue),a.restoreFromFilters&&q&&(o=q.data),p=$.jgrid.createEl.call(c,this.stype,f,o,!1,$.extend({},$.jgrid.ajaxOptions,c.p.ajaxSelectOptions||{})),$(p).addClass(g.srInput),$("td:eq(1)",w).append(p),$(v).append(w),null==f.dataEvents&&(f.dataEvents=[]),this.stype){case"select":a.autosearch===!0&&f.dataEvents.push({type:"change",fn:function(){return j(),!1}});break;case"text":a.autosearch===!0&&(a.searchOnEnter?f.dataEvents.push({type:"keypress",fn:function(a){var b=a.charCode||a.keyCode||0;return 13===b?(j(),!1):this}}):f.dataEvents.push({type:"keydown",fn:function(b){var c=b.which;switch(c){case 13:return!1;case 9:case 16:case 37:case 38:case 39:case 40:case 27:break;default:d&&clearTimeout(d),d=setTimeout(function(){j()},a.autosearchDelay)}}}))}$.jgrid.bindEv.call(c,p,f)}$(u).append(v),$(n).append(u),a.searchOperators&&""!==s||$("td:eq(0)",w).hide()}),$("table thead",c.grid.hDiv).append(n),a.searchOperators&&($(".soptclass",n).click(function(a){var b=$(this).offset(),c=b.left,d=b.top;m(this,c,d),a.stopPropagation()}),$("body").on("click",function(a){"soptclass"!==a.target.className&&$("#sopt_menu").remove()})),$(".clearsearchclass",n).click(function(){var b,d=$(this).parents("tr:first"),e=parseInt($("td.ui-search-oper",d).attr("colindex"),10),f=$.extend({},c.p.colModel[e].searchoptions||{}),g=f.defaultValue?f.defaultValue:"";"select"===c.p.colModel[e].stype?(b=$("td.ui-search-input select",d),g?b.val(g):b[0].selectedIndex=0):(b=$("td.ui-search-input input",d),b.val(g)),$(c).triggerHandler("jqGridToolbarClearVal",[b[0],e,f,g]),$.isFunction(a.onClearSearchValue)&&a.onClearSearchValue.call(c,b[0],e,f,g),a.autosearch===!0&&j()}),this.p.filterToolbar=!0,this.triggerToolbar=j,this.clearToolbar=k,this.toggleToolbar=l}})},destroyFilterToolbar:function(){return this.each(function(){this.p.filterToolbar&&(this.triggerToolbar=null,this.clearToolbar=null,this.toggleToolbar=null,this.p.filterToolbar=!1,$(this.grid.hDiv).find("table thead tr.ui-search-toolbar").remove())})},refreshFilterToolbar:function(a){return a=$.extend(!0,{filters:"",onClearVal:null,onSetVal:null},a||{}),this.each(function(){function b(e){if(e&&e.rules){for(f=e.rules,k=f.length,c=0;k>c;c++)g=f[c],h=$.inArray(g.field,l),-1!==h&&(d=$("#gs_"+i.p.idPrefix+$.jgrid.jqID(j[h].name)),d.length>0&&("select"===j[h].stype?d.find("option[value='"+$.jgrid.jqID(g.data)+"']").prop("selected",!0):"text"===j[h].stype&&d.val(g.data),$.isFunction(a.onSetVal)&&a.onSetVal.call(i,d,j[h].name)));if(e.groups)for(var m=0;mc;c++){switch(l.push(j[c].name),d=$("#gs_"+i.p.idPrefix+$.jgrid.jqID(j[c].name)),j[c].stype){case"select":case"text":d.val("")}$.isFunction(a.onClearVal)&&a.onClearVal.call(i,d,j[c].name)}"string"==typeof a.filters&&a.filters.length&&(e=$.jgrid.parse(a.filters)),$.isPlainObject(e)&&b(e)}})},searchGrid:function(a){var b=$.jgrid.getRegional(this[0],"search");return a=$.extend(!0,{recreateFilter:!1,drag:!0,sField:"searchField",sValue:"searchString",sOper:"searchOper",sFilter:"filters",loadDefaults:!0,beforeShowSearch:null,afterShowSearch:null,onInitializeSearch:null,afterRedraw:null,afterChange:null,sortStrategy:null,closeAfterSearch:!1,closeAfterReset:!1,closeOnEscape:!1,searchOnEnter:!1,multipleSearch:!1,multipleGroup:!1,top:0,left:0,jqModal:!0,modal:!1,resize:!0,width:450,height:"auto",dataheight:"auto",showQuery:!1,errorcheck:!0,sopt:null,stringResult:void 0,onClose:null,onSearch:null,onReset:null,toTop:!0,overlay:30,columns:[],tmplNames:null,tmplFilters:null,tmplLabel:" Template: ",showOnLoad:!1,layer:null,operands:{eq:"=",ne:"<>",lt:"<",le:"<=",gt:">",ge:">=",bw:"LIKE",bn:"NOT LIKE","in":"IN",ni:"NOT IN",ew:"LIKE",en:"NOT LIKE",cn:"LIKE",nc:"NOT LIKE",nu:"IS NULL",nn:"ISNOT NULL"}},b,a||{}),this.each(function(){function b(b){f=$(c).triggerHandler("jqGridFilterBeforeShow",[b]),void 0===f&&(f=!0),f&&$.isFunction(a.beforeShowSearch)&&(f=a.beforeShowSearch.call(c,b)),f&&($.jgrid.viewModal("#"+$.jgrid.jqID(h.themodal),{gbox:"#gbox_"+$.jgrid.jqID(e),jqm:a.jqModal,modal:a.modal,overlay:a.overlay,toTop:a.toTop}),$(c).triggerHandler("jqGridFilterAfterShow",[b]),$.isFunction(a.afterShowSearch)&&a.afterShowSearch.call(c,b))}var c=this;if(c.grid){var d,e="fbox_"+c.p.id,f=!0,g=!0,h={themodal:"searchmod"+e,modalhead:"searchhd"+e,modalcontent:"searchcnt"+e,scrollelm:e},i=c.p.postData[a.sFilter],j=$.jgrid.styleUI[c.p.styleUI||"jQueryUI"].filter,k=$.jgrid.styleUI[c.p.styleUI||"jQueryUI"].common;if(a.styleUI=c.p.styleUI,"string"==typeof i&&(i=$.jgrid.parse(i)),a.recreateFilter===!0&&$("#"+$.jgrid.jqID(h.themodal)).remove(),void 0!==$("#"+$.jgrid.jqID(h.themodal))[0])b($("#fbox_"+$.jgrid.jqID(c.p.id)));else{var l=$("
").insertBefore("#gview_"+$.jgrid.jqID(c.p.id)),m="left",n="";"rtl"===c.p.direction&&(m="right",n=" style='text-align:left'",l.attr("dir","rtl"));var o,p,q=$.extend([],c.p.colModel),r=""+a.Find+"",s=""+a.Reset+"",t="",u="",v=!1,w=-1;if(a.showQuery&&(t="Query"),a.columns.length?(q=a.columns,w=0,o=q[0].index||q[0].name):$.each(q,function(a,b){if(b.label||(b.label=c.p.colNames[a]),!v){var d=void 0===b.search?!0:b.search,e=b.hidden===!0,f=b.searchoptions&&b.searchoptions.searchhidden===!0;(f&&d||d&&!e)&&(v=!0,o=b.index||b.name,w=a)}}),!i&&o||a.multipleSearch===!1){var x="eq";w>=0&&q[w].searchoptions&&q[w].searchoptions.sopt?x=q[w].searchoptions.sopt[0]:a.sopt&&a.sopt.length&&(x=a.sopt[0]),i={groupOp:"AND",rules:[{field:o,op:x,data:""}]}}v=!1,a.tmplNames&&a.tmplNames.length&&(v=!0,u=""+a.tmplLabel+"",u+=""),p=""+u+"

"+s+""+t+r+"
",e=$.jgrid.jqID(e),$("#"+e).jqFilter({columns:q,sortStrategy:a.sortStrategy,filter:a.loadDefaults?i:null,showQuery:a.showQuery,errorcheck:a.errorcheck,sopt:a.sopt,groupButton:a.multipleGroup,ruleButtons:a.multipleSearch,uniqueSearchFields:a.uniqueSearchFields,afterRedraw:a.afterRedraw,ops:a.odata,operands:a.operands,ajaxSelectOptions:c.p.ajaxSelectOptions,groupOps:a.groupOps,onChange:function(){this.p.showQuery&&$(".query",this).html(this.toUserFriendlyString()),$.isFunction(a.afterChange)&&a.afterChange.call(c,$("#"+e),a)},direction:c.p.direction,id:c.p.id}),l.append(p),v&&a.tmplFilters&&a.tmplFilters.length&&$(".ui-template",l).bind("change",function(){var b=$(this).val();return"default"===b?$("#"+e).jqFilter("addFilter",i):$("#"+e).jqFilter("addFilter",a.tmplFilters[parseInt(b,10)]),!1}),a.multipleGroup===!0&&(a.multipleSearch=!0),$(c).triggerHandler("jqGridFilterInitialize",[$("#"+e)]),$.isFunction(a.onInitializeSearch)&&a.onInitializeSearch.call(c,$("#"+e)),a.gbox="#gbox_"+e,a.layer?$.jgrid.createModal(h,l,a,"#gview_"+$.jgrid.jqID(c.p.id),$("#gbox_"+$.jgrid.jqID(c.p.id))[0],"#"+$.jgrid.jqID(a.layer),{position:"relative"}):$.jgrid.createModal(h,l,a,"#gview_"+$.jgrid.jqID(c.p.id),$("#gbox_"+$.jgrid.jqID(c.p.id))[0]),(a.searchOnEnter||a.closeOnEscape)&&$("#"+$.jgrid.jqID(h.themodal)).keydown(function(b){var c=$(b.target);return!a.searchOnEnter||13!==b.which||c.hasClass("add-group")||c.hasClass("add-rule")||c.hasClass("delete-group")||c.hasClass("delete-rule")||c.hasClass("fm-button")&&c.is("[id$=_query]")?a.closeOnEscape&&27===b.which?($("#"+$.jgrid.jqID(h.modalhead)).find(".ui-jqdialog-titlebar-close").click(),!1):void 0:($("#"+e+"_search").click(),!1)}),t&&$("#"+e+"_query").bind("click",function(){return $(".queryresult",l).toggle(),!1}),void 0===a.stringResult&&(a.stringResult=a.multipleSearch),$("#"+e+"_search").bind("click",function(){var b,f,i={};if(d=$("#"+e),d.find(".input-elm:focus").change(),f=d.jqFilter("filterData"),a.errorcheck&&(d[0].hideError(),a.showQuery||d.jqFilter("toSQLString"),d[0].p.error))return d[0].showError(),!1;if(a.stringResult){try{b=JSON.stringify(f)}catch(j){}"string"==typeof b&&(i[a.sFilter]=b,$.each([a.sField,a.sValue,a.sOper],function(){i[this]=""}))}else a.multipleSearch?(i[a.sFilter]=f,$.each([a.sField,a.sValue,a.sOper],function(){i[this]=""})):(i[a.sField]=f.rules[0].field,i[a.sValue]=f.rules[0].data,i[a.sOper]=f.rules[0].op,i[a.sFilter]="");return c.p.search=!0,$.extend(c.p.postData,i),g=$(c).triggerHandler("jqGridFilterSearch"),void 0===g&&(g=!0),g&&$.isFunction(a.onSearch)&&(g=a.onSearch.call(c,c.p.filters)),g!==!1&&$(c).trigger("reloadGrid",[{page:1}]),a.closeAfterSearch&&$.jgrid.hideModal("#"+$.jgrid.jqID(h.themodal),{gb:"#gbox_"+$.jgrid.jqID(c.p.id),jqm:a.jqModal,onClose:a.onClose}),!1}),$("#"+e+"_reset").bind("click",function(){var b={},d=$("#"+e);return c.p.search=!1,c.p.resetsearch=!0,a.multipleSearch===!1?b[a.sField]=b[a.sValue]=b[a.sOper]="":b[a.sFilter]="",d[0].resetFilter(),v&&$(".ui-template",l).val("default"),$.extend(c.p.postData,b),g=$(c).triggerHandler("jqGridFilterReset"),void 0===g&&(g=!0),g&&$.isFunction(a.onReset)&&(g=a.onReset.call(c)),g!==!1&&$(c).trigger("reloadGrid",[{page:1}]),a.closeAfterReset&&$.jgrid.hideModal("#"+$.jgrid.jqID(h.themodal),{gb:"#gbox_"+$.jgrid.jqID(c.p.id),jqm:a.jqModal,onClose:a.onClose}),!1}),b($("#"+e)),$(".fm-button:not(."+k.disabled+")",l).hover(function(){$(this).addClass(k.hover)},function(){$(this).removeClass(k.hover)})}}})},filterInput:function(a,b){return b=$.extend(!0,{defaultSearch:"cn",groupOp:"OR",searchAll:!1,beforeSearch:null,afterSearch:null},b||{}),this.each(function(){var c=this;if(c.grid){var d,e,f,g='{"groupOp":"'+b.groupOp+'","rules":[',h=0;if(a+="","local"!==!c.p.datatype){$.each(c.p.colModel,function(){d=this.index||this.name,e=this.searchoptions||{},f=b.defaultSearch?b.defaultSearch:e.sopt?e.sopt[0]:b.defaultSearch,this.search=this.search===!1?!1:!0,(this.search||b.searchAll)&&(h>0&&(g+=","),g+='{"field":"'+d+'",',g+='"op":"'+f+'",',g+='"data":"'+a.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"}',h++)}),g+="]}",$.extend(c.p.postData,{filters:g}),$.each(["searchField","searchString","searchOper"],function(a,b){c.p.postData.hasOwnProperty(b)&&delete c.p.postData[b]});var i="stop"===$(c).triggerHandler("jqGridFilterInputBeforeSearch")?!0:!1;!i&&$.isFunction(b.beforeSearch)&&(i=b.beforeSearch.call(c)),i||$(c).jqGrid("setGridParam",{search:!0}).trigger("reloadGrid",[{page:1}]),$(c).triggerHandler("jqGridFilterInputAfterSearch"),$.isFunction(b.afterSearch)&&b.afterSearch.call(c)}}})}});var rp_ge={};if($.jgrid.extend({editGridRow:function(a,b){var c=$.jgrid.getRegional(this[0],"edit"),d=this[0].p.styleUI,e=$.jgrid.styleUI[d].formedit,f=$.jgrid.styleUI[d].common;return b=$.extend(!0,{top:0,left:0,width:"500",datawidth:"auto",height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,resize:!0,url:null,mtype:"POST",clearAfterAdd:!0,closeAfterEdit:!1,reloadAfterSubmit:!0,onInitializeForm:null,beforeInitData:null,beforeShowForm:null,afterShowForm:null,beforeSubmit:null,afterSubmit:null,onclickSubmit:null,afterComplete:null,onclickPgButtons:null,afterclickPgButtons:null,editData:{},recreateForm:!1,jqModal:!0,closeOnEscape:!1,addedrow:"first",topinfo:"",bottominfo:"",saveicon:[],closeicon:[],savekey:[!1,13],navkeys:[!1,38,40],checkOnSubmit:!1,checkOnUpdate:!1,processing:!1,onClose:null,ajaxEditOptions:{},serializeEditData:null,viewPagerButtons:!0,overlayClass:f.overlay,removemodal:!0,form:"edit",template:null,focusField:!0},c,b||{}),rp_ge[$(this)[0].p.id]=b,this.each(function(){function c(){var a,b={};$(y).find(".FormElement").each(function(){var a=$(".customelement",this);if(a.length){var c=a[0],d=$(c).attr("name");$.each(q.p.colModel,function(){if(this.name===d&&this.editoptions&&$.isFunction(this.editoptions.custom_value)){try{if(s[d]=this.editoptions.custom_value.call(q,$("#"+$.jgrid.jqID(d),y),"get"),void 0===s[d])throw"e1"}catch(a){"e1"===a?$.jgrid.info_dialog(E.errcap,"function 'custom_value' "+rp_ge[$(this)[0]].p.msg.novalue,rp_ge[$(this)[0]].p.bClose,{styleUI:rp_ge[$(this)[0]].p.styleUI}):$.jgrid.info_dialog(E.errcap,a.message,rp_ge[$(this)[0]].p.bClose,{styleUI:rp_ge[$(this)[0]].p.styleUI})}return!0}})}else{switch($(this).get(0).type){case"checkbox":if($(this).is(":checked"))s[this.name]=$(this).val();else{var e=$(this).attr("offval");s[this.name]=e}break;case"select-one":s[this.name]=$(this).val();break;case"select-multiple":s[this.name]=$(this).val(),s[this.name]=s[this.name]?s[this.name].join(","):"";break;case"password":case"text":case"textarea":case"button":s[this.name]=$(this).val();break;case"radio":if(b.hasOwnProperty(this.name))return!0;b[this.name]=void 0===$(this).attr("offval")?"off":$(this).attr("offval")}q.p.autoencode&&(s[this.name]=$.jgrid.htmlEncode(s[this.name]))}});for(a in b)if(b.hasOwnProperty(a)){var c=$('input[name="'+a+'"]:checked',y).val();s[a]=void 0!==c?c:b[a],q.p.autoencode&&(s[a]=$.jgrid.htmlEncode(s[a]))}return!0}function d(a,b,c,d){var f,g,h,i,j,k,l,m,n=0,o=[],p=!1,r="  ",s="";for(l=1;d>=l;l++)s+=r;if("_empty"!==a&&(p=$(b).jqGrid("getInd",a)),$(b.p.colModel).each(function(l){if(f=this.name,g=this.editrules&&this.editrules.edithidden===!0?!1:this.hidden===!0?!0:!1,j=g?"style='display:none'":"","cb"!==f&&"subgrid"!==f&&this.editable===!0&&"rn"!==f){if(p===!1)i="";else if(f===b.p.ExpandColumn&&b.p.treeGrid===!0)i=$("td[role='gridcell']:eq("+l+")",b.rows[p]).text();else{try{i=$.unformat.call(b,$("td[role='gridcell']:eq("+l+")",b.rows[p]),{rowId:a,colModel:this},l)}catch(r){i=this.edittype&&"textarea"===this.edittype?$("td[role='gridcell']:eq("+l+")",b.rows[p]).text():$("td[role='gridcell']:eq("+l+")",b.rows[p]).html()}(!i||" "===i||" "===i||1===i.length&&160===i.charCodeAt(0))&&(i="")}var t=$.extend({},this.editoptions||{},{id:f,name:f,rowId:a,oper:"edit"}),u=$.extend({},{elmprefix:"",elmsuffix:"",rowabove:!1,rowcontent:""},this.formoptions||{}),v=parseInt(u.rowpos,10)||n+1,x=parseInt(2*(parseInt(u.colpos,10)||1),10);if("_empty"===a&&t.defaultValue&&(i=$.isFunction(t.defaultValue)?t.defaultValue.call(q):t.defaultValue),this.edittype||(this.edittype="text"),q.p.autoencode&&(i=$.jgrid.htmlDecode(i)),k=$.jgrid.createEl.call(q,this.edittype,t,i,!1,$.extend({},$.jgrid.ajaxOptions,b.p.ajaxSelectOptions||{})),"select"===this.edittype&&(i=$(k).val(),"select-multiple"===$(k).get(0).type&&i&&(i=i.join(","))),"checkbox"===this.edittype&&(i=$(k).is(":checked")?$(k).val():$(k).attr("offval")),$(k).addClass("FormElement"),$.inArray(this.edittype,["text","textarea","password","select"])>-1&&$(k).addClass(e.inputClass),m=!0,D){var y=$(J).find("#"+f);y.length?y.replaceWith(k):m=!1}else{if(h=$(c).find("tr[rowpos="+v+"]"),u.rowabove){var z=$(""+u.rowcontent+"");$(c).append(z),z[0].rp=v}0===h.length&&(h=$("").addClass("FormData").attr("id","tr_"+f),$(h).append(s),$(c).append(h),h[0].rp=v),$("td:eq("+(x-2)+")",h[0]).html(""),$("td:eq("+(x-1)+")",h[0]).append(u.elmprefix).append(k).append(u.elmsuffix)}(rp_ge[q.p.id].checkOnSubmit||rp_ge[q.p.id].checkOnUpdate)&&m&&(q.p.savedData[f]=i),"custom"===this.edittype&&$.isFunction(t.custom_value)&&t.custom_value.call(q,$("#"+f,w),"set",i),$.jgrid.bindEv.call(q,k,t),o[n]=l,n++}}),n>0){var t;D?(t="").append(J)):U=$("
").append(J).append(R),$(J).append("
"+rp_ge[q.p.id].bottominfo+"
"),$.jgrid.createModal(z,U,rp_ge[$(this)[0].p.id],"#gview_"+$.jgrid.jqID(q.p.id),$("#gbox_"+$.jgrid.jqID(q.p.id))[0]),K&&($("#pData, #nData",y+"_2").css("float","right"),$(".EditButton",y+"_2").css("text-align","left")),rp_ge[q.p.id].topinfo&&$(".tinfo",w).show(),rp_ge[q.p.id].bottominfo&&$(".binfo",w).show(),U=null,R=null,$("#"+$.jgrid.jqID(z.themodal)).keydown(function(a){var c=a.target;if($(w).data("disabled")===!0)return!1;if(rp_ge[q.p.id].savekey[0]===!0&&a.which===rp_ge[q.p.id].savekey[1]&&"TEXTAREA"!==c.tagName)return $("#sData",y+"_2").trigger("click"),!1;if(27===a.which)return k()?(T&&$.jgrid.hideModal("#"+$.jgrid.jqID(z.themodal),{gb:b.gbox,jqm:b.jqModal,onClose:rp_ge[q.p.id].onClose,removemodal:rp_ge[q.p.id].removemodal,formprop:!rp_ge[q.p.id].recreateForm,form:rp_ge[q.p.id].form}),!1):!1;if(rp_ge[q.p.id].navkeys[0]===!0){if("_empty"===$("#id_g",y).val())return!0;if(a.which===rp_ge[q.p.id].navkeys[1])return $("#pData",r).trigger("click"),!1;if(a.which===rp_ge[q.p.id].navkeys[2])return $("#nData",r).trigger("click"),!1}}),b.checkOnUpdate&&($("a.ui-jqdialog-titlebar-close span","#"+$.jgrid.jqID(z.themodal)).removeClass("jqmClose"),$("a.ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(z.themodal)).unbind("click").click(function(){return k()?($.jgrid.hideModal("#"+$.jgrid.jqID(z.themodal),{gb:"#gbox_"+$.jgrid.jqID(v),jqm:b.jqModal,onClose:rp_ge[q.p.id].onClose,removemodal:rp_ge[q.p.id].removemodal,formprop:!rp_ge[q.p.id].recreateForm,form:rp_ge[q.p.id].form}),!1):!1})),b.saveicon=$.extend([!0,"left",e.icon_save],b.saveicon),b.closeicon=$.extend([!0,"left",e.icon_close],b.closeicon),b.saveicon[0]===!0&&$("#sData",r).addClass("right"===b.saveicon[1]?"fm-button-icon-right":"fm-button-icon-left").append(""),b.closeicon[0]===!0&&$("#cData",r).addClass("right"===b.closeicon[1]?"fm-button-icon-right":"fm-button-icon-left").append(""),rp_ge[q.p.id].checkOnSubmit||rp_ge[q.p.id].checkOnUpdate){P=""+b.bYes+"",O=""+b.bNo+"",Q=""+b.bExit+"";var V=b.zIndex||999;V++,$("
"+b.saveData+"

"+P+O+Q+"
").insertAfter(w),$("#sNew","#"+$.jgrid.jqID(z.themodal)).click(function(){return i(),$(w).data("disabled",!1),$(".confirm","#"+$.jgrid.jqID(z.themodal)).hide(),!1}),$("#nNew","#"+$.jgrid.jqID(z.themodal)).click(function(){return $(".confirm","#"+$.jgrid.jqID(z.themodal)).hide(),$(w).data("disabled",!1),setTimeout(function(){$(":input:visible",w)[0].focus()},0),!1}),$("#cNew","#"+$.jgrid.jqID(z.themodal)).click(function(){return $(".confirm","#"+$.jgrid.jqID(z.themodal)).hide(),$(w).data("disabled",!1),$.jgrid.hideModal("#"+$.jgrid.jqID(z.themodal),{gb:"#gbox_"+$.jgrid.jqID(v),jqm:b.jqModal,onClose:rp_ge[q.p.id].onClose,removemodal:rp_ge[q.p.id].removemodal,formprop:!rp_ge[q.p.id].recreateForm,form:rp_ge[q.p.id].form}),!1})}$(q).triggerHandler("jqGridAddEditInitializeForm",[$(w),u]),$.isFunction(rp_ge[q.p.id].onInitializeForm)&&rp_ge[q.p.id].onInitializeForm.call(q,$(w),u),"_empty"!==a&&rp_ge[q.p.id].viewPagerButtons?$("#pData,#nData",r).show():$("#pData,#nData",r).hide(),$(q).triggerHandler("jqGridAddEditBeforeShowForm",[$(w),u]),$.isFunction(rp_ge[q.p.id].beforeShowForm)&&rp_ge[q.p.id].beforeShowForm.call(q,$(w),u),p(),$("#"+$.jgrid.jqID(z.themodal)).data("onClose",rp_ge[q.p.id].onClose),$.jgrid.viewModal("#"+$.jgrid.jqID(z.themodal),{gbox:"#gbox_"+$.jgrid.jqID(v),jqm:b.jqModal,overlay:b.overlay,modal:b.modal,overlayClass:b.overlayClass,focusField:b.focusField,onHide:function(a){var b=$("#editmod"+v)[0].style.height,c=$("#editmod"+v)[0].style.width;b.indexOf("px")>-1&&(b=parseFloat(b)),c.indexOf("px")>-1&&(c=parseFloat(c)),$(q).data("formProp",{top:parseFloat($(a.w).css("top")),left:parseFloat($(a.w).css("left")),width:c,height:b,dataheight:$(w).height(),datawidth:$(w).width()}),a.w.remove(),a.o&&a.o.remove()}}),F||$("."+$.jgrid.jqID(b.overlayClass)).click(function(){return k()?($.jgrid.hideModal("#"+$.jgrid.jqID(z.themodal),{gb:"#gbox_"+$.jgrid.jqID(v),jqm:b.jqModal,onClose:rp_ge[q.p.id].onClose,removemodal:rp_ge[q.p.id].removemodal,formprop:!rp_ge[q.p.id].recreateForm,form:rp_ge[q.p.id].form}),!1):!1}),$(".fm-button","#"+$.jgrid.jqID(z.themodal)).hover(function(){$(this).addClass(f.hover)},function(){$(this).removeClass(f.hover)}),$("#sData",r).click(function(){return s={},$(".FormError",w).hide(),c(),"_empty"===s[q.p.id+"_id"]?i():b.checkOnSubmit===!0?(t=j(s,q.p.savedData),t?($(w).data("disabled",!0),$(".confirm","#"+$.jgrid.jqID(z.themodal)).show()):i()):i(),!1}),$("#cData",r).click(function(){return k()?($.jgrid.hideModal("#"+$.jgrid.jqID(z.themodal),{gb:"#gbox_"+$.jgrid.jqID(v),jqm:b.jqModal,onClose:rp_ge[q.p.id].onClose,removemodal:rp_ge[q.p.id].removemodal,formprop:!rp_ge[q.p.id].recreateForm,form:rp_ge[q.p.id].form}),!1):!1}),$("#nData",r).click(function(){if(!k())return!1;$(".FormError",w).hide();var a=n();if(a[0]=parseInt(a[0],10),-1!==a[0]&&a[1][a[0]+1]){$(q).triggerHandler("jqGridAddEditClickPgButtons",["next",$(w),a[1][a[0]]]);var c;if($.isFunction(b.onclickPgButtons)&&(c=b.onclickPgButtons.call(q,"next",$(w),a[1][a[0]]),void 0!==c&&c===!1))return!1;if($("#"+$.jgrid.jqID(a[1][a[0]+1])).hasClass(f.disabled))return!1;g(a[1][a[0]+1],q,w),$(q).jqGrid("setSelection",a[1][a[0]+1]),$(q).triggerHandler("jqGridAddEditAfterClickPgButtons",["next",$(w),a[1][a[0]]]),$.isFunction(b.afterclickPgButtons)&&b.afterclickPgButtons.call(q,"next",$(w),a[1][a[0]+1]),p(),m(a[0]+1,a)}return!1}),$("#pData",r).click(function(){if(!k())return!1;$(".FormError",w).hide();var a=n();if(-1!==a[0]&&a[1][a[0]-1]){$(q).triggerHandler("jqGridAddEditClickPgButtons",["prev",$(w),a[1][a[0]]]);var c;if($.isFunction(b.onclickPgButtons)&&(c=b.onclickPgButtons.call(q,"prev",$(w),a[1][a[0]]),void 0!==c&&c===!1))return!1;if($("#"+$.jgrid.jqID(a[1][a[0]-1])).hasClass(f.disabled))return!1;g(a[1][a[0]-1],q,w),$(q).jqGrid("setSelection",a[1][a[0]-1]),$(q).triggerHandler("jqGridAddEditAfterClickPgButtons",["prev",$(w),a[1][a[0]]]),$.isFunction(b.afterclickPgButtons)&&b.afterclickPgButtons.call(q,"prev",$(w),a[1][a[0]-1]),p(),m(a[0]-1,a)}return!1}),$(q).triggerHandler("jqGridAddEditAfterShowForm",[$(w),u]),$.isFunction(rp_ge[q.p.id].afterShowForm)&&rp_ge[q.p.id].afterShowForm.call(q,$(w),u);var W=n();m(W[0],W)}}})},viewGridRow:function(a,b){var c=$.jgrid.getRegional(this[0],"view"),d=this[0].p.styleUI,e=$.jgrid.styleUI[d].formedit,f=$.jgrid.styleUI[d].common;return b=$.extend(!0,{top:0,left:0,width:500,datawidth:"auto",height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,resize:!0,jqModal:!0,closeOnEscape:!1,labelswidth:"30%",closeicon:[],navkeys:[!1,38,40],onClose:null,beforeShowForm:null,beforeInitData:null,viewPagerButtons:!0,recreateForm:!1,removemodal:!0,form:"view"},c,b||{}),rp_ge[$(this)[0].p.id]=b,this.each(function(){function c(){(rp_ge[j.p.id].closeOnEscape===!0||rp_ge[j.p.id].navkeys[0]===!0)&&setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(p.modalhead)).attr("tabindex","-1").focus()},0)}function d(a,c,d,e){var g,h,i,j,k,l,m,n,o,p=0,q=[],r=!1,s="  ",t="",u="  ",v=["integer","number","currency"],w=0,x=0;for(l=1;e>=l;l++)t+=1===l?s:u;if($(c.p.colModel).each(function(){h=this.editrules&&this.editrules.edithidden===!0?!1:this.hidden===!0?!0:!1,h||"right"!==this.align||(this.formatter&&-1!==$.inArray(this.formatter,v)?w=Math.max(w,parseInt(this.width,10)):x=Math.max(x,parseInt(this.width,10)))}),m=0!==w?w:0!==x?x:0,r=$(c).jqGrid("getInd",a),$(c.p.colModel).each(function(a){if(g=this.name,n=!1,h=this.editrules&&this.editrules.edithidden===!0?!1:this.hidden===!0?!0:!1,k=h?"style='display:none'":"",o="boolean"!=typeof this.viewable?!0:this.viewable,"cb"!==g&&"subgrid"!==g&&"rn"!==g&&o){j=r===!1?"":g===c.p.ExpandColumn&&c.p.treeGrid===!0?$("td:eq("+a+")",c.rows[r]).text():$("td:eq("+a+")",c.rows[r]).html(),n="right"===this.align&&0!==m?!0:!1;var b=$.extend({},{rowabove:!1,rowcontent:""},this.formoptions||{}),f=parseInt(b.rowpos,10)||p+1,l=parseInt(2*(parseInt(b.colpos,10)||1),10);if(b.rowabove){var s=$(""+b.rowcontent+"");$(d).append(s),s[0].rp=f}i=$(d).find("tr[rowpos="+f+"]"),0===i.length&&(i=$("").addClass("FormData").attr("id","trv_"+g),$(i).append(t),$(d).append(i),i[0].rp=f),$("td:eq("+(l-2)+")",i[0]).html(""+(void 0===b.label?c.p.colNames[a]:b.label)+""),$("td:eq("+(l-1)+")",i[0]).append(""+j+"").attr("id","v_"+g),n&&$("td:eq("+(l-1)+") span",i[0]).css({"text-align":"right",width:m+"px"}),q[p]=a,p++}}),p>0){var y=$("");y[0].rp=p+99,$(d).append(y)}return q}function g(a,b){var c,d,e,f,g=0;f=$(b).jqGrid("getInd",a,!0),f&&($("td",f).each(function(a){c=b.p.colModel[a].name,d=b.p.colModel[a].editrules&&b.p.colModel[a].editrules.edithidden===!0?!1:b.p.colModel[a].hidden===!0?!0:!1,"cb"!==c&&"subgrid"!==c&&"rn"!==c&&(e=c===b.p.ExpandColumn&&b.p.treeGrid===!0?$(this).text():$(this).html(),c=$.jgrid.jqID("v_"+c),$("#"+c+" span","#"+m).html(e),d&&$("#"+c,"#"+m).parents("tr:first").hide(),g++)}),g>0&&$("#id_g","#"+m).val(a))}function h(a,b){var c=b[1].length-1;0===a?$("#pData","#"+m+"_2").addClass(f.disabled):void 0!==b[1][a-1]&&$("#"+$.jgrid.jqID(b[1][a-1])).hasClass(f.disabled)?$("#pData",m+"_2").addClass(f.disabled):$("#pData","#"+m+"_2").removeClass(f.disabled),a===c?$("#nData","#"+m+"_2").addClass(f.disabled):void 0!==b[1][a+1]&&$("#"+$.jgrid.jqID(b[1][a+1])).hasClass(f.disabled)?$("#nData",m+"_2").addClass(f.disabled):$("#nData","#"+m+"_2").removeClass(f.disabled)}function i(){var a=$(j).jqGrid("getDataIDs"),b=$("#id_g","#"+m).val(),c=$.inArray(b,a);return[c,a]}var j=this;if(j.grid&&a){var k=j.p.id,l="ViewGrid_"+$.jgrid.jqID(k),m="ViewTbl_"+$.jgrid.jqID(k),n="ViewGrid_"+k,o="ViewTbl_"+k,p={themodal:"viewmod"+k,modalhead:"viewhd"+k,modalcontent:"viewcnt"+k,scrollelm:l},q=$.isFunction(rp_ge[j.p.id].beforeInitData)?rp_ge[j.p.id].beforeInitData:!1,r=!0,s=1,t=0;rp_ge[j.p.id].styleUI=j.p.styleUI||"jQueryUI",b.recreateForm||$(j).data("viewProp")&&$.extend(rp_ge[$(this)[0].p.id],$(j).data("viewProp"));var u=isNaN(rp_ge[$(this)[0].p.id].dataheight)?rp_ge[$(this)[0].p.id].dataheight:rp_ge[$(this)[0].p.id].dataheight+"px",v=isNaN(rp_ge[$(this)[0].p.id].datawidth)?rp_ge[$(this)[0].p.id].datawidth:rp_ge[$(this)[0].p.id].datawidth+"px",w=$("
"),x=$("
");if($(j.p.colModel).each(function(){var a=this.formoptions;s=Math.max(s,a?a.colpos||0:0),t=Math.max(t,a?a.rowpos||0:0)}),$(w).append(x),q&&(r=q.call(j,w),void 0===r&&(r=!0)),r!==!1){d(a,j,x,s);var y="rtl"===j.p.direction?!0:!1,z=y?"nData":"pData",A=y?"pData":"nData",B="",C="",D=""+b.bClose+"";if(t>0){var E=[];$.each($(x)[0].rows,function(a,b){E[a]=b}),E.sort(function(a,b){return a.rp>b.rp?1:a.rp").append(w).append("
"+D+"
");$.jgrid.createModal(p,F,rp_ge[$(this)[0].p.id],"#gview_"+$.jgrid.jqID(j.p.id),$("#gview_"+$.jgrid.jqID(j.p.id))[0]),y&&($("#pData, #nData","#"+m+"_2").css("float","right"),$(".EditButton","#"+m+"_2").css("text-align","left")),b.viewPagerButtons||$("#pData, #nData","#"+m+"_2").hide(),F=null,$("#"+p.themodal).keydown(function(a){if(27===a.which)return rp_ge[j.p.id].closeOnEscape&&$.jgrid.hideModal("#"+$.jgrid.jqID(p.themodal),{gb:b.gbox,jqm:b.jqModal,onClose:b.onClose,removemodal:rp_ge[j.p.id].removemodal,formprop:!rp_ge[j.p.id].recreateForm,form:rp_ge[j.p.id].form}),!1;if(b.navkeys[0]===!0){if(a.which===b.navkeys[1])return $("#pData","#"+m+"_2").trigger("click"),!1;if(a.which===b.navkeys[2])return $("#nData","#"+m+"_2").trigger("click"),!1}}),b.closeicon=$.extend([!0,"left",e.icon_close],b.closeicon),b.closeicon[0]===!0&&$("#cData","#"+m+"_2").addClass("right"===b.closeicon[1]?"fm-button-icon-right":"fm-button-icon-left").append(""),$.isFunction(b.beforeShowForm)&&b.beforeShowForm.call(j,$("#"+l)),$.jgrid.viewModal("#"+$.jgrid.jqID(p.themodal),{gbox:"#gbox_"+$.jgrid.jqID(k),jqm:b.jqModal,overlay:b.overlay,modal:b.modal,onHide:function(a){$(j).data("viewProp",{top:parseFloat($(a.w).css("top")),left:parseFloat($(a.w).css("left")),width:$(a.w).width(),height:$(a.w).height(),dataheight:$("#"+l).height(),datawidth:$("#"+l).width()}),a.w.remove(),a.o&&a.o.remove()}}),$(".fm-button:not(."+f.disabled+")","#"+m+"_2").hover(function(){$(this).addClass(f.hover)},function(){$(this).removeClass(f.hover)}),c(),$("#cData","#"+m+"_2").click(function(){return $.jgrid.hideModal("#"+$.jgrid.jqID(p.themodal),{gb:"#gbox_"+$.jgrid.jqID(k),jqm:b.jqModal,onClose:b.onClose,removemodal:rp_ge[j.p.id].removemodal,formprop:!rp_ge[j.p.id].recreateForm,form:rp_ge[j.p.id].form}),!1}),$("#nData","#"+m+"_2").click(function(){$("#FormError","#"+m).hide();var a=i();return a[0]=parseInt(a[0],10),-1!==a[0]&&a[1][a[0]+1]&&($.isFunction(b.onclickPgButtons)&&b.onclickPgButtons.call(j,"next",$("#"+l),a[1][a[0]]),g(a[1][a[0]+1],j),$(j).jqGrid("setSelection",a[1][a[0]+1]),$.isFunction(b.afterclickPgButtons)&&b.afterclickPgButtons.call(j,"next",$("#"+l),a[1][a[0]+1]),h(a[0]+1,a)),c(),!1}),$("#pData","#"+m+"_2").click(function(){$("#FormError","#"+m).hide();var a=i();return-1!==a[0]&&a[1][a[0]-1]&&($.isFunction(b.onclickPgButtons)&&b.onclickPgButtons.call(j,"prev",$("#"+l),a[1][a[0]]),g(a[1][a[0]-1],j),$(j).jqGrid("setSelection",a[1][a[0]-1]),$.isFunction(b.afterclickPgButtons)&&b.afterclickPgButtons.call(j,"prev",$("#"+l),a[1][a[0]-1]),h(a[0]-1,a)),c(),!1});var G=i();h(G[0],G)}}})},delGridRow:function(a,b){var c=$.jgrid.getRegional(this[0],"del"),d=this[0].p.styleUI,e=$.jgrid.styleUI[d].formedit,f=$.jgrid.styleUI[d].common;return b=$.extend(!0,{top:0,left:0,width:240,height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,resize:!0,url:"",mtype:"POST",reloadAfterSubmit:!0,beforeShowForm:null,beforeInitData:null,afterShowForm:null,beforeSubmit:null,onclickSubmit:null,afterSubmit:null,jqModal:!0,closeOnEscape:!1,delData:{},delicon:[],cancelicon:[],onClose:null,ajaxDelOptions:{},processing:!1,serializeDelData:null,useDataProxy:!1},c,b||{}),rp_ge[$(this)[0].p.id]=b,this.each(function(){var c=this;if(c.grid&&a){var d,g,h,i,j=$.isFunction(rp_ge[c.p.id].beforeShowForm),k=$.isFunction(rp_ge[c.p.id].afterShowForm),l=$.isFunction(rp_ge[c.p.id].beforeInitData)?rp_ge[c.p.id].beforeInitData:!1,m=c.p.id,n={},o=!0,p="DelTbl_"+$.jgrid.jqID(m),q="DelTbl_"+m,r={themodal:"delmod"+m,modalhead:"delhd"+m,modalcontent:"delcnt"+m,scrollelm:p};if(rp_ge[c.p.id].styleUI=c.p.styleUI||"jQueryUI",$.isArray(a)&&(a=a.join()),void 0!==$("#"+$.jgrid.jqID(r.themodal))[0]){if(l&&(o=l.call(c,$("#"+p)),void 0===o&&(o=!0)),o===!1)return;$("#DelData>td","#"+p).text(a),$("#DelError","#"+p).hide(),rp_ge[c.p.id].processing===!0&&(rp_ge[c.p.id].processing=!1,$("#dData","#"+p).removeClass(f.active)),j&&rp_ge[c.p.id].beforeShowForm.call(c,$("#"+p)),$.jgrid.viewModal("#"+$.jgrid.jqID(r.themodal),{gbox:"#gbox_"+$.jgrid.jqID(m),jqm:rp_ge[c.p.id].jqModal,jqM:!1,overlay:rp_ge[c.p.id].overlay,modal:rp_ge[c.p.id].modal}),k&&rp_ge[c.p.id].afterShowForm.call(c,$("#"+p))}else{var s=isNaN(rp_ge[c.p.id].dataheight)?rp_ge[c.p.id].dataheight:rp_ge[c.p.id].dataheight+"px",t=isNaN(b.datawidth)?b.datawidth:b.datawidth+"px",u="
";u+="",u+="",u+="",u+='",u+="
'+rp_ge[c.p.id].msg+"
 
";var v=""+b.bSubmit+"",w=""+b.bCancel+"";if(u+="

"+v+" "+w+"
",b.gbox="#gbox_"+$.jgrid.jqID(m),$.jgrid.createModal(r,u,rp_ge[c.p.id],"#gview_"+$.jgrid.jqID(c.p.id),$("#gview_"+$.jgrid.jqID(c.p.id))[0]),l&&(o=l.call(c,$(u)),void 0===o&&(o=!0)),o===!1)return;$(".fm-button","#"+p+"_2").hover(function(){$(this).addClass(f.hover)},function(){$(this).removeClass(f.hover)}),b.delicon=$.extend([!0,"left",e.icon_del],rp_ge[c.p.id].delicon),b.cancelicon=$.extend([!0,"left",e.icon_cancel],rp_ge[c.p.id].cancelicon),b.delicon[0]===!0&&$("#dData","#"+p+"_2").addClass("right"===b.delicon[1]?"fm-button-icon-right":"fm-button-icon-left").append(""),b.cancelicon[0]===!0&&$("#eData","#"+p+"_2").addClass("right"===b.cancelicon[1]?"fm-button-icon-right":"fm-button-icon-left").append(""),$("#dData","#"+p+"_2").click(function(){var a,e=[!0,""],j=$("#DelData>td","#"+p).text();if(n={},$.isFunction(rp_ge[c.p.id].onclickSubmit)&&(n=rp_ge[c.p.id].onclickSubmit.call(c,rp_ge[c.p.id],j)||{}),$.isFunction(rp_ge[c.p.id].beforeSubmit)&&(e=rp_ge[c.p.id].beforeSubmit.call(c,j)),e[0]&&!rp_ge[c.p.id].processing){if(rp_ge[c.p.id].processing=!0,h=c.p.prmNames,d=$.extend({},rp_ge[c.p.id].delData,n),i=h.oper,d[i]=h.deloper,g=h.id,j=String(j).split(","),!j.length)return!1;for(a in j)j.hasOwnProperty(a)&&(j[a]=$.jgrid.stripPref(c.p.idPrefix,j[a]));d[g]=j.join(),$(this).addClass(f.active);var k=$.extend({url:rp_ge[c.p.id].url||$(c).jqGrid("getGridParam","editurl"),type:rp_ge[c.p.id].mtype,data:$.isFunction(rp_ge[c.p.id].serializeDelData)?rp_ge[c.p.id].serializeDelData.call(c,d):d,complete:function(a,g){var h;if($("#dData","#"+p+"_2").removeClass(f.active),a.status>=300&&304!==a.status?(e[0]=!1,$.isFunction(rp_ge[c.p.id].errorTextFormat)?e[1]=rp_ge[c.p.id].errorTextFormat.call(c,a):e[1]=g+" Status: '"+a.statusText+"'. Error code: "+a.status):$.isFunction(rp_ge[c.p.id].afterSubmit)&&(e=rp_ge[c.p.id].afterSubmit.call(c,a,d)),e[0]===!1)$("#DelError>td","#"+p).html(e[1]),$("#DelError","#"+p).show();else{if(rp_ge[c.p.id].reloadAfterSubmit&&"local"!==c.p.datatype)$(c).trigger("reloadGrid");else{if(c.p.treeGrid===!0)try{$(c).jqGrid("delTreeNode",c.p.idPrefix+j[0])}catch(i){}else for(h=0;htd","#"+p).html(e[1]),$("#DelError","#"+p).show()),!1}),$("#eData","#"+p+"_2").click(function(){return $.jgrid.hideModal("#"+$.jgrid.jqID(r.themodal),{gb:"#gbox_"+$.jgrid.jqID(m),jqm:rp_ge[c.p.id].jqModal,onClose:rp_ge[c.p.id].onClose}),!1}),j&&rp_ge[c.p.id].beforeShowForm.call(c,$("#"+p)),$.jgrid.viewModal("#"+$.jgrid.jqID(r.themodal),{gbox:"#gbox_"+$.jgrid.jqID(m),jqm:rp_ge[c.p.id].jqModal,overlay:rp_ge[c.p.id].overlay,modal:rp_ge[c.p.id].modal}),k&&rp_ge[c.p.id].afterShowForm.call(c,$("#"+p))}rp_ge[c.p.id].closeOnEscape===!0&&setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(r.modalhead)).attr("tabindex","-1").focus()},0)}})},navGrid:function(a,b,c,d,e,f,g){var h=$.jgrid.getRegional(this[0],"nav"),i=this[0].p.styleUI,j=$.jgrid.styleUI[i].navigator,k=$.jgrid.styleUI[i].common;return b=$.extend({edit:!0,editicon:j.icon_edit_nav,add:!0,addicon:j.icon_add_nav,del:!0,delicon:j.icon_del_nav,search:!0,searchicon:j.icon_search_nav,refresh:!0,refreshicon:j.icon_refresh_nav,refreshstate:"firstpage",view:!1,viewicon:j.icon_view_nav,position:"left",closeOnEscape:!0,beforeRefresh:null,afterRefresh:null,cloneToTop:!1,alertwidth:200,alertheight:"auto",alerttop:null,alertleft:null,alertzIndex:null,dropmenu:!1,navButtonText:""},h,b||{}),this.each(function(){if(!this.p.navGrid){var j,l,m,n={themodal:"alertmod_"+this.p.id,modalhead:"alerthd_"+this.p.id,modalcontent:"alertcnt_"+this.p.id},o=this;if(o.grid&&"string"==typeof a){$(o).data("navGrid")||$(o).data("navGrid",b),m=$(o).data("navGrid"),o.p.force_regional&&(m=$.extend(m,h)),void 0===$("#"+n.themodal)[0]&&(m.alerttop||m.alertleft||(void 0!==window.innerWidth?(m.alertleft=window.innerWidth,m.alerttop=window.innerHeight):void 0!==document.documentElement&&void 0!==document.documentElement.clientWidth&&0!==document.documentElement.clientWidth?(m.alertleft=document.documentElement.clientWidth,m.alerttop=document.documentElement.clientHeight):(m.alertleft=1024,m.alerttop=768),m.alertleft=m.alertleft/2-parseInt(m.alertwidth,10)/2,m.alerttop=m.alerttop/2-25),$.jgrid.createModal(n,"
"+m.alerttext+"
",{gbox:"#gbox_"+$.jgrid.jqID(o.p.id),jqModal:!0,drag:!0,resize:!0,caption:m.alertcap,top:m.alerttop,left:m.alertleft,width:m.alertwidth,height:m.alertheight,closeOnEscape:m.closeOnEscape,zIndex:m.alertzIndex,styleUI:o.p.styleUI},"#gview_"+$.jgrid.jqID(o.p.id),$("#gbox_"+$.jgrid.jqID(o.p.id))[0],!0));var p,q=1,r=function(){$(this).hasClass(k.disabled)||$(this).addClass(k.hover)},s=function(){$(this).removeClass(k.hover)};for(m.cloneToTop&&o.p.toppager&&(q=2),p=0;q>p;p++){var t,u,v,w=$(""),x="";0===p?(u=a,v=o.p.id,u===o.p.toppager&&(v+="_top",q=1)):(u=o.p.toppager,v=o.p.id+"_top"),"rtl"===o.p.direction&&$(w).attr("dir","rtl").css("float","right"),d=d||{},m.add&&(t=$(""),$(t).append("
"+m.addtext+"
"),$("tr",w).append(t),$(t,w).attr({title:m.addtitle||"",id:d.id||"add_"+v}).click(function(){return $(this).hasClass(k.disabled)||($.isFunction(m.addfunc)?m.addfunc.call(o):$(o).jqGrid("editGridRow","new",d)),!1}).hover(r,s),t=null),c=c||{},m.edit&&(t=$(""),$(t).append("
"+m.edittext+"
"),$("tr",w).append(t),$(t,w).attr({title:m.edittitle||"",id:c.id||"edit_"+v}).click(function(){if(!$(this).hasClass(k.disabled)){var a=o.p.selrow;a?$.isFunction(m.editfunc)?m.editfunc.call(o,a):$(o).jqGrid("editGridRow",a,c):($.jgrid.viewModal("#"+n.themodal,{gbox:"#gbox_"+$.jgrid.jqID(o.p.id),jqm:!0}),$("#jqg_alrt").focus())}return!1}).hover(r,s),t=null),g=g||{},m.view&&(t=$(""),$(t).append("
"+m.viewtext+"
"),$("tr",w).append(t),$(t,w).attr({title:m.viewtitle||"",id:g.id||"view_"+v}).click(function(){if(!$(this).hasClass(k.disabled)){var a=o.p.selrow;a?$.isFunction(m.viewfunc)?m.viewfunc.call(o,a):$(o).jqGrid("viewGridRow",a,g):($.jgrid.viewModal("#"+n.themodal,{gbox:"#gbox_"+$.jgrid.jqID(o.p.id),jqm:!0}),$("#jqg_alrt").focus())}return!1}).hover(r,s),t=null),e=e||{},m.del&&(t=$(""),$(t).append("
"+m.deltext+"
"),$("tr",w).append(t),$(t,w).attr({title:m.deltitle||"",id:e.id||"del_"+v}).click(function(){if(!$(this).hasClass(k.disabled)){var a;o.p.multiselect?(a=o.p.selarrrow,0===a.length&&(a=null)):a=o.p.selrow,a?$.isFunction(m.delfunc)?m.delfunc.call(o,a):$(o).jqGrid("delGridRow",a,e):($.jgrid.viewModal("#"+n.themodal,{gbox:"#gbox_"+$.jgrid.jqID(o.p.id),jqm:!0}),$("#jqg_alrt").focus())}return!1}).hover(r,s),t=null),(m.add||m.edit||m.del||m.view)&&$("tr",w).append(x),f=f||{},m.search&&(t=$(""),$(t).append("
"+m.searchtext+"
"),$("tr",w).append(t),$(t,w).attr({title:m.searchtitle||"",id:f.id||"search_"+v}).click(function(){return $(this).hasClass(k.disabled)||($.isFunction(m.searchfunc)?m.searchfunc.call(o,f):$(o).jqGrid("searchGrid",f)),!1}).hover(r,s),f.showOnLoad&&f.showOnLoad===!0&&$(t,w).click(),t=null),m.refresh&&(t=$(""),$(t).append("
"+m.refreshtext+"
"),$("tr",w).append(t),$(t,w).attr({title:m.refreshtitle||"",id:"refresh_"+v}).click(function(){if(!$(this).hasClass(k.disabled)){$.isFunction(m.beforeRefresh)&&m.beforeRefresh.call(o),o.p.search=!1,o.p.resetsearch=!0;try{if("currentfilter"!==m.refreshstate){var a=o.p.id;o.p.postData.filters="";try{$("#fbox_"+$.jgrid.jqID(a)).jqFilter("resetFilter")}catch(b){}$.isFunction(o.clearToolbar)&&o.clearToolbar.call(o,!1)}}catch(c){}switch(m.refreshstate){case"firstpage":$(o).trigger("reloadGrid",[{page:1}]);break;case"current":case"currentfilter":$(o).trigger("reloadGrid",[{current:!0}])}$.isFunction(m.afterRefresh)&&m.afterRefresh.call(o)}return!1}).hover(r,s),t=null),l=$(".ui-jqgrid").css("font-size")||"11px",$("body").append(""),j=$(w).clone().appendTo("#testpg2").width(),$("#testpg2").remove(),o.p._nvtd&&(m.dropmenu?(w=null,$(o).jqGrid("_buildNavMenu",u,v,b,c,d,e,f,g)):j>o.p._nvtd[0]?(o.p.responsive?(w=null,$(o).jqGrid("_buildNavMenu",u,v,b,c,d,e,f,g)):$(u+"_"+m.position,u).append(w).width(j),o.p._nvtd[0]=j):$(u+"_"+m.position,u).append(w),o.p._nvtd[1]=j),o.p.navGrid=!0}o.p.storeNavOptions&&(o.p.navOptions=m,o.p.editOptions=c,o.p.addOptions=d,o.p.delOptions=e,o.p.searchOptions=f,o.p.viewOptions=g,o.p.navButtons=[])}}})},navButtonAdd:function(a,b){var c=this[0].p.styleUI,d=$.jgrid.styleUI[c].navigator;return b=$.extend({caption:"newButton",title:"",buttonicon:d.icon_newbutton_nav,onClickButton:null,position:"last",cursor:"pointer",internal:!1},b||{}),this.each(function(){if(this.grid){"string"==typeof a&&0!==a.indexOf("#")&&(a="#"+$.jgrid.jqID(a));var d=$(".navtable",a)[0],e=this,f=$.jgrid.styleUI[c].common.disabled,g=$.jgrid.styleUI[c].common.hover,h=$.jgrid.styleUI[c].common.cornerall,i=$.jgrid.styleUI[c].common.icon_base;if(e.p.storeNavOptions&&!b.internal&&e.p.navButtons.push([a,b]), +d){if(b.id&&void 0!==$("#"+$.jgrid.jqID(b.id),d)[0])return;var j=$("");"NONE"===b.buttonicon.toString().toUpperCase()?$(j).addClass("ui-pg-button "+h).append("
"+b.caption+"
"):$(j).addClass("ui-pg-button "+h).append("
"+b.caption+"
"),b.id&&$(j).attr("id",b.id),"first"===b.position?0===d.rows[0].cells.length?$("tr",d).append(j):$("tr td:eq(0)",d).before(j):$("tr",d).append(j),$(j,d).attr("title",b.title||"").click(function(a){return $(this).hasClass(f)||$.isFunction(b.onClickButton)&&b.onClickButton.call(e,a),!1}).hover(function(){$(this).hasClass(f)||$(this).addClass(g)},function(){$(this).removeClass(g)})}else if(d=$(".dropdownmenu",a)[0]){var k=$(d).val(),l=b.id||$.jgrid.randId(),m=$('");k&&("first"===b.position?$("#"+k).prepend(m):$("#"+k).append(m),$(m).on("click",function(a){return $(this).hasClass(f)||($("#"+k).hide(),$.isFunction(b.onClickButton)&&b.onClickButton.call(e,a)),!1}).find("a").hover(function(){$(this).hasClass(f)||$(this).addClass(g)},function(){$(this).removeClass(g)}))}}})},navSeparatorAdd:function(a,b){var c=this[0].p.styleUI,d=$.jgrid.styleUI[c].common;return b=$.extend({sepclass:"ui-separator",sepcontent:"",position:"last"},b||{}),this.each(function(){if(this.grid){"string"==typeof a&&0!==a.indexOf("#")&&(a="#"+$.jgrid.jqID(a));var c,e,f=$(".navtable",a)[0];this.p.storeNavOptions&&this.p.navButtons.push([a,b]),f?(c=""+b.sepcontent+"","first"===b.position?0===f.rows[0].cells.length?$("tr",f).append(c):$("tr td:eq(0)",f).before(c):$("tr",f).append(c)):(f=$(".dropdownmenu",a)[0],c="",f&&(e=$(f).val(),e&&("first"===b.position?$("#"+e).prepend(c):$("#"+e).append(c))))}})},_buildNavMenu:function(a,b,c,d,e,f,g,h){return this.each(function(){var i=this,j=$.jgrid.getRegional(i,"nav"),k=i.p.styleUI,l=($.jgrid.styleUI[k].navigator,$.jgrid.styleUI[k].filter),m=$.jgrid.styleUI[k].common,n="form_menu_"+$.jgrid.randId(),o=c.navButtonText?c.navButtonText:j.selectcaption||"Actions",p="";$(a+"_"+c.position,a).append(p);var q={themodal:"alertmod_"+this.p.id,modalhead:"alerthd_"+this.p.id,modalcontent:"alertcnt_"+this.p.id},r=function(){var a,j,k=$(".ui-jqgrid-view").css("font-size")||"11px",o=$('');c.add&&(e=e||{},a=e.id||"add_"+b,j=$('").click(function(){return $(this).hasClass(m.disabled)||($.isFunction(c.addfunc)?c.addfunc.call(i):$(i).jqGrid("editGridRow","new",e),$(o).hide()),!1}),$(o).append(j)),c.edit&&(d=d||{},a=d.id||"edit_"+b,j=$('").click(function(){if(!$(this).hasClass(m.disabled)){var a=i.p.selrow;a?$.isFunction(c.editfunc)?c.editfunc.call(i,a):$(i).jqGrid("editGridRow",a,d):($.jgrid.viewModal("#"+q.themodal,{gbox:"#gbox_"+$.jgrid.jqID(i.p.id),jqm:!0}),$("#jqg_alrt").focus()),$(o).hide()}return!1}),$(o).append(j)),c.view&&(h=h||{},a=h.id||"view_"+b,j=$('").click(function(){if(!$(this).hasClass(m.disabled)){var a=i.p.selrow;a?$.isFunction(c.editfunc)?c.viewfunc.call(i,a):$(i).jqGrid("viewGridRow",a,h):($.jgrid.viewModal("#"+q.themodal,{gbox:"#gbox_"+$.jgrid.jqID(i.p.id),jqm:!0}),$("#jqg_alrt").focus()),$(o).hide()}return!1}),$(o).append(j)),c.del&&(f=f||{},a=f.id||"del_"+b,j=$('").click(function(){if(!$(this).hasClass(m.disabled)){var a;i.p.multiselect?(a=i.p.selarrrow,0===a.length&&(a=null)):a=i.p.selrow,a?$.isFunction(c.delfunc)?c.delfunc.call(i,a):$(i).jqGrid("delGridRow",a,f):($.jgrid.viewModal("#"+q.themodal,{gbox:"#gbox_"+$.jgrid.jqID(i.p.id),jqm:!0}),$("#jqg_alrt").focus()),$(o).hide()}return!1}),$(o).append(j)),(c.add||c.edit||c.del||c.view)&&$(o).append(""),c.search&&(g=g||{},a=g.id||"search_"+b,j=$('").click(function(){return $(this).hasClass(m.disabled)||($.isFunction(c.searchfunc)?c.searchfunc.call(i,g):$(i).jqGrid("searchGrid",g),$(o).hide()),!1}),$(o).append(j),g.showOnLoad&&g.showOnLoad===!0&&$(j).click()),c.refresh&&(a=g.id||"search_"+b,j=$('").click(function(){if(!$(this).hasClass(m.disabled)){$.isFunction(c.beforeRefresh)&&c.beforeRefresh.call(i),i.p.search=!1,i.p.resetsearch=!0;try{if("currentfilter"!==c.refreshstate){var a=i.p.id;i.p.postData.filters="";try{$("#fbox_"+$.jgrid.jqID(a)).jqFilter("resetFilter")}catch(b){}$.isFunction(i.clearToolbar)&&i.clearToolbar.call(i,!1)}}catch(d){}switch(c.refreshstate){case"firstpage":$(i).trigger("reloadGrid",[{page:1}]);break;case"current":case"currentfilter":$(i).trigger("reloadGrid",[{current:!0}])}$.isFunction(c.afterRefresh)&&c.afterRefresh.call(i),$(o).hide()}return!1}),$(o).append(j)),$(o).hide(),$("body").append(o),$("#"+n).addClass("ui-menu "+l.menu_widget),$("#"+n+" > li > a").hover(function(){$(this).addClass(m.hover)},function(){$(this).removeClass(m.hover)})};r(),$(".dropdownmenu",a+"_"+c.position).on("click",function(a){var b=$(this).offset(),c=b.left,d=parseInt(b.top),e=$(this).val();$("#"+e).show().css({top:d-($("#"+e).height()+10)+"px",left:c+"px"}),a.stopPropagation()}),$("body").on("click",function(a){$(a.target).hasClass("dropdownmenu")||$("#"+n).hide()})})},GridToForm:function(a,b){return this.each(function(){var c,d=this;if(d.grid){var e=$(d).jqGrid("getRowData",a);if(e)for(c in e)e.hasOwnProperty(c)&&($("[name="+$.jgrid.jqID(c)+"]",b).is("input:radio")||$("[name="+$.jgrid.jqID(c)+"]",b).is("input:checkbox")?$("[name="+$.jgrid.jqID(c)+"]",b).each(function(){$(this).val()==e[c]?$(this)[d.p.useProp?"prop":"attr"]("checked",!0):$(this)[d.p.useProp?"prop":"attr"]("checked",!1)}):$("[name="+$.jgrid.jqID(c)+"]",b).val(e[c]))}})},FormToGrid:function(a,b,c,d){return this.each(function(){var e=this;if(e.grid){c||(c="set"),d||(d="first");var f=$(b).serializeArray(),g={};$.each(f,function(a,b){g[b.name]=b.value}),"add"===c?$(e).jqGrid("addRowData",a,g,d):"set"===c&&$(e).jqGrid("setRowData",a,g)}})}}),$.jgrid.extend({groupingSetup:function(){return this.each(function(){var a,b,c,d=this,e=d.p.colModel,f=d.p.groupingView,g=$.jgrid.styleUI[d.p.styleUI||"jQueryUI"].grouping;if(null===f||"object"!=typeof f&&!$.isFunction(f))d.p.grouping=!1;else if(f.plusicon||(f.plusicon=g.icon_plus),f.minusicon||(f.minusicon=g.icon_minus),f.groupField.length){for(void 0===f.visibiltyOnNextGrouping&&(f.visibiltyOnNextGrouping=[]),f.lastvalues=[],f._locgr||(f.groups=[]),f.counters=[],a=0;ab;b++)f.hideFirstGroupCol&&(e[b].hidden||f.groupField[0]!==e[b].name||(e[b].formatter=function(){return""})),e[b].summaryType&&(e[b].summaryDivider?f.summary.push({nm:e[b].name,st:e[b].summaryType,v:"",sd:e[b].summaryDivider,vd:"",sr:e[b].summaryRound,srt:e[b].summaryRoundType||"round"}):f.summary.push({nm:e[b].name,st:e[b].summaryType,v:"",sr:e[b].summaryRound,srt:e[b].summaryRoundType||"round"}))}else d.p.grouping=!1})},groupingPrepare:function(a,b){return this.each(function(){var c,d,e,f,g,h=this.p.groupingView,i=this,j=function(){$.isFunction(this.st)?this.v=this.st.call(i,this.v,this.nm,a):(this.v=$(i).jqGrid("groupingCalculations.handler",this.st,this.v,this.nm,this.sr,this.srt,a),"avg"===this.st.toLowerCase()&&this.sd&&(this.vd=$(i).jqGrid("groupingCalculations.handler",this.st,this.vd,this.sd,this.sr,this.srt,a)))},k=h.groupField.length,l=0;for(c=0;k>c;c++)d=h.groupField[c],f=h.displayField[c],e=a[d],g=null==f?null:a[f],null==g&&(g=e),void 0!==e&&(0===b?(h.groups.push({idx:c,dataIndex:d,value:e,displayValue:g,startRow:b,cnt:1,summary:[]}),h.lastvalues[c]=e,h.counters[c]={cnt:1,pos:h.groups.length-1,summary:$.extend(!0,[],h.summary)},$.each(h.counters[c].summary,j),h.groups[h.counters[c].pos].summary=h.counters[c].summary):"object"==typeof e||($.isArray(h.isInTheSameGroup)&&$.isFunction(h.isInTheSameGroup[c])?h.isInTheSameGroup[c].call(i,h.lastvalues[c],e,c,h):h.lastvalues[c]===e)?1===l?(h.groups.push({idx:c,dataIndex:d,value:e,displayValue:g,startRow:b,cnt:1,summary:[]}),h.lastvalues[c]=e,h.counters[c]={cnt:1,pos:h.groups.length-1,summary:$.extend(!0,[],h.summary)},$.each(h.counters[c].summary,j),h.groups[h.counters[c].pos].summary=h.counters[c].summary):(h.counters[c].cnt+=1,h.groups[h.counters[c].pos].cnt=h.counters[c].cnt,$.each(h.counters[c].summary,j),h.groups[h.counters[c].pos].summary=h.counters[c].summary):(h.groups.push({idx:c,dataIndex:d,value:e,displayValue:g,startRow:b,cnt:1,summary:[]}),h.lastvalues[c]=e,l=1,h.counters[c]={cnt:1,pos:h.groups.length-1,summary:$.extend(!0,[],h.summary)},$.each(h.counters[c].summary,j),h.groups[h.counters[c].pos].summary=h.counters[c].summary))}),this},groupingToggle:function(a){return this.each(function(){var b=this,c=b.p.groupingView,d=a.split("_"),e=parseInt(d[d.length-2],10);d.splice(d.length-2,2);var f,g,h=d.join("_"),i=c.minusicon,j=c.plusicon,k=$("#"+$.jgrid.jqID(a)),l=k.length?k[0].nextSibling:null,m=$("#"+$.jgrid.jqID(a)+" span.tree-wrap-"+b.p.direction),n=function(a){var b=$.map(a.split(" "),function(a){return a.substring(0,h.length+1)===h+"_"?parseInt(a.substring(h.length+1),10):void 0});return b.length>0?b[0]:void 0},o=!1,p=!1,q=b.p.frozenColumns?b.p.id+"_frozen":!1,r=q?$("#"+$.jgrid.jqID(a),"#"+$.jgrid.jqID(q)):!1,s=r&&r.length?r[0].nextSibling:null;if(m.hasClass(i)){if(c.showSummaryOnHide){if(l)for(;l&&(f=n(l.className),!(void 0!==f&&e>=f));)$(l).hide(),l=l.nextSibling,q&&($(s).hide(),s=s.nextSibling)}else if(l)for(;l&&(f=n(l.className),!(void 0!==f&&e>=f));)$(l).hide(),l=l.nextSibling,q&&($(s).hide(),s=s.nextSibling);m.removeClass(i).addClass(j),o=!0}else{if(l)for(g=void 0;l;){if(f=n(l.className),void 0===g&&(g=void 0===f),p=$(l).hasClass("ui-subgrid")&&$(l).hasClass("ui-sg-collapsed"),void 0!==f){if(e>=f)break;f===e+1&&(p||($(l).show().find(">td>span.tree-wrap-"+b.p.direction).removeClass(i).addClass(j),q&&$(s).show().find(">td>span.tree-wrap-"+b.p.direction).removeClass(i).addClass(j)))}else g&&(p||($(l).show(),q&&$(s).show()));l=l.nextSibling,q&&(s=s.nextSibling)}m.removeClass(j).addClass(i)}$(b).triggerHandler("jqGridGroupingClickGroup",[a,o]),$.isFunction(b.p.onClickGroup)&&b.p.onClickGroup.call(b,a,o)}),!1},groupingRender:function(a,b,c,d){return this.each(function(){function e(a,b,c){var d,e=!1;if(0===b)e=c[a];else{var f=c[a].idx;if(0===f)e=c[a];else for(d=a;d>=0;d--)if(c[d].idx===f-b){e=c[d];break}}return e}function f(a,c,d,f){var g,h,i=e(a,c,d),k=j.p.colModel,l=i.cnt,m="";for(h=f;b>h;h++){var n=" ",o="{0}";$.each(i.summary,function(){if(this.nm===k[h].name){k[h].summaryTpl&&(o=k[h].summaryTpl),"string"==typeof this.st&&"avg"===this.st.toLowerCase()&&(this.sd&&this.vd?this.v=this.v/this.vd:this.v&&l>0&&(this.v=this.v/l));try{this.groupCount=i.cnt,this.groupIndex=i.dataIndex,this.groupValue=i.value,g=j.formatter("",this.v,h,this)}catch(a){g=this.v}return n=""+$.jgrid.template(o,g)+"",!1}}),m+=n}return m}var g,h,i,j=this,k=j.p.groupingView,l="",m="",n=k.groupCollapse?k.plusicon:k.minusicon,o=[],p=k.groupField.length,q=$.jgrid.styleUI[j.p.styleUI||"jQueryUI"].common;n=n+" tree-wrap-"+j.p.direction,$.each(j.p.colModel,function(a,b){var c;for(c=0;p>c;c++)if(k.groupField[c]===b.name){o[c]=a;break}});var r,s=0,t=$.makeArray(k.groupSummary);t.reverse(),r=j.p.multiselect?' colspan="2"':"",$.each(k.groups,function(e,u){if(k._locgr&&!(u.startRow+u.cnt>(c-1)*d&&u.startRow";try{$.isArray(k.formatDisplayField)&&$.isFunction(k.formatDisplayField[u.idx])?(u.displayValue=k.formatDisplayField[u.idx].call(j,u.displayValue,u.value,j.p.colModel[o[u.idx]],u.idx,k),i=u.displayValue):i=j.formatter(g,u.displayValue,o[u.idx],u.value)}catch(v){i=u.displayValue}var w="";w=$.isFunction(k.groupText[u.idx])?k.groupText[u.idx].call(j,i,u.cnt,u.summary):$.jgrid.template(k.groupText[u.idx],i,u.cnt,u.summary),"string"!=typeof w&&"number"!=typeof w&&(w=i),"header"===k.groupSummaryPos[u.idx]?(l+='0?' style="display:none;" ':" ")+'role="row" class= "'+q.content+" jqgroup ui-row-"+j.p.direction+" "+h+'">"+m+w+"",l+=f(e,0,k.groups,k.groupColumnShow[u.idx]===!1?""===r?2:3:""===r?1:2),l+=""):l+='0?' style="display:none;" ':" ")+'role="row" class= "'+q.content+" jqgroup ui-row-"+j.p.direction+" "+h+'">'+m+w+"";var x=p-1===u.idx;if(x){var y,z,A=k.groups[e+1],B=0,C=u.startRow,D=void 0!==A?A.startRow:k.groups[e].startRow+k.groups[e].cnt;for(k._locgr&&(B=(c-1)*d,B>u.startRow&&(C=B)),y=C;D>y&&a[y-B];y++)l+=a[y-B].join("");if("header"!==k.groupSummaryPos[u.idx]){var E;if(void 0!==A){for(E=0;Ez;z++)if(t[z]){var F="";k.groupCollapse&&!k.showSummaryOnHide&&(F=' style="display:none;"'),l+="',l+=f(e,z,k.groups,0),l+=""}s=E}}}),$("#"+$.jgrid.jqID(j.p.id)+" tbody:first").append(l),l=null})},groupingGroupBy:function(a,b){return this.each(function(){var c=this;"string"==typeof a&&(a=[a]);var d=c.p.groupingView;c.p.grouping=!0,d._locgr=!1,void 0===d.visibiltyOnNextGrouping&&(d.visibiltyOnNextGrouping=[]);var e;for(e=0;e",{role:"row","aria-hidden":"true"}).addClass("jqg-first-row-header").css("height","auto"):x.empty();var z,A=function(a,b){var c,d=b.length;for(c=0;d>c;c++)if(b[c].startColumnName===a)return c;return-1};for($(p).prepend(w),d=$("",{role:"row"}).addClass("ui-jqgrid-labels jqg-third-row-header"),b=0;s>b;b++)if(f=t[b].el,g=$(f),c=r[b],h={height:"0px",width:t[b].width+"px",display:c.hidden?"none":""},$("",{role:"gridcell"}).css(h).addClass("ui-first-th-"+p.p.direction).appendTo(x),f.style.width="",i=A(c.name,a.groupHeaders),i>=0){for(j=a.groupHeaders[i],k=j.numberOfColumns,l=j.titleText,n=j.className||"",m=0,i=0;k>i&&s>b+i;i++)r[b+i].hidden||m++;e=$("").attr({role:"columnheader"}).addClass(y.headerBox+" ui-th-column-header ui-th-"+p.p.direction+" "+n).html(l),m>0&&e.attr("colspan",String(m)),p.p.headertitles&&e.attr("title",e.text()),0===m&&e.hide(),g.before(e),d.append(f),q=k-1}else 0===q?a.useColSpanStyle?g.attr("rowspan","2"):($("",{role:"columnheader"}).addClass(y.headerBox+" ui-th-column-header ui-th-"+p.p.direction).css({display:c.hidden?"none":""}).insertBefore(g),d.append(f)):(d.append(f),q--);o=$(p).children("thead"),o.prepend(x),d.insertAfter(v),u.append(o),a.useColSpanStyle&&(u.find("span.ui-jqgrid-resize").each(function(){var a=$(this).parent();a.is(":visible")&&(this.style.cssText="height: "+a.height()+"px !important; cursor: col-resize;")}),u.find("div.ui-jqgrid-sortable").each(function(){var a=$(this),b=a.parent();b.is(":visible")&&b.is(":has(span.ui-jqgrid-resize)")&&a.css("top",(b.height()-a.outerHeight())/2-4+"px")})),z=o.find("tr.jqg-first-row-header"),$(p).bind("jqGridResizeStop.setGroupHeaders",function(a,b,c){z.find("th").eq(c)[0].style.width=b+"px"})})},destroyGroupHeader:function(a){return void 0===a&&(a=!0),this.each(function(){var b,c,d,e,f,g,h,i=this,j=i.grid,k=$("table.ui-jqgrid-htable thead",j.hDiv),l=i.p.colModel;if(j){for($(this).unbind(".setGroupHeaders"),b=$("",{role:"row"}).addClass("ui-jqgrid-labels"),e=j.headers,c=0,d=e.length;d>c;c++){h=l[c].hidden?"none":"",f=$(e[c].el).width(e[c].width).css("display",h);try{f.removeAttr("rowSpan")}catch(m){f.attr("rowSpan",1)}b.append(f),g=f.children("span.ui-jqgrid-resize"),g.length>0&&(g[0].style.height=""),f.children("div")[0].style.top=""}$(k).children("tr.ui-jqgrid-labels").remove(),$(k).prepend(b),a===!0&&$(i).jqGrid("setGridParam",{groupHeader:null})}})}}),$.jgrid=$.jgrid||{},$.extend($.jgrid,{saveState:function(a,b){if(b=$.extend({useStorage:!0,storageType:"localStorage",beforeSetItem:null,compression:!1,compressionModule:"LZString",compressionMethod:"compressToUTF16"},b||{}),a){var c,d,e="",f="",g=$("#"+a)[0];if(g.grid){d=$(g).data("inlineNav"),d&&g.p.inlineNav&&$(g).jqGrid("setGridParam",{_iN:d}),d=$(g).data("filterToolbar"),d&&g.p.filterToolbar&&$(g).jqGrid("setGridParam",{_fT:d}),e=$(g).jqGrid("jqGridExport",{exptype:"jsonstring",ident:"",root:""}),f=$(g.grid.bDiv).find(".ui-jqgrid-btable tbody:first").html();var h=f.indexOf("");if(f=f.slice(h+5),$.isFunction(b.beforeSetItem)&&(c=b.beforeSetItem.call(g,e),null!=c&&(e=c)),b.compression&&b.compressionModule)try{c=window[b.compressionModule][b.compressionMethod](e),null!=c&&(e=c,f=window[b.compressionModule][b.compressionMethod](f))}catch(i){}if(b.useStorage&&$.jgrid.isLocalStorage())try{window[b.storageType].setItem("jqGrid"+g.p.id,e),window[b.storageType].setItem("jqGrid"+g.p.id+"_data",f)}catch(i){22===i.code&&alert("Local storage limit is over!")}return e}}},loadState:function(a,b,c){if(c=$.extend({useStorage:!0,storageType:"localStorage",clearAfterLoad:!1,beforeSetGrid:null,afterSetGrid:null,decompression:!1,decompressionModule:"LZString",decompressionMethod:"decompressFromUTF16"},c||{}),a){var d,e,f,g,h,i=$("#"+a)[0];if(c.useStorage)try{b=window[c.storageType].getItem("jqGrid"+i.id),f=window[c.storageType].getItem("jqGrid"+i.id+"_data")}catch(j){}if(b){if(c.decompression&&c.decompressionModule)try{d=window[c.decompressionModule][c.decompressionMethod](b),null!=d&&(b=d,f=window[c.decompressionModule][c.decompressionMethod](f))}catch(j){}if(d=jqGridUtils.parse(b),d&&"object"===$.type(d)){i.grid&&$.jgrid.gridUnload(a),$.isFunction(c.beforeSetGrid)&&(e=c.beforeSetGrid(d),e&&"object"===$.type(e)&&(d=e));var k=function(a){var b;return b=a},l={reccount:d.reccount,records:d.records,lastpage:d.lastpage,shrinkToFit:k(d.shrinkToFit),data:k(d.data),datatype:k(d.datatype),grouping:k(d.grouping)};d.shrinkToFit=!1,d.data=[],d.datatype="local",d.grouping=!1,d.inlineNav&&(g=k(d._iN),d._iN=null,delete d._iN),d.filterToolbar&&(h=k(d._fT),d._fT=null,delete d._fT);var m=$("#"+a).jqGrid(d);if(m.append(f),m.jqGrid("setGridParam",l),d.storeNavOptions&&d.navGrid&&(m[0].p.navGrid=!1,m.jqGrid("navGrid",d.pager,d.navOptions,d.editOptions,d.addOptions,d.delOptions,d.searchOptions,d.viewOptions),d.navButtons&&d.navButtons.length))for(var n=0;nq;)$(m[0].rows[q].cells[s]).find("div.treeclick").bind("click",function(a){var b=a.target||a.srcElement,c=$.jgrid.stripPref(d.idPrefix,$(b,m[0].rows).closest("tr.jqgrow")[0].id),e=m[0].p._index[c];return m[0].p.data[e][t]||(m[0].p.data[e][u]?(m.jqGrid("collapseRow",m[0].p.data[e]),m.jqGrid("collapseNode",m[0].p.data[e])):(m.jqGrid("expandRow",m[0].p.data[e]),m.jqGrid("expandNode",m[0].p.data[e]))),!1}),d.ExpandColClick===!0&&$(m[0].rows[q].cells[s]).find("span.cell-wrapper").css("cursor","pointer").bind("click",function(a){var b=a.target||a.srcElement,c=$.jgrid.stripPref(d.idPrefix,$(b,m[0].rows).closest("tr.jqgrow")[0].id),e=m[0].p._index[c];return m[0].p.data[e][t]||(m[0].p.data[e][u]?(m.jqGrid("collapseRow",m[0].p.data[e]),m.jqGrid("collapseNode",m[0].p.data[e])):(m.jqGrid("expandRow",m[0].p.data[e]),m.jqGrid("expandNode",m[0].p.data[e]))),m.jqGrid("setSelection",c),!1}),q++}d.inlineNav&&g&&(m.jqGrid("setGridParam",{inlineNav:!1}),m.jqGrid("inlineNav",d.pager,g)),d.filterToolbar&&h&&(m.jqGrid("setGridParam",{filterToolbar:!1}),h.restoreFromFilters=!0,m.jqGrid("filterToolbar",h)),d.frozenColumns&&m.jqGrid("setFrozenColumns"),m[0].updatepager(!0,!0),$.isFunction(c.afterSetGrid)&&c.afterSetGrid(m),c.clearAfterLoad&&(window[c.storageType].removeItem("jqGrid"+i.id),window[c.storageType].removeItem("jqGrid"+i.id+"_data"))}else alert("can not convert to object")}}},isGridInStorage:function(a,b){var c={storageType:"localStorage"};c=$.extend(c,b||{});var d,e,f;try{e=window[c.storageType].getItem("jqGrid"+a),f=window[c.storageType].getItem("jqGrid"+a+"_data"),d=null!=e&&null!=f&&"string"==typeof e&&"string"==typeof f}catch(g){d=!1}return d},setRegional:function(a,b){var c={storageType:"sessionStorage"};if(c=$.extend(c,b||{}),c.regional){$.jgrid.saveState(a,c),c.beforeSetGrid=function(a){return a.regional=c.regional,a.force_regional=!0,a},$.jgrid.loadState(a,null,c);var d=$("#"+a)[0],e=$(d).jqGrid("getGridParam","colModel"),f=-1,g=$.jgrid.getRegional(d,"nav");$.each(e,function(a){return this.formatter&&"actions"===this.formatter?(f=a,!1):void 0}),-1!==f&&g&&$("#"+a+" tbody tr").each(function(){var a=this.cells[f];$(a).find(".ui-inline-edit").attr("title",g.edittitle),$(a).find(".ui-inline-del").attr("title",g.deltitle),$(a).find(".ui-inline-save").attr("title",g.savetitle),$(a).find(".ui-inline-cancel").attr("title",g.canceltitle)});try{window[c.storageType].removeItem("jqGrid"+d.id),window[c.storageType].removeItem("jqGrid"+d.id+"_data")}catch(h){}}},jqGridImport:function(a,b){b=$.extend({imptype:"xml",impstring:"",impurl:"",mtype:"GET",impData:{},xmlGrid:{config:"root>grid",data:"root>rows"},jsonGrid:{config:"grid",data:"data"},ajaxOptions:{}},b||{});var c=(0===a.indexOf("#")?"":"#")+$.jgrid.jqID(a),d=function(a,b){var d,e,f,g=$(b.xmlGrid.config,a)[0],h=$(b.xmlGrid.data,a)[0];if(jqGridUtils.xmlToJSON){d=jqGridUtils.xmlToJSON(g);for(f in d)d.hasOwnProperty(f)&&(e=d[f]);if(h){var i=d.grid.datatype;d.grid.datatype="xmlstring",d.grid.datastr=a,$(c).jqGrid(e).jqGrid("setGridParam",{datatype:i})}else setTimeout(function(){$(c).jqGrid(e)},0)}else alert("xml2json or parse are not present")},e=function(a,b){if(a&&"string"==typeof a){var d=jqGridUtils.parse(a),e=d[b.jsonGrid.config],f=d[b.jsonGrid.data];if(f){var g=e.datatype;e.datatype="jsonstring",e.datastr=f,$(c).jqGrid(e).jqGrid("setGridParam",{datatype:g})}else $(c).jqGrid(e)}};switch(b.imptype){case"xml":$.ajax($.extend({url:b.impurl,type:b.mtype,data:b.impData,dataType:"xml",complete:function(a,e){"success"===e&&(d(a.responseXML,b),$(c).triggerHandler("jqGridImportComplete",[a,b]),$.isFunction(b.importComplete)&&b.importComplete(a)),a=null}},b.ajaxOptions));break;case"xmlstring":if(b.impstring&&"string"==typeof b.impstring){var f=$.parseXML(b.impstring);f&&(d(f,b),$(c).triggerHandler("jqGridImportComplete",[f,b]),$.isFunction(b.importComplete)&&b.importComplete(f))}break;case"json":$.ajax($.extend({url:b.impurl,type:b.mtype,data:b.impData,dataType:"json",complete:function(a){try{e(a.responseText,b),$(c).triggerHandler("jqGridImportComplete",[a,b]),$.isFunction(b.importComplete)&&b.importComplete(a)}catch(d){}a=null}},b.ajaxOptions));break;case"jsonstring":b.impstring&&"string"==typeof b.impstring&&(e(b.impstring,b),$(c).triggerHandler("jqGridImportComplete",[b.impstring,b]),$.isFunction(b.importComplete)&&b.importComplete(b.impstring))}}}),$.jgrid.extend({jqGridExport:function(a){a=$.extend({exptype:"xmlstring",root:"grid",ident:" ",addOptions:{}},a||{});var b=null;return this.each(function(){if(this.grid){var c,d=$.extend(!0,{},$(this).jqGrid("getGridParam"),a.addOptions);if(d.rownumbers&&(d.colNames.splice(0,1),d.colModel.splice(0,1)),d.multiselect&&(d.colNames.splice(0,1),d.colModel.splice(0,1)),d.subGrid&&(d.colNames.splice(0,1),d.colModel.splice(0,1)),d.knv=null,d.treeGrid)for(c in d.treeReader)d.treeReader.hasOwnProperty(c)&&(d.colNames.splice(d.colNames.length-1),d.colModel.splice(d.colModel.length-1));switch(a.exptype){case"xmlstring":b="<"+a.root+">"+jqGridUtils.jsonToXML(d,{xmlDecl:""})+"";break;case"jsonstring":b=jqGridUtils.stringify(d),a.root&&(b="{"+a.root+":"+b+"}")}}}),b},excelExport:function(a){return a=$.extend({exptype:"remote",url:null,oper:"oper",tag:"excel",beforeExport:null,exporthidden:!1,exportgrouping:!1,exportOptions:{}},a||{}),this.each(function(){if(this.grid){var b;if("remote"===a.exptype){var c,d=$.extend({},this.p.postData);if(d[a.oper]=a.tag,$.isFunction(a.beforeExport)){var e=a.beforeExport.call(this,d);$.isPlainObject(e)&&(d=e)}if(a.exporthidden){var f,g=this.p.colModel,h=g.length,i=[];for(f=0;h>f;f++)void 0===g[f].hidden&&(g[f].hidden=!1),i.push({name:g[f].name,hidden:g[f].hidden});var j=JSON.stringify(i);"string"==typeof j&&(d.colModel=j)}a.exportgrouping&&(c=JSON.stringify(this.p.groupingView),"string"==typeof c&&(d.groupingView=c));var k=jQuery.param(d);b=-1!==a.url.indexOf("?")?a.url+"&"+k:a.url+"?"+k,window.location=b}}})}}),$.jgrid.inlineEdit=$.jgrid.inlineEdit||{},$.jgrid.extend({editRow:function(a,b,c,d,e,f,g,h,i){var j={},k=$.makeArray(arguments).slice(1);return"object"===$.type(k[0])?j=k[0]:(void 0!==b&&(j.keys=b),$.isFunction(c)&&(j.oneditfunc=c),$.isFunction(d)&&(j.successfunc=d),void 0!==e&&(j.url=e),void 0!==f&&(j.extraparam=f),$.isFunction(g)&&(j.aftersavefunc=g),$.isFunction(h)&&(j.errorfunc=h),$.isFunction(i)&&(j.afterrestorefunc=i)),j=$.extend(!0,{keys:!1,keyevent:"keydown",oneditfunc:null,successfunc:null,url:null,extraparam:{},aftersavefunc:null,errorfunc:null,afterrestorefunc:null,restoreAfterError:!0,mtype:"POST",focusField:!0},$.jgrid.inlineEdit,j),this.each(function(){var b,c,d,e,f,g,h=this,i=0,k=null,l={},m=$(this).jqGrid("getStyleUI",h.p.styleUI+".inlinedit","inputClass",!0);h.grid&&(e=$(h).jqGrid("getInd",a,!0),e!==!1&&(g=$.isFunction(j.beforeEditRow)?j.beforeEditRow.call(h,j,a):void 0,void 0===g&&(g=!0),g&&(d=$(e).attr("editable")||"0","0"!==d||$(e).hasClass("not-editable-row")||(f=h.p.colModel,$('td[role="gridcell"]',e).each(function(d){b=f[d].name;var e=h.p.treeGrid===!0&&b===h.p.ExpandColumn;if(e)c=$("span:first",this).html();else try{c=$.unformat.call(h,this,{rowId:a,colModel:f[d]},d)}catch(g){c=f[d].edittype&&"textarea"===f[d].edittype?$(this).text():$(this).html()}if("cb"!==b&&"subgrid"!==b&&"rn"!==b&&(h.p.autoencode&&(c=$.jgrid.htmlDecode(c)),l[b]=c,f[d].editable===!0)){null===k&&(k=d),e?$("span:first",this).html(""):$(this).html("");var j=$.extend({},f[d].editoptions||{},{id:a+"_"+b,name:b,rowId:a,oper:"edit"});f[d].edittype||(f[d].edittype="text"),(" "===c||" "===c||1===c.length&&160===c.charCodeAt(0))&&(c="");var n=$.jgrid.createEl.call(h,f[d].edittype,j,c,!0,$.extend({},$.jgrid.ajaxOptions,h.p.ajaxSelectOptions||{}));$(n).addClass("editable inline-edit-cell"),$.inArray(f[d].edittype,["text","textarea","password","select"])>-1&&$(n).addClass(m),e?$("span:first",this).append(n):$(this).append(n),$.jgrid.bindEv.call(h,n,j),"select"===f[d].edittype&&void 0!==f[d].editoptions&&f[d].editoptions.multiple===!0&&void 0===f[d].editoptions.dataUrl&&$.jgrid.msie&&$(n).width($(n).width()),i++}}),i>0&&(l.id=a,h.p.savedRow.push(l),$(e).attr("editable","1"),j.focusField&&("number"==typeof j.focusField&&parseInt(j.focusField,10)<=f.length&&(k=j.focusField),setTimeout(function(){var a=$("td:eq("+k+") :input:visible",e).not(":disabled");a.length>0&&a.focus()},0)),j.keys===!0&&$(e).bind(j.keyevent,function(b){if(27===b.keyCode){if($(h).jqGrid("restoreRow",a,j.afterrestorefunc),h.p.inlineNav)try{$(h).jqGrid("showAddEditButtons")}catch(c){}return!1}if(13===b.keyCode){var d=b.target;if("TEXTAREA"===d.tagName)return!0;if($(h).jqGrid("saveRow",a,j)&&h.p.inlineNav)try{$(h).jqGrid("showAddEditButtons")}catch(e){}return!1}}),$(h).triggerHandler("jqGridInlineEditRow",[a,j]),$.isFunction(j.oneditfunc)&&j.oneditfunc.call(h,a))))))})},saveRow:function(a,b,c,d,e,f,g){var h=$.makeArray(arguments).slice(1),i={},j=this[0];"object"===$.type(h[0])?i=h[0]:($.isFunction(b)&&(i.successfunc=b),void 0!==c&&(i.url=c),void 0!==d&&(i.extraparam=d),$.isFunction(e)&&(i.aftersavefunc=e),$.isFunction(f)&&(i.errorfunc=f),$.isFunction(g)&&(i.afterrestorefunc=g)),i=$.extend(!0,{successfunc:null,url:null,extraparam:{},aftersavefunc:null,errorfunc:null,afterrestorefunc:null,restoreAfterError:!0, +mtype:"POST",saveui:"enable",savetext:$.jgrid.getRegional(j,"defaults.savetext")},$.jgrid.inlineEdit,i);var k,l,m,n,o,p=!1,q={},r={},s={},t=!1,u=$.trim($(j).jqGrid("getStyleUI",j.p.styleUI+".common","error",!0));if(!j.grid)return p;if(o=$(j).jqGrid("getInd",a,!0),o===!1)return p;var v=$.jgrid.getRegional(j,"errors"),w=$.jgrid.getRegional(j,"edit"),x=$.isFunction(i.beforeSaveRow)?i.beforeSaveRow.call(j,i,a):void 0;if(void 0===x&&(x=!0),x){if(l=$(o).attr("editable"),i.url=i.url||j.p.editurl,"1"===l){var y;if($('td[role="gridcell"]',o).each(function(a){if(y=j.p.colModel[a],k=y.name,"cb"!==k&&"subgrid"!==k&&y.editable===!0&&"rn"!==k&&!$(this).hasClass("not-editable-cell")){switch(y.edittype){case"checkbox":var b=["Yes","No"];y.editoptions&&(b=y.editoptions.value.split(":")),q[k]=$("input",this).is(":checked")?b[0]:b[1];break;case"text":case"password":case"textarea":case"button":q[k]=$("input, textarea",this).val();break;case"select":if(y.editoptions.multiple){var c=$("select",this),d=[];q[k]=$(c).val(),q[k]?q[k]=q[k].join(","):q[k]="",$("select option:selected",this).each(function(a,b){d[a]=$(b).text()}),r[k]=d.join(",")}else q[k]=$("select option:selected",this).val(),r[k]=$("select option:selected",this).text();y.formatter&&"select"===y.formatter&&(r={});break;case"custom":try{if(!y.editoptions||!$.isFunction(y.editoptions.custom_value))throw"e1";if(q[k]=y.editoptions.custom_value.call(j,$(".customelement",this),"get"),void 0===q[k])throw"e2"}catch(e){"e1"===e?$.jgrid.info_dialog(v.errcap,"function 'custom_value' "+w.msg.nodefined,w.bClose,{styleUI:j.p.styleUI}):$.jgrid.info_dialog(v.errcap,e.message,w.bClose,{styleUI:j.p.styleUI})}}if(n=$.jgrid.checkValues.call(j,q[k],a),n[0]===!1)return!1;j.p.autoencode&&(q[k]=$.jgrid.htmlEncode(q[k])),"clientArray"!==i.url&&y.editoptions&&y.editoptions.NullIfEmpty===!0&&""===q[k]&&(s[k]="null",t=!0)}}),n[0]===!1){try{var z=$(j).jqGrid("getGridRowById",a),A=$.jgrid.findPos(z);$.jgrid.info_dialog(v.errcap,n[1],w.bClose,{left:A[0],top:A[1]+$(z).outerHeight(),styleUI:j.p.styleUI})}catch(B){alert(n[1])}return p}var C,D=j.p.prmNames,E=a;if(C=j.p.keyName===!1?D.id:j.p.keyName,q){if(q[D.oper]=D.editoper,void 0===q[C]||""===q[C])q[C]=a;else if(o.id!==j.p.idPrefix+q[C]){var F=$.jgrid.stripPref(j.p.idPrefix,a);if(void 0!==j.p._index[F]&&(j.p._index[q[C]]=j.p._index[F],delete j.p._index[F]),a=j.p.idPrefix+q[C],$(o).attr("id",a),j.p.selrow===E&&(j.p.selrow=a),$.isArray(j.p.selarrrow)){var G=$.inArray(E,j.p.selarrrow);G>=0&&(j.p.selarrrow[G]=a)}if(j.p.multiselect){var H="jqg_"+j.p.id+"_"+a;$("input.cbox",o).attr("id",H).attr("name",H)}}void 0===j.p.inlineData&&(j.p.inlineData={}),q=$.extend({},q,j.p.inlineData,i.extraparam)}if("clientArray"===i.url){q=$.extend({},q,r),j.p.autoencode&&$.each(q,function(a,b){q[a]=$.jgrid.htmlDecode(b)});var I,J=$(j).jqGrid("setRowData",a,q);for($(o).attr("editable","0"),I=0;I=0&&j.p.savedRow.splice(m,1),$(j).triggerHandler("jqGridInlineAfterSaveRow",[a,J,q,i]),$.isFunction(i.aftersavefunc)&&i.aftersavefunc.call(j,a,J,q,i),p=!0,$(o).removeClass("jqgrid-new-row").unbind("keydown")}else $(j).jqGrid("progressBar",{method:"show",loadtype:i.saveui,htmlcontent:i.savetext}),s=$.extend({},q,s),s[C]=$.jgrid.stripPref(j.p.idPrefix,s[C]),$.ajax($.extend({url:i.url,data:$.isFunction(j.p.serializeRowData)?j.p.serializeRowData.call(j,s):s,type:i.mtype,async:!1,complete:function(b,c){if($(j).jqGrid("progressBar",{method:"hide",loadtype:i.saveui,htmlcontent:i.savetext}),"success"===c){var d,e,f=!0;if(d=$(j).triggerHandler("jqGridInlineSuccessSaveRow",[b,a,i]),$.isArray(d)||(d=[!0,s]),d[0]&&$.isFunction(i.successfunc)&&(d=i.successfunc.call(j,b)),$.isArray(d)?(f=d[0],q=d[1]||q):f=d,f===!0){for(j.p.autoencode&&$.each(q,function(a,b){q[a]=$.jgrid.htmlDecode(b)}),t&&$.each(q,function(a){"null"===q[a]&&(q[a]="")}),q=$.extend({},q,r),$(j).jqGrid("setRowData",a,q),$(o).attr("editable","0"),e=0;e=0&&j.p.savedRow.splice(m,1),$(j).triggerHandler("jqGridInlineAfterSaveRow",[a,b,q,i]),$.isFunction(i.aftersavefunc)&&i.aftersavefunc.call(j,a,b,q,i),p=!0,$(o).removeClass("jqgrid-new-row").unbind("keydown")}else $(j).triggerHandler("jqGridInlineErrorSaveRow",[a,b,c,null,i]),$.isFunction(i.errorfunc)&&i.errorfunc.call(j,a,b,c,null),i.restoreAfterError===!0&&$(j).jqGrid("restoreRow",a,i.afterrestorefunc)}},error:function(b,c,d){if($("#lui_"+$.jgrid.jqID(j.p.id)).hide(),$(j).triggerHandler("jqGridInlineErrorSaveRow",[a,b,c,d,i]),$.isFunction(i.errorfunc))i.errorfunc.call(j,a,b,c,d);else{var e=b.responseText||b.statusText;try{$.jgrid.info_dialog(v.errcap,'
'+e+"
",w.bClose,{buttonalign:"right",styleUI:j.p.styleUI})}catch(f){alert(e)}}i.restoreAfterError===!0&&$(j).jqGrid("restoreRow",a,i.afterrestorefunc)}},$.jgrid.ajaxOptions,j.p.ajaxRowOptions||{}))}return p}},restoreRow:function(a,b){var c=$.makeArray(arguments).slice(1),d={};return"object"===$.type(c[0])?d=c[0]:$.isFunction(b)&&(d.afterrestorefunc=b),d=$.extend(!0,{},$.jgrid.inlineEdit,d),this.each(function(){var b,c,e=this,f=-1,g={};if(e.grid&&(b=$(e).jqGrid("getInd",a,!0),b!==!1)){var h=$.isFunction(d.beforeCancelRow)?d.beforeCancelRow.call(e,d,a):void 0;if(void 0===h&&(h=!0),h){for(c=0;c=0){if($.isFunction($.fn.datepicker))try{$("input.hasDatepicker","#"+$.jgrid.jqID(b.id)).datepicker("hide")}catch(i){}$.each(e.p.colModel,function(){this.editable===!0&&e.p.savedRow[f].hasOwnProperty(this.name)&&(g[this.name]=e.p.savedRow[f][this.name])}),$(e).jqGrid("setRowData",a,g),$(b).attr("editable","0").unbind("keydown"),e.p.savedRow.splice(f,1),$("#"+$.jgrid.jqID(a),"#"+$.jgrid.jqID(e.p.id)).hasClass("jqgrid-new-row")&&setTimeout(function(){$(e).jqGrid("delRowData",a),$(e).jqGrid("showAddEditButtons")},0)}$(e).triggerHandler("jqGridInlineAfterRestoreRow",[a]),$.isFunction(d.afterrestorefunc)&&d.afterrestorefunc.call(e,a)}}})},addRow:function(a){return a=$.extend(!0,{rowID:null,initdata:{},position:"first",useDefValues:!0,useFormatter:!1,addRowParams:{extraparam:{}}},a||{}),this.each(function(){if(this.grid){var b=this,c=$.isFunction(a.beforeAddRow)?a.beforeAddRow.call(b,a.addRowParams):void 0;if(void 0===c&&(c=!0),c)if(a.rowID=$.isFunction(a.rowID)?a.rowID.call(b,a):null!=a.rowID?a.rowID:$.jgrid.randId(),a.useDefValues===!0&&$(b.p.colModel).each(function(){if(this.editoptions&&this.editoptions.defaultValue){var c=this.editoptions.defaultValue,d=$.isFunction(c)?c.call(b):c;a.initdata[this.name]=d}}),$(b).jqGrid("addRowData",a.rowID,a.initdata,a.position),a.rowID=b.p.idPrefix+a.rowID,$("#"+$.jgrid.jqID(a.rowID),"#"+$.jgrid.jqID(b.p.id)).addClass("jqgrid-new-row"),a.useFormatter)$("#"+$.jgrid.jqID(a.rowID)+" .ui-inline-edit","#"+$.jgrid.jqID(b.p.id)).click();else{var d=b.p.prmNames,e=d.oper;a.addRowParams.extraparam[e]=d.addoper,$(b).jqGrid("editRow",a.rowID,a.addRowParams),$(b).jqGrid("setSelection",a.rowID)}}})},inlineNav:function(a,b){var c=this[0],d=$.jgrid.getRegional(c,"nav"),e=$.jgrid.styleUI[c.p.styleUI].inlinedit;return b=$.extend(!0,{edit:!0,editicon:e.icon_edit_nav,add:!0,addicon:e.icon_add_nav,save:!0,saveicon:e.icon_save_nav,cancel:!0,cancelicon:e.icon_cancel_nav,addParams:{addRowParams:{extraparam:{}}},editParams:{},restoreAfterSelect:!0},d,b||{}),this.each(function(){if(this.grid&&!this.p.inlineNav){var e=$.jgrid.jqID(c.p.id),f=$.trim($(c).jqGrid("getStyleUI",c.p.styleUI+".common","disabled",!0));if(c.p.navGrid||$(c).jqGrid("navGrid",a,{refresh:!1,edit:!1,add:!1,del:!1,search:!1,view:!1}),$(c).data("inlineNav")||$(c).data("inlineNav",b),c.p.force_regional&&(b=$.extend(b,d)),c.p.inlineNav=!0,b.addParams.useFormatter===!0){var g,h=c.p.colModel;for(g=0;g0&&c.p.inlineNav===!0&&d!==c.p.selrow&&null!==c.p.selrow&&(c.p.selrow===b.addParams.rowID?$(c).jqGrid("delRowData",c.p.selrow):$(c).jqGrid("restoreRow",c.p.selrow,b.editParams),$(c).jqGrid("showAddEditButtons"))})}})},showAddEditButtons:function(){return this.each(function(){if(this.grid){var a=$.jgrid.jqID(this.p.id),b=$.trim($(this).jqGrid("getStyleUI",this.p.styleUI+".common","disabled",!0));$("#"+a+"_ilsave").addClass(b),$("#"+a+"_ilcancel").addClass(b),$("#"+a+"_iladd").removeClass(b),$("#"+a+"_iledit").removeClass(b)}})}}),$.jgrid.msie&&8===$.jgrid.msiever()&&($.expr[":"].hidden=function(a){return 0===a.offsetWidth||0===a.offsetHeight||"none"===a.style.display}),$.jgrid._multiselect=!1,$.ui&&$.ui.multiselect){if($.ui.multiselect.prototype._setSelected){var setSelected=$.ui.multiselect.prototype._setSelected;$.ui.multiselect.prototype._setSelected=function(a,b){var c=setSelected.call(this,a,b);if(b&&this.selectedList){var d=this.element;this.selectedList.find("li").each(function(){$(this).data("optionLink")&&$(this).data("optionLink").remove().appendTo(d)})}return c}}$.ui.multiselect.prototype.destroy&&($.ui.multiselect.prototype.destroy=function(){this.element.show(),this.container.remove(),void 0===$.Widget?$.widget.prototype.destroy.apply(this,arguments):$.Widget.prototype.destroy.apply(this,arguments)}),$.jgrid._multiselect=!0}$.jgrid.extend({sortableColumns:function(a){return this.each(function(){function b(){c.p.disableClick=!0}var c=this,d=$.jgrid.jqID(c.p.id),e={tolerance:"pointer",axis:"x",scrollSensitivity:"1",items:">th:not(:has(#jqgh_"+d+"_cb,#jqgh_"+d+"_rn,#jqgh_"+d+"_subgrid),:hidden)",placeholder:{element:function(a){var b=$(document.createElement(a[0].nodeName)).addClass(a[0].className+" ui-sortable-placeholder ui-state-highlight").removeClass("ui-sortable-helper")[0];return b},update:function(a,b){b.height(a.currentItem.innerHeight()-parseInt(a.currentItem.css("paddingTop")||0,10)-parseInt(a.currentItem.css("paddingBottom")||0,10)),b.width(a.currentItem.innerWidth()-parseInt(a.currentItem.css("paddingLeft")||0,10)-parseInt(a.currentItem.css("paddingRight")||0,10))}},update:function(a,b){var d=$(b.item).parent(),e=$(">th",d),f=c.p.colModel,g={},h=c.p.id+"_";$.each(f,function(a){g[this.name]=a});var i=[];e.each(function(){var a=$(">div",this).get(0).id.replace(/^jqgh_/,"").replace(h,"");g.hasOwnProperty(a)&&i.push(g[a])}),$(c).jqGrid("remapColumns",i,!0,!0),$.isFunction(c.p.sortable.update)&&c.p.sortable.update(i),setTimeout(function(){c.p.disableClick=!1},50)}};if(c.p.sortable.options?$.extend(e,c.p.sortable.options):$.isFunction(c.p.sortable)&&(c.p.sortable={update:c.p.sortable}),e.start){var f=e.start;e.start=function(a,c){b(),f.call(this,a,c)}}else e.start=b;c.p.sortable.exclude&&(e.items+=":not("+c.p.sortable.exclude+")");var g=a.sortable(e),h=g.data("sortable")||g.data("uiSortable");null!=h&&(h.data("sortable").floating=!0)})},columnChooser:function(a){function b(a,b,c){var d,e;return b>=0?(d=a.slice(),e=d.splice(b,Math.max(a.length-b,b)),b>a.length&&(b=a.length),d[b]=c,d.concat(e)):a}function c(a,b){a&&("string"==typeof a?$.fn[a]&&$.fn[a].apply(b,$.makeArray(arguments).slice(2)):$.isFunction(a)&&a.apply(b,$.makeArray(arguments).slice(2)))}var d,e,f,g,h,i,j,k=this,l={},m=[],n=k.jqGrid("getGridParam","colModel"),o=k.jqGrid("getGridParam","colNames"),p=function(a){return $.ui.multiselect.prototype&&a.data($.ui.multiselect.prototype.widgetFullName||$.ui.multiselect.prototype.widgetName)||a.data("ui-multiselect")||a.data("multiselect")},q=$.jgrid.getRegional(this[0],"col");if(!$("#colchooser_"+$.jgrid.jqID(k[0].p.id)).length){if(d=$('
'),e=$("select",d),a=$.extend({width:400,height:240,classname:null,done:function(a){a&&k.jqGrid("remapColumns",a,!0)},msel:"multiselect",dlog:"dialog",dialog_opts:{minWidth:470,dialogClass:"ui-jqdialog"},dlog_opts:function(a){var b={};return b[a.bSubmit]=function(){a.apply_perm(),a.cleanup(!1)},b[a.bCancel]=function(){a.cleanup(!0)},$.extend(!0,{buttons:b,close:function(){a.cleanup(!0)},modal:a.modal||!1,resizable:a.resizable||!0,width:a.width+70,resize:function(){var a=p(e),b=a.container.closest(".ui-dialog-content");b.length>0&&"object"==typeof b[0].style?b[0].style.width="":b.css("width",""),a.selectedList.height(Math.max(a.selectedContainer.height()-a.selectedActions.outerHeight()-1,1)),a.availableList.height(Math.max(a.availableContainer.height()-a.availableActions.outerHeight()-1,1))}},a.dialog_opts||{})},apply_perm:function(){var c=[];$("option",e).each(function(){$(this).is(":selected")?k.jqGrid("showCol",n[this.value].name):k.jqGrid("hideCol",n[this.value].name)}),$("option[selected]",e).each(function(){c.push(parseInt(this.value,10))}),$.each(c,function(){delete l[n[parseInt(this,10)].name]}),$.each(l,function(){var a=parseInt(this,10);c=b(c,a,a)}),a.done&&a.done.call(k,c),k.jqGrid("setGridWidth",k[0].p.width,k[0].p.shrinkToFit)},cleanup:function(b){c(a.dlog,d,"destroy"),c(a.msel,e,"destroy"),d.remove(),b&&a.done&&a.done.call(k)},msel_opts:{}},q,a||{}),$.ui&&$.ui.multiselect&&$.ui.multiselect.defaults){if(!$.jgrid._multiselect)return void alert("Multiselect plugin loaded after jqGrid. Please load the plugin before the jqGrid!");a.msel_opts=$.extend($.ui.multiselect.defaults,a.msel_opts)}a.caption&&d.attr("title",a.caption),a.classname&&(d.addClass(a.classname),e.addClass(a.classname)),a.width&&($(">div",d).css({width:a.width,margin:"0 auto"}),e.css("width",a.width)),a.height&&($(">div",d).css("height",a.height),e.css("height",a.height-10)),e.empty(),$.each(n,function(a){return l[this.name]=a,this.hidedlg?void(this.hidden||m.push(a)):void e.append("")}),f=$.isFunction(a.dlog_opts)?a.dlog_opts.call(k,a):a.dlog_opts,c(a.dlog,d,f),g=$.isFunction(a.msel_opts)?a.msel_opts.call(k,a):a.msel_opts,c(a.msel,e,g),h=$("#colchooser_"+$.jgrid.jqID(k[0].p.id)),h.css({margin:"auto"}),h.find(">div").css({width:"100%",height:"100%",margin:"auto"}),i=p(e),i.container.css({width:"100%",height:"100%",margin:"auto"}),i.selectedContainer.css({width:100*i.options.dividerLocation+"%",height:"100%",margin:"auto",boxSizing:"border-box"}),i.availableContainer.css({width:100-100*i.options.dividerLocation+"%",height:"100%",margin:"auto",boxSizing:"border-box"}),i.selectedList.css("height","auto"),i.availableList.css("height","auto"),j=Math.max(i.selectedList.height(),i.availableList.height()),j=Math.min(j,$(window).height()),i.selectedList.css("height",j),i.availableList.css("height",j)}},sortableRows:function(a){return this.each(function(){var b=this;b.grid&&(b.p.treeGrid||$.fn.sortable&&(a=$.extend({cursor:"move",axis:"y",items:" > .jqgrow"},a||{}),a.start&&$.isFunction(a.start)?(a._start_=a.start,delete a.start):a._start_=!1,a.update&&$.isFunction(a.update)?(a._update_=a.update,delete a.update):a._update_=!1,a.start=function(c,d){if($(d.item).css("border-width","0"),$("td",d.item).each(function(a){this.style.width=b.grid.cols[a].style.width}),b.p.subGrid){var e=$(d.item).attr("id");try{$(b).jqGrid("collapseSubGridRow",e)}catch(f){}}a._start_&&a._start_.apply(this,[c,d])},a.update=function(c,d){$(d.item).css("border-width",""),b.p.rownumbers===!0&&$("td.jqgrid-rownum",b.rows).each(function(a){$(this).html(a+1+(parseInt(b.p.page,10)-1)*parseInt(b.p.rowNum,10))}),a._update_&&a._update_.apply(this,[c,d])},$("tbody:first",b).sortable(a),$("tbody:first > .jqgrow",b).disableSelection()))})},gridDnD:function(a){return this.each(function(){function b(){var a=$.data(e,"dnd");$("tr.jqgrow:not(.ui-draggable)",e).draggable($.isFunction(a.drag)?a.drag.call($(e),a):a.drag)}var c,d,e=this;if(e.grid&&!e.p.treeGrid&&$.fn.draggable&&$.fn.droppable){var f="
";if(void 0===$("#jqgrid_dnd")[0]&&$("body").append(f),"string"==typeof a&&"updateDnD"===a&&e.p.jqgdnd===!0)return void b();if(a=$.extend({drag:function(a){return $.extend({start:function(b,c){var d,f;if(e.p.subGrid){f=$(c.helper).attr("id");try{$(e).jqGrid("collapseSubGridRow",f)}catch(g){}}for(d=0;d<$.data(e,"dnd").connectWith.length;d++)0===$($.data(e,"dnd").connectWith[d]).jqGrid("getGridParam","reccount")&&$($.data(e,"dnd").connectWith[d]).jqGrid("addRowData","jqg_empty_row",{});c.helper.addClass("ui-state-highlight"),$("td",c.helper).each(function(a){this.style.width=e.grid.headers[a].width+"px"}),a.onstart&&$.isFunction(a.onstart)&&a.onstart.call($(e),b,c)},stop:function(b,c){var d,f;for(c.helper.dropped&&!a.dragcopy&&(f=$(c.helper).attr("id"),void 0===f&&(f=$(this).attr("id")),$(e).jqGrid("delRowData",f)),d=0;d<$.data(e,"dnd").connectWith.length;d++)$($.data(e,"dnd").connectWith[d]).jqGrid("delRowData","jqg_empty_row");a.onstop&&$.isFunction(a.onstop)&&a.onstop.call($(e),b,c)}},a.drag_opts||{})},drop:function(a){return $.extend({accept:function(a){if(!$(a).hasClass("jqgrow"))return a;var b=$(a).closest("table.ui-jqgrid-btable");if(b.length>0&&void 0!==$.data(b[0],"dnd")){var c=$.data(b[0],"dnd").connectWith;return-1!==$.inArray("#"+$.jgrid.jqID(this.id),c)?!0:!1}return!1},drop:function(b,c){if($(c.draggable).hasClass("jqgrow")){var d=$(c.draggable).attr("id"),f=c.draggable.parent().parent().jqGrid("getRowData",d);if(!a.dropbyname){var g,h,i=0,j={},k=$("#"+$.jgrid.jqID(this.id)).jqGrid("getGridParam","colModel");try{for(h in f)f.hasOwnProperty(h)&&(g=k[i].name,"cb"!==g&&"rn"!==g&&"subgrid"!==g&&f.hasOwnProperty(h)&&k[i]&&(j[g]=f[h]),i++);f=j}catch(l){}}if(c.helper.dropped=!0,a.beforedrop&&$.isFunction(a.beforedrop)){var m=a.beforedrop.call(this,b,c,f,$("#"+$.jgrid.jqID(e.p.id)),$(this));void 0!==m&&null!==m&&"object"==typeof m&&(f=m)}if(c.helper.dropped){var n;a.autoid&&($.isFunction(a.autoid)?n=a.autoid.call(this,f):(n=Math.ceil(1e3*Math.random()),n=a.autoidprefix+n)),$("#"+$.jgrid.jqID(this.id)).jqGrid("addRowData",n,f,a.droppos)}a.ondrop&&$.isFunction(a.ondrop)&&a.ondrop.call(this,b,c,f)}}},a.drop_opts||{})},onstart:null,onstop:null,beforedrop:null,ondrop:null,drop_opts:{activeClass:"ui-state-active",hoverClass:"ui-state-hover"},drag_opts:{revert:"invalid",helper:"clone",cursor:"move",appendTo:"#jqgrid_dnd",zIndex:5e3},dragcopy:!1,dropbyname:!1,droppos:"first",autoid:!0,autoidprefix:"dnd_"},a||{}),a.connectWith)for(a.connectWith=a.connectWith.split(","),a.connectWith=$.map(a.connectWith,function(a){return $.trim(a)}),$.data(e,"dnd",a),0===e.p.reccount||e.p.jqgdnd||b(),e.p.jqgdnd=!0,c=0;c0?d[0]:null}function k(a,b){var c,d=0,e=!0;for(c in a)if(a.hasOwnProperty(c)){if(a[c]!=this[d]){e=!1;break}if(d++,d>=this.length)break}return e&&(p=b),e}function l(a,b,c,d,e){var f;switch(a){case"sum":f=parseFloat(b||0)+parseFloat(d[c]||0);break;case"count":(""===b||null==b)&&(b=0),f=d.hasOwnProperty(c)?b+1:0;break;case"min":f=""===b||null==b?parseFloat(d[c]||0):Math.min(parseFloat(b),parseFloat(d[c]||0));break;case"max":f=""===b||null==b?parseFloat(d[c]||0):Math.max(parseFloat(b),parseFloat(d[c]||0));break;case"avg":f=(parseFloat(b||0)*(e-1)+parseFloat(d[c]||0))/e}return f}function m(a,b,c,d){var e,h,i,j,k=b.length,m="",n=[];for($.isArray(c)?(j=c.length,n=c):(j=1,n[0]=c),f=[],g=[],f.root=0,d._count?d._count++:d._count=1,i=0;j>i;i++){var o,p=[];for(e=0;k>e;e++){if(null==c)h=$.trim(b[e].member)+"_"+b[e].aggregator,o=h,n[0]=b[e].label||b[e].aggregator+" "+$.trim(b[e].member);else{o=c[i].replace(/\s+/g,"");try{h=1===k?m+o:m+o+"_"+b[e].aggregator+"_"+String(e)}catch(q){}n[i]=c[i]}h=isNaN(parseInt(h,10))?h:h+" ",d[h]=p[h]=l(b[e].aggregator,d[h],b[e].member,a,d._count)}m+=c[i].replace(/\s+/g,""),f[h]=p,g[h]=n[i]}return d}function n(a){var b,d,e,f,g;for(e in a)if(a.hasOwnProperty(e)){if("object"!=typeof a[e]){if("level"===e){if(void 0===J[a.level]&&(J[a.level]="",a.level>0&&-1===a.text.indexOf("_r_Totals")&&(i[a.level-1]={useColSpanStyle:!1,groupHeaders:[]})),J[a.level]!==a.text&&a.children.length&&-1===a.text.indexOf("_r_Totals")&&a.level>0){i[a.level-1].groupHeaders.push({titleText:a.label,numberOfColumns:0});var h=i[a.level-1].groupHeaders.length-1,k=0===h?L:K;if(a.level-1===(j.rowTotals?1:0)&&h>0){for(var l=0,m=0;h>m;m++)l+=i[a.level-1].groupHeaders[m].numberOfColumns;l&&(k=l+r)}c[k]&&(i[a.level-1].groupHeaders[h].startColumnName=c[k].name,i[a.level-1].groupHeaders[h].numberOfColumns=c.length-k),K=c.length}J[a.level]=a.text}if(a.level===s&&"level"===e&&s>0)if(t>1){var o=1;for(b in a.fields)a.fields.hasOwnProperty(b)&&(1===o&&i[s-1].groupHeaders.push({startColumnName:b,numberOfColumns:1,titleText:a.label||a.text}),o++);i[s-1].groupHeaders[i[s-1].groupHeaders.length-1].numberOfColumns=o-1}else i.splice(s-1,1)}if(null!=a[e]&&"object"==typeof a[e]&&n(a[e]),"level"===e&&a.level>0&&(a.level===(0===s?a.level:s)||-1!==J[a.level].indexOf("_r_Totals"))){d=0;for(b in a.fields)if(a.fields.hasOwnProperty(b)){g={};for(f in j.aggregates[d])if(j.aggregates[d].hasOwnProperty(f))switch(f){case"member":case"label":case"aggregator":break;default:g[f]=j.aggregates[d][f]}t>1?(g.name=b,g.label=j.aggregates[d].label||a.label):(g.name=a.text,g.label="_r_Totals"===a.text?j.rowTotalsText:a.label),c.push(g),d++}}}}var o,p,q,r,s,t,u,v,w=a.length,x=0;if(j.rowTotals&&j.yDimension.length>0){var y=j.yDimension[0].dataName;j.yDimension.splice(0,0,{dataName:y}),j.yDimension[0].converter=function(){return"_r_Totals"}}if(r=$.isArray(j.xDimension)?j.xDimension.length:0,s=j.yDimension.length,t=$.isArray(j.aggregates)?j.aggregates.length:0,0===r||0===t)throw"xDimension or aggregates optiona are not set!";var z;for(q=0;r>q;q++)z={name:j.xDimension[q].dataName,frozen:j.frozenStaticCols},null==j.xDimension[q].isGroupField&&(j.xDimension[q].isGroupField=!0),z=$.extend(!0,z,j.xDimension[q]),c.push(z);for(var A=r-1,B={};w>x;){o=a[x];var C=[],D=[];u={},q=0;do C[q]=$.trim(o[j.xDimension[q].dataName]),u[j.xDimension[q].dataName]=C[q],q++;while(r>q);var E=0;if(p=-1,v=b(d,k,C)){if(p>=0){if(E=0,s>=1){for(E=0;s>E;E++)D[E]=$.trim(o[j.yDimension[E].dataName]),j.yDimension[E].converter&&$.isFunction(j.yDimension[E].converter)&&(D[E]=j.yDimension[E].converter.call(this,D[E],C,D));v=m(o,j.aggregates,D,v)}else 0===s&&(v=m(o,j.aggregates,null,v));d[p]=v}}else{if(E=0,s>=1){for(E=0;s>E;E++)D[E]=$.trim(o[j.yDimension[E].dataName]),j.yDimension[E].converter&&$.isFunction(j.yDimension[E].converter)&&(D[E]=j.yDimension[E].converter.call(this,D[E],C,D));u=m(o,j.aggregates,D,u)}else 0===s&&(u=m(o,j.aggregates,null,u));d.push(u)}var F,G=0,H=null,I=null;for(F in f)if(f.hasOwnProperty(F)){if(0===G)B.children&&void 0!==B.children||(B={text:F,level:0,children:[],label:F}),H=B.children;else{for(I=null,q=0;q0&&(i[s-1]={useColSpanStyle:!1,groupHeaders:[]}),n(B);var M;if(j.colTotals)for(var N=d.length;N--;)for(q=r;q0)for(q=0;A>q;q++)c[q].isGroupField&&(h.groupingView.groupField.push(c[q].name),h.groupingView.groupSummary.push(j.groupSummary),h.groupingView.groupSummaryPos.push(j.groupSummaryPos));else h.grouping=!1;h.sortname=c[A].name,h.groupingView.hideFirstGroupCol=!0}),{colModel:c,rows:d,groupOptions:h,groupHeaders:i,summary:e}},jqPivot:function(a,b,c,d){return this.each(function(){function e(a){var d,e,g,h,i=jQuery(f).jqGrid("pivotSetup",a,b),j=$.assocArraySize(i.summary)>0?!0:!1,k=$.jgrid.from.call(f,i.rows);for(b.ignoreCase&&(k=k.ignoreCase()),d=0;d"},addSubGrid:function(a,b){return this.each(function(){var c=this;if(c.grid){var d,e,f,g,h,i=$.jgrid.styleUI[c.p.styleUI||"jQueryUI"].base,j=$.jgrid.styleUI[c.p.styleUI||"jQueryUI"].common,k=function(a,b,d){var e=$("").html(b);$(a).append(e)},l=function(a,b){var d,e,f,g=$("
"),h=$("");for(e=0;e"),$(d).html(c.p.subGridModel[0].name[e]),$(d).width(c.p.subGridModel[0].width[e]),$(h).append(d);$(g).append(h),a&&(f=c.p.xmlReader.subgrid,$(f.root+" "+f.row,a).each(function(){if(h=$(""),f.repeatitems===!0)$(f.cell,this).each(function(a){k(h,$(this).text()||" ",a)});else{var a=c.p.subGridModel[0].mapping||c.p.subGridModel[0].name;if(a)for(e=0;e"),n=$("");for(f=0;f"),$(d).html(c.p.subGridModel[0].name[f]),$(d).width(c.p.subGridModel[0].width[f]),$(n).append(d);if($(m).append(n),a&&(h=c.p.jsonReader.subgrid,e=$.jgrid.getAccessor(a,h.root),void 0!==e))for(f=0;f"),h.repeatitems===!0)for(h.cell&&(g=g[h.cell]),l=0;l0&&(r=b,q=b+1);q>r;){if($(c.rows[r]).hasClass("jqgrow")){if(c.p.scroll&&$(c.rows[r].cells[a]).unbind("click"),p=null,s)var p=c.p.isHasSubGrid.call(c,c.rows[r].id);p===!1?c.rows[r].cells[a].innerHTML="":$(c.rows[r].cells[a]).bind("click",function(){var b=$(this).parent("tr")[0];if(e=c.p.id,d=b.id,h=$("#"+e+"_"+d+"_expandedContent"),$(this).hasClass("sgcollapsed")){if(g=$(c).triggerHandler("jqGridSubGridBeforeExpand",[e+"_"+d,d]),g=g===!1||"stop"===g?!1:!0,g&&$.isFunction(c.p.subGridBeforeExpand)&&(g=c.p.subGridBeforeExpand.call(c,e+"_"+d,d)),g===!1)return!1;c.p.subGridOptions.reloadOnExpand===!0||c.p.subGridOptions.reloadOnExpand===!1&&!h.hasClass("ui-subgrid")?(f=a>=1?" ":"",$(b).after(""+f+"
"),$(c).triggerHandler("jqGridSubGridRowExpanded",[e+"_"+d,d]),$.isFunction(c.p.subGridRowExpanded)?c.p.subGridRowExpanded.call(c,e+"_"+d,d):n(b)):h.show().removeClass("ui-sg-collapsed").addClass("ui-sg-expanded"),$(this).html("").removeClass("sgcollapsed").addClass("sgexpanded"),c.p.subGridOptions.selectOnExpand&&$(c).jqGrid("setSelection",d)}else if($(this).hasClass("sgexpanded")){if(g=$(c).triggerHandler("jqGridSubGridRowColapsed",[e+"_"+d,d]),g=g===!1||"stop"===g?!1:!0,g&&$.isFunction(c.p.subGridRowColapsed)&&(g=c.p.subGridRowColapsed.call(c,e+"_"+d,d)),g===!1)return!1;c.p.subGridOptions.reloadOnExpand===!0?h.remove(".ui-subgrid"):h.hasClass("ui-subgrid")&&h.hide().addClass("ui-sg-collapsed").removeClass("ui-sg-expanded"),$(this).html("").removeClass("sgexpanded").addClass("sgcollapsed"),c.p.subGridOptions.selectOnCollapse&&$(c).jqGrid("setSelection",d)}return!1})}r++}c.p.subGridOptions.expandOnLoad===!0&&$(c.rows).filter(".jqgrow").each(function(a,b){$(b.cells[0]).click()}),c.subGridXml=function(a,b){l(a,b)},c.subGridJson=function(a,b){m(a,b)}}})},expandSubGridRow:function(a){return this.each(function(){var b=this;if((b.grid||a)&&b.p.subGrid===!0){var c=$(this).jqGrid("getInd",a,!0);if(c){var d=$("td.sgcollapsed",c)[0];d&&$(d).trigger("click")}}})},collapseSubGridRow:function(a){return this.each(function(){var b=this;if((b.grid||a)&&b.p.subGrid===!0){var c=$(this).jqGrid("getInd",a,!0);if(c){var d=$("td.sgexpanded",c)[0];d&&$(d).trigger("click")}}})},toggleSubGridRow:function(a){return this.each(function(){var b=this;if((b.grid||a)&&b.p.subGrid===!0){var c=$(this).jqGrid("getInd",a,!0);if(c){var d=$("td.sgcollapsed",c)[0];d?$(d).trigger("click"):(d=$("td.sgexpanded",c)[0],d&&$(d).trigger("click"))}}})}}),$.jgrid.extend({setTreeNode:function(a,b){return this.each(function(){var c=this;if(c.grid&&c.p.treeGrid){var d,e,f,g,h,i,j,k,l=c.p.expColInd,m=c.p.treeReader.expanded_field,n=c.p.treeReader.leaf_field,o=c.p.treeReader.level_field,p=c.p.treeReader.icon_field,q=c.p.treeReader.loaded,r=$.jgrid.styleUI[c.p.styleUI||"jQueryUI"].common,s=a;for($(c).triggerHandler("jqGridBeforeSetTreeNode",[s,b]),$.isFunction(c.p.beforeSetTreeNode)&&c.p.beforeSetTreeNode.call(c,s,b);b>a;){var t,u=$.jgrid.stripPref(c.p.idPrefix,c.rows[a].id),v=c.p._index[u];j=c.p.data[v],"nested"===c.p.treeGridModel&&(j[n]||(d=parseInt(j[c.p.treeReader.left_field],10),e=parseInt(j[c.p.treeReader.right_field],10),j[n]=e===d+1?"true":"false",c.rows[a].cells[c.p._treeleafpos].innerHTML=j[n])),f=parseInt(j[o],10),0===c.p.tree_root_level?(g=f+1,h=f):(g=f,h=f-1),i="
",i+="
").prepend(i),f!==parseInt(c.p.tree_root_level,10)&&(t=$(c).jqGrid("isVisibleNode",j),t||$(c.rows[a]).css("display","none")),$(c.rows[a].cells[l]).find("div.treeclick").bind("click",function(a){var b=a.target||a.srcElement,d=$.jgrid.stripPref(c.p.idPrefix,$(b,c.rows).closest("tr.jqgrow")[0].id),e=c.p._index[d];return c.p.data[e][n]||(c.p.data[e][m]?($(c).jqGrid("collapseRow",c.p.data[e]),$(c).jqGrid("collapseNode",c.p.data[e])):($(c).jqGrid("expandRow",c.p.data[e]),$(c).jqGrid("expandNode",c.p.data[e]))),!1}),c.p.ExpandColClick===!0&&$(c.rows[a].cells[l]).find("span.cell-wrapper").css("cursor","pointer").bind("click",function(a){var b=a.target||a.srcElement,d=$.jgrid.stripPref(c.p.idPrefix,$(b,c.rows).closest("tr.jqgrow")[0].id),e=c.p._index[d];return c.p.data[e][n]||(c.p.data[e][m]?($(c).jqGrid("collapseRow",c.p.data[e]),$(c).jqGrid("collapseNode",c.p.data[e])):($(c).jqGrid("expandRow",c.p.data[e]),$(c).jqGrid("expandNode",c.p.data[e]))),$(c).jqGrid("setSelection",d),!1}),a++}$(c).triggerHandler("jqGridAfterSetTreeNode",[s,b]),$.isFunction(c.p.afterSetTreeNode)&&c.p.afterSetTreeNode.call(c,s,b)}})},setTreeGrid:function(){return this.each(function(){var a,b,c,d,e=this,f=0,g=!1,h=[],i=$.jgrid.styleUI[e.p.styleUI||"jQueryUI"].treegrid;if(e.p.treeGrid){e.p.treedatatype||$.extend(e.p,{treedatatype:e.p.datatype}),e.p.loadonce&&(e.p.treedatatype="local"),e.p.subGrid=!1,e.p.altRows=!1,e.p.pgbuttons=!1,e.p.pginput=!1,e.p.gridview=!0,null===e.p.rowTotal&&(e.p.rowNum=1e4),e.p.multiselect=!1,e.p.rowList=[],e.p.expColInd=0,a=i.icon_plus,"jQueryUI"===e.p.styleUI&&(a+="rtl"===e.p.direction?"w":"e"),e.p.treeIcons=$.extend({plus:a,minus:i.icon_minus,leaf:i.icon_leaf},e.p.treeIcons||{}),"nested"===e.p.treeGridModel?e.p.treeReader=$.extend({level_field:"level",left_field:"lft",right_field:"rgt",leaf_field:"isLeaf",expanded_field:"expanded",loaded:"loaded",icon_field:"icon"},e.p.treeReader):"adjacency"===e.p.treeGridModel&&(e.p.treeReader=$.extend({level_field:"level",parent_id_field:"parent",leaf_field:"isLeaf",expanded_field:"expanded",loaded:"loaded",icon_field:"icon"},e.p.treeReader));for(c in e.p.colModel)if(e.p.colModel.hasOwnProperty(c)){b=e.p.colModel[c].name,b!==e.p.ExpandColumn||g||(g=!0,e.p.expColInd=f),f++;for(d in e.p.treeReader)e.p.treeReader.hasOwnProperty(d)&&e.p.treeReader[d]===b&&h.push(b)}$.each(e.p.treeReader,function(a,b){b&&-1===$.inArray(b,h)&&("leaf_field"===a&&(e.p._treeleafpos=f),f++,e.p.colNames.push(b),e.p.colModel.push({name:b,width:1,hidden:!0,sortable:!1,resizable:!1,hidedlg:!0,editable:!0,search:!1}))})}})},expandRow:function(a){this.each(function(){var b=this;if(b.grid&&b.p.treeGrid){var c=$(b).jqGrid("getNodeChildren",a),d=b.p.treeReader.expanded_field,e=a[b.p.localReader.id],f=$.isFunction(b.p.beforeExpandTreeGridRow)?b.p.beforeExpandTreeGridRow.call(b,e,a,c):!0;f!==!1&&($(c).each(function(){var a=b.p.idPrefix+$.jgrid.getAccessor(this,b.p.localReader.id);$($(b).jqGrid("getGridRowById",a)).css("display",""),this[d]&&$(b).jqGrid("expandRow",this)}),$.isFunction(b.p.afterExpandTreeGridRow)&&b.p.afterExpandTreeGridRow.call(b,e,a,c))}})},collapseRow:function(a){this.each(function(){var b=this;if(b.grid&&b.p.treeGrid){var c=$(b).jqGrid("getNodeChildren",a),d=b.p.treeReader.expanded_field,e=a[b.p.localReader.id],f=$.isFunction(b.p.beforeCollapseTreeGridRow)?b.p.beforeCollapseTreeGridRow.call(b,e,a,c):!0;f!==!1&&($(c).each(function(){var a=b.p.idPrefix+$.jgrid.getAccessor(this,b.p.localReader.id);$($(b).jqGrid("getGridRowById",a)).css("display","none"),this[d]&&$(b).jqGrid("collapseRow",this)}),$.isFunction(b.p.afterCollapseTreeGridRow)&&b.p.afterCollapseTreeGridRow.call(b,e,a,c))}})},getRootNodes:function(a){var b=[];return this.each(function(){var c,d,e,f=this;if(f.grid&&f.p.treeGrid)switch("boolean"!=typeof a&&(a=!1),e=a?$(f).jqGrid("getRowData",null,!0):f.p.data,f.p.treeGridModel){case"nested":c=f.p.treeReader.level_field,$(e).each(function(){parseInt(this[c],10)===parseInt(f.p.tree_root_level,10)&&(a?b.push(f.p.data[f.p._index[this[f.p.keyName]]]):b.push(this))});break;case"adjacency":d=f.p.treeReader.parent_id_field,$(e).each(function(){(null===this[d]||"null"===String(this[d]).toLowerCase())&&(a?b.push(f.p.data[f.p._index[this[f.p.keyName]]]):b.push(this))})}}),b},getNodeDepth:function(a){var b=null;return this.each(function(){if(this.grid&&this.p.treeGrid){var c=this;switch(c.p.treeGridModel){case"nested":var d=c.p.treeReader.level_field;b=parseInt(a[d],10)-parseInt(c.p.tree_root_level,10);break;case"adjacency":b=$(c).jqGrid("getNodeAncestors",a).length}}}),b},getNodeParent:function(a){var b=null;return this.each(function(){var c=this;if(c.grid&&c.p.treeGrid)switch(c.p.treeGridModel){case"nested":var d=c.p.treeReader.left_field,e=c.p.treeReader.right_field,f=c.p.treeReader.level_field,g=parseInt(a[d],10),h=parseInt(a[e],10),i=parseInt(a[f],10);$(this.p.data).each(function(){return parseInt(this[f],10)===i-1&&parseInt(this[d],10)h?(b=this,!1):void 0});break;case"adjacency":for(var j=c.p.treeReader.parent_id_field,k=c.p.localReader.id,l=a[k],m=c.p._index[l];m--;)if(c.p.data[m][k]===$.jgrid.stripPref(c.p.idPrefix,a[j])){b=c.p.data[m];break}}}),b},getNodeChildren:function(a,b){var c=[];return this.each(function(){var d=this;if(d.grid&&d.p.treeGrid){var e,f,g=b?this.rows.length:this.p.data.length;switch(d.p.treeGridModel){case"nested":var h=d.p.treeReader.left_field,i=d.p.treeReader.right_field,j=d.p.treeReader.level_field,k=parseInt(a[h],10),l=parseInt(a[i],10),m=parseInt(a[j],10);for(e=0;g>e;e++)f=b?d.p.data[d.p._index[this.rows[e].id]]:d.p.data[e],f&&parseInt(f[j],10)===m+1&&parseInt(f[h],10)>k&&parseInt(f[i],10)e;e++)f=b?d.p.data[d.p._index[this.rows[e].id]]:d.p.data[e],f&&String(f[n])===$.jgrid.stripPref(d.p.idPrefix,a[o])&&c.push(f)}}}),c},getFullTreeNode:function(a,b){var c=[];return this.each(function(){var d,e=this,f=e.p.treeReader.expanded_field;if(e.grid&&e.p.treeGrid)switch((null==b||"boolean"!=typeof b)&&(b=!1),e.p.treeGridModel){case"nested":var g=e.p.treeReader.left_field,h=e.p.treeReader.right_field,i=e.p.treeReader.level_field,j=parseInt(a[g],10),k=parseInt(a[h],10),l=parseInt(a[i],10);$(this.p.data).each(function(){parseInt(this[i],10)>=l&&parseInt(this[g],10)>=j&&parseInt(this[g],10)<=k&&(b&&(this[f]=!0),c.push(this))});break;case"adjacency":if(a){c.push(a);var m=e.p.treeReader.parent_id_field,n=e.p.localReader.id;$(this.p.data).each(function(a){for(d=c.length,a=0;d>a;a++)if($.jgrid.stripPref(e.p.idPrefix,c[a][n])===this[m]){b&&(this[f]=!0),c.push(this);break}})}}}),c},getNodeAncestors:function(a,b,c){var d=[];return void 0===b&&(b=!1),this.each(function(){if(this.grid&&this.p.treeGrid){c=void 0===c?!1:this.p.treeReader.expanded_field;for(var e=$(this).jqGrid("getNodeParent",a);e;){if(c)try{e[c]=!0}catch(f){}b?d.unshift(e):d.push(e),e=$(this).jqGrid("getNodeParent",e)}}}),d},isVisibleNode:function(a){var b=!0;return this.each(function(){var c=this;if(c.grid&&c.p.treeGrid){var d=$(c).jqGrid("getNodeAncestors",a),e=c.p.treeReader.expanded_field;$(d).each(function(){return b=b&&this[e],b?void 0:!1})}}),b},isNodeLoaded:function(a){var b;return this.each(function(){var c=this;if(c.grid&&c.p.treeGrid){var d=c.p.treeReader.leaf_field,e=c.p.treeReader.loaded;b=void 0!==a?void 0!==a[e]?a[e]:a[d]||$(c).jqGrid("getNodeChildren",a).length>0?!0:!1:!1}}),b},setLeaf:function(a,b,c){return this.each(function(){var d=$.jgrid.getAccessor(a,this.p.localReader.id),e=$("#"+d,this.grid.bDiv)[0],f=this.p.treeReader.leaf_field;try{var g=this.p._index[d];null!=g&&(this.p.data[g][f]=b,console.log(this.p.data[g]))}catch(h){}if(b===!0)$("div.treeclick",e).removeClass(this.p.treeIcons.minus+" tree-minus "+this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.leaf+" tree-leaf");else if(b===!1){var i=this.p.treeIcons.minus+" tree-minus";c&&(i=this.p.treeIcons.plus+" tree-plus"),$("div.treeclick",e).removeClass(this.p.treeIcons.leaf+" tree-leaf").addClass(i)}})},reloadNode:function(a,b){return this.each(function(){if(this.grid&&this.p.treeGrid){var c=this.p.localReader.id,d=this.p.selrow;$(this).jqGrid("delChildren",a[c]),void 0===b&&(b=!1),b||jQuery._data(this,"events").jqGridAfterSetTreeNode||$(this).bind("jqGridAfterSetTreeNode.reloadNode",function(){var a=this.p.treeReader.leaf_field;if(this.p.reloadnode){var b=this.p.reloadnode,c=$(this).jqGrid("getNodeChildren",b);b[a]&&c.length?$(this).jqGrid("setLeaf",b,!1):b[a]||0!==c.length||$(this).jqGrid("setLeaf",b,!0)}this.p.reloadnode=!1});var e=this.p.treeReader.expanded_field,f=this.p.treeReader.parent_id_field,g=this.p.treeReader.loaded,h=this.p.treeReader.level_field,i=this.p.treeReader.leaf_field,j=this.p.treeReader.left_field,k=this.p.treeReader.right_field,l=$.jgrid.getAccessor(a,this.p.localReader.id),m=$("#"+l,this.grid.bDiv)[0];a[e]=!0,a[i]||$("div.treeclick",m).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus"),this.p.treeANode=m.rowIndex,this.p.datatype=this.p.treedatatype,this.p.reloadnode=a,b&&(this.p.treeANode=m.rowIndex>0?m.rowIndex-1:1,$(this).jqGrid("delRowData",l)),"nested"===this.p.treeGridModel?$(this).jqGrid("setGridParam",{postData:{nodeid:l,n_left:a[j],n_right:a[k],n_level:a[h]}}):$(this).jqGrid("setGridParam",{postData:{nodeid:l,parentid:a[f],n_level:a[h]}}),$(this).trigger("reloadGrid"),a[g]=!0,"nested"===this.p.treeGridModel?$(this).jqGrid("setGridParam",{selrow:d,postData:{nodeid:"",n_left:"",n_right:"",n_level:""}}):$(this).jqGrid("setGridParam",{selrow:d,postData:{nodeid:"",parentid:"",n_level:""}})}})},expandNode:function(a){return this.each(function(){if(this.grid&&this.p.treeGrid){var b=this.p.treeReader.expanded_field,c=this.p.treeReader.parent_id_field,d=this.p.treeReader.loaded,e=this.p.treeReader.level_field,f=this.p.treeReader.left_field,g=this.p.treeReader.right_field;if(!a[b]){var h=$.jgrid.getAccessor(a,this.p.localReader.id),i=$("#"+this.p.idPrefix+$.jgrid.jqID(h),this.grid.bDiv)[0],j=this.p._index[h],k=$.isFunction(this.p.beforeExpandTreeGridNode)?this.p.beforeExpandTreeGridNode.call(this,h,a):!0;if(k===!1)return;$(this).jqGrid("isNodeLoaded",this.p.data[j])?(a[b]=!0,$("div.treeclick",i).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus")):this.grid.hDiv.loading||(a[b]=!0,$("div.treeclick",i).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus"),this.p.treeANode=i.rowIndex,this.p.datatype=this.p.treedatatype,"nested"===this.p.treeGridModel?$(this).jqGrid("setGridParam",{postData:{nodeid:h,n_left:a[f],n_right:a[g],n_level:a[e]}}):$(this).jqGrid("setGridParam",{postData:{nodeid:h,parentid:a[c],n_level:a[e]}}),$(this).trigger("reloadGrid"),a[d]=!0,"nested"===this.p.treeGridModel?$(this).jqGrid("setGridParam",{postData:{nodeid:"",n_left:"",n_right:"",n_level:""}}):$(this).jqGrid("setGridParam",{postData:{nodeid:"",parentid:"",n_level:""}})),$.isFunction(this.p.afterExpandTreeGridNode)&&this.p.afterExpandTreeGridNode.call(this,h,a)}}})},collapseNode:function(a){return this.each(function(){if(this.grid&&this.p.treeGrid){var b=this.p.treeReader.expanded_field;if(a[b]){var c=$.jgrid.getAccessor(a,this.p.localReader.id),d=$.isFunction(this.p.beforeCollapseTreeGridNode)?this.p.beforeCollapseTreeGridNode.call(this,c,a):!0,e=$("#"+this.p.idPrefix+$.jgrid.jqID(c),this.grid.bDiv)[0];if(a[b]=!1,d===!1)return;$("div.treeclick",e).removeClass(this.p.treeIcons.minus+" tree-minus").addClass(this.p.treeIcons.plus+" tree-plus"),$.isFunction(this.p.afterCollapseTreeGridNode)&&this.p.afterCollapseTreeGridNode.call(this,c,a)}}})},SortTree:function(a,b,c,d){return this.each(function(){if(this.grid&&this.p.treeGrid){var e,f,g,h,i,j=[],k=this,l=$(this).jqGrid("getRootNodes",k.p.search);for(h=$.jgrid.from.call(this,l),h.orderBy(a,b,c,d),i=h.select(),e=0,f=i.length;f>e;e++)g=i[e],j.push(g),$(this).jqGrid("collectChildrenSortTree",j,g,a,b,c,d);$.each(j,function(a){var b=$.jgrid.getAccessor(this,k.p.localReader.id);$("#"+$.jgrid.jqID(k.p.id)+" tbody tr:eq("+a+")").after($("tr#"+$.jgrid.jqID(b),k.grid.bDiv))}),h=null,i=null,j=null}})},searchTree:function(a){var b,c,d,e,f,g,h=a.length||0,i=[],j=[],k=[];return this.each(function(){if(this.grid&&this.p.treeGrid&&h)for(b=this.p.localReader.id;h--;)if(i=$(this).jqGrid("getNodeAncestors",a[h],!0,!0),i.push(a[h]),c=i[0][b],-1===$.inArray(c,j))j.push(c),k=k.concat(i);else for(f=0,d=i.length;d>f;f++){var l=!1;for(g=0,e=k.length;e>g;g++)if(i[f][b]===k[g][b]){l=!0;break}l||k.push(i[f])}}),k},collectChildrenSortTree:function(a,b,c,d,e,f){return this.each(function(){if(this.grid&&this.p.treeGrid){var g,h,i,j,k,l;for(j=$(this).jqGrid("getNodeChildren",b,this.p.search),k=$.jgrid.from.call(this,j),k.orderBy(c,d,e,f),l=k.select(),g=0,h=l.length;h>g;g++)i=l[g],a.push(i),$(this).jqGrid("collectChildrenSortTree",a,i,c,d,e,f)}})},setTreeRow:function(a,b){var c=!1;return this.each(function(){var d=this;d.grid&&d.p.treeGrid&&(c=$(d).jqGrid("setRowData",a,b))}),c},delTreeNode:function(a){return this.each(function(){var b,c,d,e,f,g=this,h=g.p.localReader.id,i=g.p.treeReader.left_field,j=g.p.treeReader.right_field;if(g.grid&&g.p.treeGrid){var k=g.p._index[a];if(void 0!==k){c=parseInt(g.p.data[k][j],10),d=c-parseInt(g.p.data[k][i],10)+1;var l=$(g).jqGrid("getFullTreeNode",g.p.data[k]);if(l.length>0)for(b=0;b0)for(var l=0;l=0)for(;j>=0;)u=Math.max(u,parseInt(e.p.data[j][e.p.localReader.id],10)),j--;a=u+1}var w=$(e).jqGrid("getInd",b);if(l=!1,void 0===b||null===b||""===b)b=null,v=null,f="last",i=e.p.tree_root_level,j=e.p.data.length+1;else{f="after",g=e.p._index[b],h=e.p.data[g],b=h[e.p.localReader.id],i=parseInt(h[p],10)+1;var x=$(e).jqGrid("getFullTreeNode",h);x.length?(j=x[x.length-1][e.p.localReader.id],v=j,j=$(e).jqGrid("getInd",v)+1):j=$(e).jqGrid("getInd",b)+1,h[o]&&(l=!0,h[n]=!0,$(e.rows[w]).find("span.cell-wrapperleaf").removeClass("cell-wrapperleaf").addClass("cell-wrapper").end().find("div.tree-leaf").removeClass(e.p.treeIcons.leaf+" tree-leaf").addClass(e.p.treeIcons.minus+" tree-minus"),e.p.data[g][o]=!1,h[t]=!0)}if(k=j+1,void 0===c[n]&&(c[n]=!1),void 0===c[t]&&(c[t]=!1),c[p]=i,void 0===c[o]&&(c[o]=!0),"adjacency"===e.p.treeGridModel&&(c[q]=b),"nested"===e.p.treeGridModel){var y,z,A;if(null!==b){if(m=parseInt(h[s],10),y=$.jgrid.from.call(e,e.p.data),y=y.greaterOrEquals(s,m,{stype:"integer"}),z=y.select(),z.length)for(A in z)z.hasOwnProperty(A)&&(z[A][r]=z[A][r]>m?parseInt(z[A][r],10)+2:z[A][r],z[A][s]=z[A][s]>=m?parseInt(z[A][s],10)+2:z[A][s]);c[r]=m,c[s]=m+1}else{if(m=parseInt($(e).jqGrid("getCol",s,!1,"max"),10),z=$.jgrid.from.call(e,e.p.data).greater(r,m,{stype:"integer"}).select(),z.length)for(A in z)z.hasOwnProperty(A)&&(z[A][r]=parseInt(z[A][r],10)+2);if(z=$.jgrid.from.call(e,e.p.data).greater(s,m,{stype:"integer"}).select(),z.length)for(A in z)z.hasOwnProperty(A)&&(z[A][s]=parseInt(z[A][s],10)+2);c[r]=m+1,c[s]=m+2}}(null===b||$(e).jqGrid("isNodeLoaded",h)||l)&&($(e).jqGrid("addRowData",a,c,f,v),$(e).jqGrid("setTreeNode",j,k)),h&&!h[n]&&d&&$(e.rows[w]).find("div.treeclick").click()}}}),$.fn.jqDrag=function(a){return i(this,a,"d")},$.fn.jqResize=function(a,b){return i(this,a,"r",b)},$.jqDnR={dnr:{},e:0,drag:function(a){return"d"==M.k?E.css({left:M.X+a.pageX-M.pX,top:M.Y+a.pageY-M.pY}):(E.css({width:Math.max(a.pageX-M.pX+M.W,0),height:Math.max(a.pageY-M.pY+M.H,0)}),M1&&E1.css({width:Math.max(a.pageX-M1.pX+M1.W,0),height:Math.max(a.pageY-M1.pY+M1.H,0)})),!1},stop:function(){$(document).unbind("mousemove",J.drag).unbind("mouseup",J.stop)}};var J=$.jqDnR,M=J.dnr,E=J.e,E1,M1,i=function(a,b,c,d){return a.each(function(){b=b?$(b,a):a,b.bind("mousedown",{e:a,k:c},function(a){var b=a.data,c={};if(E=b.e,E1=d?$(d):!1,"relative"!=E.css("position"))try{E.position(c)}catch(e){}if(M={X:c.left||f("left")||0,Y:c.top||f("top")||0,W:f("width")||E[0].scrollWidth||0,H:f("height")||E[0].scrollHeight||0,pX:a.pageX,pY:a.pageY,k:b.k},M1=E1&&"d"!=b.k?{X:c.left||f1("left")||0,Y:c.top||f1("top")||0,W:E1[0].offsetWidth||f1("width")||0,H:E1[0].offsetHeight||f1("height")||0,pX:a.pageX,pY:a.pageY,k:b.k}:!1,$("input.hasDatepicker",E[0])[0])try{$("input.hasDatepicker",E[0]).datepicker("hide")}catch(g){}return $(document).mousemove($.jqDnR.drag).mouseup($.jqDnR.stop),!1})})},f=function(a){return parseInt(E.css(a),10)||!1},f1=function(a){return parseInt(E1.css(a),10)||!1};$.fn.tinyDraggable=function(a){var b=$.extend({handle:0,exclude:0},a);return this.each(function(){var a,c,d=$(this),e=b.handle?$(b.handle,d):d;e.on({mousedown:function(e){if(!b.exclude||!~$.inArray(e.target,$(b.exclude,d))){e.preventDefault();var f=d.offset();a=e.pageX-f.left,c=e.pageY-f.top,$(document).on("mousemove.drag",function(b){d.offset({top:b.pageY-c,left:b.pageX-a})})}},mouseup:function(a){$(document).off("mousemove.drag")}})})},$.fn.jqm=function(a){var b={overlay:50,closeoverlay:!0,overlayClass:"jqmOverlay",closeClass:"jqmClose",trigger:".jqModal",ajax:F,ajaxText:"",target:F,modal:F,toTop:F,onShow:F,onHide:F,onLoad:F};return this.each(function(){return this._jqm?H[this._jqm].c=$.extend({},H[this._jqm].c,a):(s++,this._jqm=s,H[s]={c:$.extend(b,$.jqm.params,a),a:F,w:$(this).addClass("jqmID"+s),s:s},void(b.trigger&&$(this).jqmAddTrigger(b.trigger)))})},$.fn.jqmAddClose=function(a){return hs(this,a,"jqmHide")},$.fn.jqmAddTrigger=function(a){return hs(this,a,"jqmShow")},$.fn.jqmShow=function(a){return this.each(function(){$.jqm.open(this._jqm,a)})},$.fn.jqmHide=function(a){return this.each(function(){$.jqm.close(this._jqm,a)})},$.jqm={hash:{},open:function(a,b){var c=H[a],d=c.c,f="."+d.closeClass,g=parseInt(c.w.css("z-index"));g=g>0?g:3e3;var h=$("
").css({height:"100%",width:"100%",position:"fixed",left:0,top:0,"z-index":g-1,opacity:d.overlay/100});if(c.a)return F;if(c.t=b,c.a=!0,c.w.css("z-index",g),d.modal?(A[0]||setTimeout(function(){new L("bind")},1),A.push(a)):d.overlay>0?d.closeoverlay&&c.w.jqmAddClose(h):h=F,c.o=h?h.addClass(d.overlayClass).prependTo("body"):F,d.ajax){var i=d.target||c.w,j=d.ajax;i="string"==typeof i?$(i,c.w):$(i),j="@"===j.substr(0,1)?$(b).attr(j.substring(1)):j,i.html(d.ajaxText).load(j,function(){d.onLoad&&d.onLoad.call(this,c),f&&c.w.jqmAddClose($(f,c.w)),e(c)})}else f&&c.w.jqmAddClose($(f,c.w));return d.toTop&&c.o&&c.w.before('').insertAfter(c.o),d.onShow?d.onShow(c):c.w.show(),e(c),F},close:function(a){var b=H[a];return b.a?(b.a=F,A[0]&&(A.pop(),A[0]||new L("unbind")),b.c.toTop&&b.o&&$("#jqmP"+b.w[0]._jqm).after(b.w).remove(),b.c.onHide?b.c.onHide(b):(b.w.hide(),b.o&&b.o.remove()),F):F},params:{}};var s=0,H=$.jqm.hash,A=[],F=!1,e=function(a){void 0===a.c.focusField&&(a.c.focusField=0),a.c.focusField>=0&&f(a)},f=function(a){try{$(":input:visible",a.w)[parseInt(a.c.focusField,10)].focus()}catch(b){}},L=function(a){$(document)[a]("keypress",m)[a]("keydown",m)[a]("mousedown",m)},m=function(a){var b=H[A[A.length-1]],c=!$(a.target).parents(".jqmID"+b.s)[0];return c&&($(".jqmID"+b.s).each(function(){var b=$(this),d=b.offset();return d.top<=a.pageY&&a.pageY<=d.top+b.height()&&d.left<=a.pageX&&a.pageX<=d.left+b.width()?(c=!1,!1):void 0}),f(b)),!c},hs=function(a,b,c){return a.each(function(){var a=this._jqm;$(b).each(function(){this[c]||(this[c]=[],$(this).click(function(){for(var a in{jqmShow:1,jqmHide:1})for(var b in this[a])H[this[a][b]]&&H[this[a][b]].w[a](this);return F})),this[c].push(a)})})};$.fmatter={},$.extend($.fmatter,{isBoolean:function(a){return"boolean"==typeof a},isObject:function(a){return a&&("object"==typeof a||$.isFunction(a))||!1},isString:function(a){return"string"==typeof a},isNumber:function(a){return"number"==typeof a&&isFinite(a)},isValue:function(a){return this.isObject(a)||this.isString(a)||this.isNumber(a)||this.isBoolean(a)},isEmpty:function(a){return!this.isString(a)&&this.isValue(a)?!1:this.isValue(a)?(a=$.trim(a).replace(/\ \;/gi,"").replace(/\ \;/gi,""),""===a):!0}}),$.fn.fmatter=function(a,b,c,d,e){var f=b;c=$.extend({},$.jgrid.getRegional(this,"formatter"),c);try{f=$.fn.fmatter[a].call(this,b,c,d,e)}catch(g){}return f},$.fmatter.util={NumberFormat:function(a,b){if($.fmatter.isNumber(a)||(a*=1),$.fmatter.isNumber(a)){var c,d=0>a,e=String(a),f=b.decimalSeparator||".";if($.fmatter.isNumber(b.decimalPlaces)){var g=b.decimalPlaces,h=Math.pow(10,g);if(e=String(Math.round(a*h)/h),c=e.lastIndexOf("."),g>0)for(0>c?(e+=f,c=e.length-1):"."!==f&&(e=e.replace(".",f));e.length-1-c-1?c:e.length;var j,k=e.substring(c),l=-1;for(j=c;j>0;j--)l++,l%3===0&&j!==c&&(!d||j>1)&&(k=i+k),k=e.charAt(j-1)+k;e=k}return e=b.prefix?b.prefix+e:e,e=b.suffix?e+b.suffix:e}return a}},$.fn.fmatter.defaultFormat=function(a,b){return $.fmatter.isValue(a)&&""!==a?a:b.defaultValue||" "},$.fn.fmatter.email=function(a,b){return $.fmatter.isEmpty(a)?$.fn.fmatter.defaultFormat(a,b):''+a+""},$.fn.fmatter.checkbox=function(a,b){var c,d=$.extend({},b.checkbox);void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(d=$.extend({},d,b.colModel.formatoptions)),c=d.disabled===!0?'disabled="disabled"':"",($.fmatter.isEmpty(a)||void 0===a)&&(a=$.fn.fmatter.defaultFormat(a,d)),a=String(a),a=(a+"").toLowerCase();var e=a.search(/(false|f|0|no|n|off|undefined)/i)<0?" checked='checked' ":"";return'"},$.fn.fmatter.link=function(a,b){var c={target:b.target},d="";return void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(c=$.extend({},c,b.colModel.formatoptions)),c.target&&(d="target="+c.target),$.fmatter.isEmpty(a)?$.fn.fmatter.defaultFormat(a,b):"'+a+""},$.fn.fmatter.showlink=function(a,b){var c,d={baseLinkUrl:b.baseLinkUrl,showAction:b.showAction,addParam:b.addParam||"",target:b.target,idName:b.idName},e="";return void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(d=$.extend({},d,b.colModel.formatoptions)),d.target&&(e="target="+d.target),c=d.baseLinkUrl+d.showAction+"?"+d.idName+"="+b.rowId+d.addParam,$.fmatter.isString(a)||$.fmatter.isNumber(a)?"'+a+"":$.fn.fmatter.defaultFormat(a,b)},$.fn.fmatter.integer=function(a,b){var c=$.extend({},b.integer);return void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(c=$.extend({},c,b.colModel.formatoptions)),$.fmatter.isEmpty(a)?c.defaultValue:$.fmatter.util.NumberFormat(a,c)},$.fn.fmatter.number=function(a,b){var c=$.extend({},b.number);return void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(c=$.extend({},c,b.colModel.formatoptions)),$.fmatter.isEmpty(a)?c.defaultValue:$.fmatter.util.NumberFormat(a,c)},$.fn.fmatter.currency=function(a,b){var c=$.extend({},b.currency);return void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(c=$.extend({},c,b.colModel.formatoptions)),$.fmatter.isEmpty(a)?c.defaultValue:$.fmatter.util.NumberFormat(a,c)},$.fn.fmatter.date=function(a,b,c,d){var e=$.extend({},b.date);return void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(e=$.extend({},e,b.colModel.formatoptions)),e.reformatAfterEdit||"edit"!==d?$.fmatter.isEmpty(a)?$.fn.fmatter.defaultFormat(a,b):$.jgrid.parseDate.call(this,e.srcformat,a,e.newformat,e):$.fn.fmatter.defaultFormat(a,b)},$.fn.fmatter.select=function(a,b){a=String(a);var c,d,e=!1,f=[];if(void 0!==b.colModel.formatoptions?(e=b.colModel.formatoptions.value,c=void 0===b.colModel.formatoptions.separator?":":b.colModel.formatoptions.separator,d=void 0===b.colModel.formatoptions.delimiter?";":b.colModel.formatoptions.delimiter):void 0!==b.colModel.editoptions&&(e=b.colModel.editoptions.value,c=void 0===b.colModel.editoptions.separator?":":b.colModel.editoptions.separator,d=void 0===b.colModel.editoptions.delimiter?";":b.colModel.editoptions.delimiter),e){var g,h=(null!=b.colModel.editoptions&&b.colModel.editoptions.multiple===!0)==!0?!0:!1,i=[];if(h&&(i=a.split(","),i=$.map(i,function(a){return $.trim(a)})),$.fmatter.isString(e)){var j,k=e.split(d),l=0;for(j=0;j2&&(g[1]=$.map(g,function(a,b){return b>0?a:void 0}).join(c)),h)$.inArray(g[0],i)>-1&&(f[l]=g[1],l++);else if($.trim(g[0])===$.trim(a)){f[0]=g[1];break}}else $.fmatter.isObject(e)&&(h?f=$.map(i,function(a){return e[a]}):f[0]=e[a]||"")}return a=f.join(", "),""===a?$.fn.fmatter.defaultFormat(a,b):a},$.fn.fmatter.rowactions=function(a){var b=$(this).closest("tr.jqgrow"),c=b.attr("id"),d=$(this).closest("table.ui-jqgrid-btable").attr("id").replace(/_frozen([^_]*)$/,"$1"),e=$("#"+d),f=e[0],g=f.p,h=g.colModel[$.jgrid.getCellIndex(this)],i=h.frozen?$("tr#"+c+" td:eq("+$.jgrid.getCellIndex(this)+") > div",e):$(this).parent(),j={extraparam:{}},k=function(a,b){$.isFunction(j.afterSave)&&j.afterSave.call(f,a,b),i.find("div.ui-inline-edit,div.ui-inline-del").show(),i.find("div.ui-inline-save,div.ui-inline-cancel").hide()},l=function(a){$.isFunction(j.afterRestore)&&j.afterRestore.call(f,a),i.find("div.ui-inline-edit,div.ui-inline-del").show(),i.find("div.ui-inline-save,div.ui-inline-cancel").hide()};void 0!==h.formatoptions&&(j=$.extend(j,h.formatoptions)),void 0!==g.editOptions&&(j.editOptions=g.editOptions),void 0!==g.delOptions&&(j.delOptions=g.delOptions), +b.hasClass("jqgrid-new-row")&&(j.extraparam[g.prmNames.oper]=g.prmNames.addoper);var m={keys:j.keys,oneditfunc:j.onEdit,successfunc:j.onSuccess,url:j.url,extraparam:j.extraparam,aftersavefunc:k,errorfunc:j.onError,afterrestorefunc:l,restoreAfterError:j.restoreAfterError,mtype:j.mtype};switch(a){case"edit":e.jqGrid("editRow",c,m),i.find("div.ui-inline-edit,div.ui-inline-del").hide(),i.find("div.ui-inline-save,div.ui-inline-cancel").show(),e.triggerHandler("jqGridAfterGridComplete");break;case"save":e.jqGrid("saveRow",c,m)&&(i.find("div.ui-inline-edit,div.ui-inline-del").show(),i.find("div.ui-inline-save,div.ui-inline-cancel").hide(),e.triggerHandler("jqGridAfterGridComplete"));break;case"cancel":e.jqGrid("restoreRow",c,l),i.find("div.ui-inline-edit,div.ui-inline-del").show(),i.find("div.ui-inline-save,div.ui-inline-cancel").hide(),e.triggerHandler("jqGridAfterGridComplete");break;case"del":e.jqGrid("delGridRow",c,j.delOptions);break;case"formedit":e.jqGrid("setSelection",c),e.jqGrid("editGridRow",c,j.editOptions)}},$.fn.fmatter.actions=function(a,b){var c,d={keys:!1,editbutton:!0,delbutton:!0,editformbutton:!1},e=b.rowId,f="",g=$.jgrid.getRegional(this,"nav"),h=$.jgrid.styleUI[b.styleUI||"jQueryUI"].fmatter,i=$.jgrid.styleUI[b.styleUI||"jQueryUI"].common;if(void 0!==b.colModel.formatoptions&&(d=$.extend(d,b.colModel.formatoptions)),void 0===e||$.fmatter.isEmpty(e))return"";var j="onmouseover=jQuery(this).addClass('"+i.hover+"'); onmouseout=jQuery(this).removeClass('"+i.hover+"'); ";return d.editformbutton?(c="id='jEditButton_"+e+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'formedit'); "+j,f+="
"):d.editbutton&&(c="id='jEditButton_"+e+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'edit'); "+j,f+="
"),d.delbutton&&(c="id='jDeleteButton_"+e+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'del'); "+j,f+="
"),c="id='jSaveButton_"+e+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'save'); "+j,f+="",c="id='jCancelButton_"+e+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'cancel'); "+j,f+="","
"+f+"
"},$.unformat=function(a,b,c,d){var e,f,g=b.colModel.formatter,h=b.colModel.formatoptions||{},i=/([\.\*\_\'\(\)\{\}\+\?\\])/g,j=b.colModel.unformat||$.fn.fmatter[g]&&$.fn.fmatter[g].unformat;if(void 0!==j&&$.isFunction(j))e=j.call(this,$(a).text(),b,a);else if(void 0!==g&&$.fmatter.isString(g)){var k,l=$.jgrid.getRegional(this,"formatter")||{};switch(g){case"integer":h=$.extend({},l.integer,h),f=h.thousandsSeparator.replace(i,"\\$1"),k=new RegExp(f,"g"),e=$(a).text().replace(k,"");break;case"number":h=$.extend({},l.number,h),f=h.thousandsSeparator.replace(i,"\\$1"),k=new RegExp(f,"g"),e=$(a).text().replace(k,"").replace(h.decimalSeparator,".");break;case"currency":h=$.extend({},l.currency,h),f=h.thousandsSeparator.replace(i,"\\$1"),k=new RegExp(f,"g"),e=$(a).text(),h.prefix&&h.prefix.length&&(e=e.substr(h.prefix.length)),h.suffix&&h.suffix.length&&(e=e.substr(0,e.length-h.suffix.length)),e=e.replace(k,"").replace(h.decimalSeparator,".");break;case"checkbox":var m=b.colModel.editoptions?b.colModel.editoptions.value.split(":"):["Yes","No"];e=$("input",a).is(":checked")?m[0]:m[1];break;case"select":e=$.unformat.select(a,b,c,d);break;case"actions":return"";default:e=$(a).text()}}return void 0!==e?e:d===!0?$(a).text():$.jgrid.htmlDecode($(a).html())},$.unformat.select=function(a,b,c,d){var e=[],f=$(a).text();if(d===!0)return f;var g=$.extend({},void 0!==b.colModel.formatoptions?b.colModel.formatoptions:b.colModel.editoptions),h=void 0===g.separator?":":g.separator,i=void 0===g.delimiter?";":g.delimiter;if(g.value){var j,k=g.value,l=g.multiple===!0?!0:!1,m=[];if(l&&(m=f.split(","),m=$.map(m,function(a){return $.trim(a)})),$.fmatter.isString(k)){var n,o=k.split(i),p=0;for(n=0;n2&&(j[1]=$.map(j,function(a,b){return b>0?a:void 0}).join(h)),l)$.inArray($.trim(j[1]),m)>-1&&(e[p]=j[0],p++);else if($.trim(j[1])===$.trim(f)){e[0]=j[0];break}}else($.fmatter.isObject(k)||$.isArray(k))&&(l||(m[0]=f),e=$.map(m,function(a){var b;return $.each(k,function(c,d){return d===a?(b=c,!1):void 0}),void 0!==b?b:void 0}));return e.join(", ")}return f||""},$.unformat.date=function(a,b){var c=$.jgrid.getRegional(this,"formatter.date")||{};return void 0!==b.formatoptions&&(c=$.extend({},c,b.formatoptions)),$.fmatter.isEmpty(a)?$.fn.fmatter.defaultFormat(a,b):$.jgrid.parseDate.call(this,c.newformat,a,c.srcformat,c)};var dragging,placeholders=$();$.fn.html5sortable=function(a){var b=String(a);return a=$.extend({connectWith:!1},a),this.each(function(){if(/^enable|disable|destroy$/.test(b)){var c=$(this).children($(this).data("items")).attr("draggable","enable"===b);return void("destroy"===b&&c.add(this).removeData("connectWith items").off("dragstart.h5s dragend.h5s selectstart.h5s dragover.h5s dragenter.h5s drop.h5s"))}var d,e,c=$(this).children(a.items),f=$("<"+(/^ul|ol$/i.test(this.tagName)?"li":/^tbody$/i.test(this.tagName)?"tr":"div")+' class="sortable-placeholder '+a.placeholderClass+'">').html(" ");c.find(a.handle).mousedown(function(){d=!0}).mouseup(function(){d=!1}),$(this).data("items",a.items),placeholders=placeholders.add(f),a.connectWith&&$(a.connectWith).add(this).data("connectWith",a.connectWith),c.attr("draggable","true").on("dragstart.h5s",function(b){if(a.handle&&!d)return!1;d=!1;var c=b.originalEvent.dataTransfer;c.effectAllowed="move",c.setData("Text","dummy"),e=(dragging=$(this)).addClass("sortable-dragging").index()}).on("dragend.h5s",function(){dragging&&(dragging.removeClass("sortable-dragging").show(),placeholders.detach(),e!==dragging.index()&&dragging.parent().trigger("sortupdate",{item:dragging,startindex:e,endindex:dragging.index()}),dragging=null)}).not("a[href], img").on("selectstart.h5s",function(){return this.dragDrop&&this.dragDrop(),!1}).end().add([this,f]).on("dragover.h5s dragenter.h5s drop.h5s",function(b){return c.is(dragging)||a.connectWith===$(dragging).parent().data("connectWith")?"drop"===b.type?(b.stopPropagation(),placeholders.filter(":visible").after(dragging),dragging.trigger("dragend.h5s"),!1):(b.preventDefault(),b.originalEvent.dataTransfer.dropEffect="move",c.is(this)?(a.forcePlaceholderSize&&f.height(dragging.outerHeight()),dragging.hide(),$(this)[f.index()<$(this).index()?"after":"before"](f),placeholders.not(f).detach()):placeholders.is(this)||$(this).children(a.items).length||(placeholders.detach(),$(this).append(f)),!1):!0})})},window.jqGridUtils={stringify:function(a){return JSON.stringify(a,function(a,b){return"function"==typeof b?b.toString():b})},parse:function(str){return JSON.parse(str,function(key,value){return"string"==typeof value&&-1!==value.indexOf("function")?eval("("+value+")"):value})},encode:function(a){return String(a).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")},jsonToXML:function(a,b){var c=$.extend({xmlDecl:'\n',attr_prefix:"-",encode:!0},b||{}),d=this,e=function(a,b){return"#text"===a?c.encode?d.encode(b):b:"function"==typeof b?"<"+a+">\n":""===b?"<"+a+">__EMPTY_STRING_\n":"<"+a+">"+(c.encode?d.encode(b):b)+"\n"},f=function(a,b){for(var c=[],d=0;d":"object"==typeof h&&h.constructor==Array?c[c.length]=f(a,h):"object"==typeof h?c[c.length]=g(a,h):c[c.length]=e(a,h)}return c.length||(c[0]="<"+a+">__EMPTY_ARRAY_\n"),c.join("")},g=function(a,b){var h=[],i=[];for(var j in b)if(b.hasOwnProperty(j)){var k=b[j];j.charAt(0)!==c.attr_prefix?null==k?h[h.length]="<"+j+" />":"object"==typeof k&&k.constructor===Array?h[h.length]=f(j,k):"object"==typeof k?h[h.length]=g(j,k):h[h.length]=e(j,k):i[i.length]=" "+j.substring(1)+'="'+(c.encode?d.encode(k):k)+'"'}var l=i.join(""),m=h.join("");return null==a||(m=h.length>0?m.match(/\n/)?"<"+a+l+">\n"+m+"\n":"<"+a+l+">"+m+"\n":"<"+a+l+" />\n"),m},h=g(null,a);return c.xmlDecl+h},xmlToJSON:function(root,options){var o=$.extend({force_array:[],attr_prefix:"-"},options||{});if(root){var __force_array={};if(o.force_array)for(var i=0;i $::loglevel} return + system plog flexview $msg +} + +httpheader "application/json" + +set start [clock milliseconds] +set name [cgi_get name "default"] + +set fname "/mod/etc/fvConfig_$name.json" +if {[catch {set fd [open $fname r] + set fvconfig [read $fd] + puts $fvconfig + $fd close} msg opts]} { + log "Config file error caught: $msg $opts" 0 + puts "{\"errmsg\": \"File load error $msg\"}" + } + +[settings new] _tval_setting "fvConfig" $name + +set end [clock milliseconds] +set elapse $(double($end-$start)/1000.0) +log "Load | $elapse | $fname" 0 + + diff --git a/webif/plugin/flexview/menu.hook b/webif/plugin/flexview/menu.hook new file mode 100644 index 0000000..196188a --- /dev/null +++ b/webif/plugin/flexview/menu.hook @@ -0,0 +1,7 @@ + +menuitem \ + "Flexible View" \ + "/plugin/flexview/img/flexview.png" \ + "/go/flexview" + # "/plugin/flexview/index.jim" + diff --git a/webif/plugin/flexview/plugins/grid.addons.js b/webif/plugin/flexview/plugins/grid.addons.js new file mode 100644 index 0000000..f02c39f --- /dev/null +++ b/webif/plugin/flexview/plugins/grid.addons.js @@ -0,0 +1,704 @@ +(function($){ +/* + * jqGrid methods without support. Use as you wish + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl-2.0.html + * + * This list of deprecated methods. + * If you instead want to use them, please include this file after the grid main file. + * Some methods will be then overwritten. + * + */ +/*global jQuery, $ */ + +$.jgrid.extend({ +// This is the ols search Filter method used in navigator. + searchGrid : function (p) { + p = $.extend({ + recreateFilter: false, + drag: true, + sField:'searchField', + sValue:'searchString', + sOper: 'searchOper', + sFilter: 'filters', + loadDefaults: true, // this options activates loading of default filters from grid's postData for Multipe Search only. + beforeShowSearch: null, + afterShowSearch : null, + onInitializeSearch: null, + closeAfterSearch : false, + closeAfterReset: false, + closeOnEscape : false, + multipleSearch : false, + cloneSearchRowOnAdd: true, + // translation + // if you want to change or remove the order change it in sopt + // ['bw','eq','ne','lt','le','gt','ge','ew','cn'] + sopt: null, + // Note: stringResult is intentionally declared "undefined by default". + // you are velcome to define stringResult expressly in the options you pass to searchGrid() + // stringResult is a "safeguard" measure to insure we post sensible data when communicated as form-encoded + // see http://github.com/tonytomov/jqGrid/issues/#issue/36 + // + // If this value is not expressly defined in the incoming options, + // lower in the code we will infer the value based on value of multipleSearch + stringResult: undefined, + onClose : null, + // useDataProxy allows ADD, EDIT and DEL code to bypass calling $.ajax + // directly when grid's 'dataProxy' property (grid.p.dataProxy) is a function. + // Used for "editGridRow" and "delGridRow" below and automatically flipped to TRUE + // when ajax setting's 'url' (grid's 'editurl') property is undefined. + // When 'useDataProxy' is true, instead of calling $.ajax.call(gridDOMobj, o, i) we call + // gridDOMobj.p.dataProxy.call(gridDOMobj, o, i) + // + // Behavior is extremely similar to when 'datatype' is a function, but arguments are slightly different. + // Normally the following is fed to datatype.call(a, b, c): + // a = Pointer to grid's table DOM element, b = grid.p.postdata, c = "load_"+grid's ID + // In cases of "edit" and "del" the following is fed: + // a = Pointer to grid's table DOM element (same), + // b = extended Ajax Options including postdata in "data" property. (different object type) + // c = "set_"+grid's ID in case of "edit" and "del_"+grid's ID in case of "del" (same type, different content) + // The major difference is that complete ajax options object, with attached "complete" and "error" + // callback functions is fed instead of only post data. + // This allows you to emulate a $.ajax call (including calling "complete"/"error"), + // while retrieving the data locally in the browser. + useDataProxy: false, + overlay : true + }, $.jgrid.search, p || {}); + return this.each(function() { + var $t = this; + if(!$t.grid) {return;} + var fid = "fbox_"+$t.p.id, + showFrm = true; + function applyDefaultFilters(gridDOMobj, filterSettings) { + /* + gridDOMobj = ointer to grid DOM object ( $(#list)[0] ) + What we need from gridDOMobj: + gridDOMobj.SearchFilter is the pointer to the Search box, once it's created. + gridDOMobj.p.postData - dictionary of post settings. These can be overriden at grid creation to + contain default filter settings. We will parse these and will populate the search with defaults. + filterSettings - same settings object you (would) pass to $().jqGrid('searchGrid', filterSettings); + */ + + // Pulling default filter settings out of postData property of grid's properties.: + var defaultFilters = gridDOMobj.p.postData[filterSettings.sFilter]; + // example of what we might get: {"groupOp":"and","rules":[{"field":"amount","op":"eq","data":"100"}]} + // suppose we have imported this with grid import, the this is a string. + if(typeof(defaultFilters) == "string") { + defaultFilters = $.jgrid.parse(defaultFilters); + } + if (defaultFilters) { + if (defaultFilters.groupOp) { + gridDOMobj.SearchFilter.setGroupOp(defaultFilters.groupOp); + } + if (defaultFilters.rules) { + var f, i = 0, li = defaultFilters.rules.length, success = false; + for (; i < li; i++) { + f = defaultFilters.rules[i]; + // we are not trying to counter all issues with filter declaration here. Just the basics to avoid lookup exceptions. + if (f.field !== undefined && f.op !== undefined && f.data !== undefined) { + success = gridDOMobj.SearchFilter.setFilter({ + 'sfref':gridDOMobj.SearchFilter.$.find(".sf:last"), + 'filter':$.extend({},f) + }); + if (success) { gridDOMobj.SearchFilter.add(); } + } + } + } + } + } // end of applyDefaultFilters + function hideFilter(selector) { + if(p.onClose){ + var fclm = p.onClose(selector); + if(typeof fclm == 'boolean' && !fclm) { return; } + } + selector.hide(); + if(p.overlay === true) { + $(".jqgrid-overlay:first","#gbox_"+$t.p.id).hide(); + } + } + function showFilter(){ + var fl = $(".ui-searchFilter").length; + if(fl > 1) { + var zI = $("#"+fid).css("zIndex"); + $("#"+fid).css({zIndex:parseInt(zI,10)+fl}); + } + $("#"+fid).show(); + if(p.overlay === true) { + $(".jqgrid-overlay:first","#gbox_"+$t.p.id).show(); + } + try{$(':input:visible',"#"+fid)[0].focus();}catch(_){} + } + function searchFilters(filters) { + var hasFilters = (filters !== undefined), + grid = $("#"+$t.p.id), + sdata={}; + if(p.multipleSearch===false) { + sdata[p.sField] = filters.rules[0].field; + sdata[p.sValue] = filters.rules[0].data; + sdata[p.sOper] = filters.rules[0].op; + if(sdata.hasOwnProperty(p.sFilter) ) { + delete sdata[p.sFilter]; + } + } else { + sdata[p.sFilter] = filters; + $.each([p.sField, p.sValue, p.sOper], function(i, n){ + if(sdata.hasOwnProperty(n)) { delete sdata[n];} + }); + } + grid[0].p.search = hasFilters; + $.extend(grid[0].p.postData,sdata); + grid.trigger("reloadGrid",[{page:1}]); + if(p.closeAfterSearch) { hideFilter($("#"+fid)); } + } + function resetFilters(op) { + var reload = op && op.hasOwnProperty("reload") ? op.reload : true, + grid = $("#"+$t.p.id), + sdata={}; + grid[0].p.search = false; + if(p.multipleSearch===false) { + sdata[p.sField] = sdata[p.sValue] = sdata[p.sOper] = ""; + } else { + sdata[p.sFilter] = ""; + } + $.extend(grid[0].p.postData,sdata); + if(reload) { + grid.trigger("reloadGrid",[{page:1}]); + } + if(p.closeAfterReset) { hideFilter($("#"+fid)); } + } + if($.fn.searchFilter) { + if(p.recreateFilter===true) {$("#"+fid).remove();} + if( $("#"+fid).html() !== null ) { + if ( $.isFunction(p.beforeShowSearch) ) { + showFrm = p.beforeShowSearch($("#"+fid)); + if(typeof(showFrm) == "undefined") { + showFrm = true; + } + } + if(showFrm === false) { return; } + showFilter(); + if( $.isFunction(p.afterShowSearch) ) { p.afterShowSearch($("#"+fid)); } + } else { + var fields = [], + colNames = $("#"+$t.p.id).jqGrid("getGridParam","colNames"), + colModel = $("#"+$t.p.id).jqGrid("getGridParam","colModel"), + stempl = ['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc'], + j,pos,k,oprtr=[]; + if (p.sopt !==null) { + k=0; + for(j=0;j