commit a0a273350eb30435b5061e26eb781b1120a928fc Author: MymsMan Date: Wed Mar 11 15:15:47 2020 +0000 First commit of version 0.1.1-2 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 0000000..c3f1be9 Binary files /dev/null and b/webif/plugin/flexview/img/NotDecrypted.png differ diff --git a/webif/plugin/flexview/img/flexview.png b/webif/plugin/flexview/img/flexview.png new file mode 100644 index 0000000..18c7a90 Binary files /dev/null and b/webif/plugin/flexview/img/flexview.png differ diff --git a/webif/plugin/flexview/img/flexviewB.png b/webif/plugin/flexview/img/flexviewB.png new file mode 100644 index 0000000..f361ca3 Binary files /dev/null and b/webif/plugin/flexview/img/flexviewB.png differ diff --git a/webif/plugin/flexview/img/refresh02.png b/webif/plugin/flexview/img/refresh02.png new file mode 100644 index 0000000..8cd162e Binary files /dev/null and b/webif/plugin/flexview/img/refresh02.png differ diff --git a/webif/plugin/flexview/img/view.gif b/webif/plugin/flexview/img/view.gif new file mode 100644 index 0000000..d3b22ce Binary files /dev/null and b/webif/plugin/flexview/img/view.gif differ 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