diff --git a/addons/base/static/LABjs/LAB.js b/addons/base/static/lib/LABjs/LAB.js similarity index 100% rename from addons/base/static/LABjs/LAB.js rename to addons/base/static/lib/LABjs/LAB.js diff --git a/addons/base/static/lib/jquery.jqGrid/Changes.txt b/addons/base/static/lib/jquery.jqGrid/Changes.txt new file mode 100644 index 00000000000..4494fbd555c --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/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/addons/base/static/lib/jquery.jqGrid/build.properties b/addons/base/static/lib/jquery.jqGrid/build.properties new file mode 100644 index 00000000000..2a1d763639d --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/build.properties @@ -0,0 +1,8 @@ +# Path for the Google Compiler jar file. By default in the same directory as this properties file. +GoogleCompiler = compiler.jar + +srcdir = js +distdir = dist + +target = jquery.jqGrid.js +target.min = jquery.jqGrid.min.js \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/build.xml b/addons/base/static/lib/jquery.jqGrid/build.xml new file mode 100644 index 00000000000..5886de11f72 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/build.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/base/static/lib/jquery.jqGrid/css/ellipsis-xbl.xml b/addons/base/static/lib/jquery.jqGrid/css/ellipsis-xbl.xml new file mode 100644 index 00000000000..b293657d8d2 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/css/ellipsis-xbl.xml @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/addons/base/static/lib/jquery.jqGrid/css/ui.jqgrid.css b/addons/base/static/lib/jquery.jqGrid/css/ui.jqgrid.css new file mode 100644 index 00000000000..dc4b37b2372 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/css/ui.jqgrid.css @@ -0,0 +1,139 @@ +/*Grid*/ +.ui-jqgrid {position: relative; font-size:11px;} +.ui-jqgrid .ui-jqgrid-view {position: relative;left:0px; top: 0px; padding: .0em;} +/* caption*/ +.ui-jqgrid .ui-jqgrid-titlebar {padding: .3em .2em .2em .3em; position: relative; border-left: 0px none;border-right: 0px none; border-top: 0px none;} +.ui-jqgrid .ui-jqgrid-title { float: left; 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;}.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: 0em;padding: 0em; overflow-x: hidden; overflow-y: auto; border-left: 0px none !important; border-top : 0px none !important; border-right : 0px none !important;} +.ui-jqgrid .ui-jqgrid-hbox {float: left; padding-right: 20px;} +.ui-jqgrid .ui-jqgrid-htable {table-layout:fixed;margin:0em;} +.ui-jqgrid .ui-jqgrid-htable th {height:22px;padding: 0 2px 0 2px;} +.ui-jqgrid .ui-jqgrid-htable th div {overflow: hidden; position:relative; height:17px;} +.ui-th-column, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column {overflow: hidden;white-space: nowrap;text-align:center;border-top : 0px none;border-bottom : 0px none;} +.ui-th-ltr, .ui-jqgrid .ui-jqgrid-htable th.ui-th-ltr {border-left : 0px none;} +.ui-th-rtl, .ui-jqgrid .ui-jqgrid-htable th.ui-th-rtl {border-right : 0px none;} +.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;height:12px;} +.ui-jqgrid .ui-i-asc {margin-top:0px;height:16px;} +.ui-jqgrid .ui-i-desc {margin-top:0px;margin-left:13px;height:16px;} +.ui-jqgrid .ui-jqgrid-sortable {cursor:pointer;} +.ui-jqgrid tr.ui-search-toolbar th { border-top-width: 1px !important; border-top-color: inherit !important; border-top-style: ridge !important } +tr.ui-search-toolbar input {margin: 1px 0px 0px 0px} +tr.ui-search-toolbar select {margin: 1px 0px 0px 0px} +/* body */ +.ui-jqgrid .ui-jqgrid-bdiv {position: relative; margin: 0em; padding:0; overflow: auto; text-align:left;} +.ui-jqgrid .ui-jqgrid-btable {table-layout:fixed; margin:0em;} +.ui-jqgrid tr.jqgrow 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.jqgfirstrow td {padding: 0 2px 0 2px;border-right-width: 1px; border-right-style: solid;} +.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: 0px; border: 0px 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;} +/* footer */ +.ui-jqgrid .ui-jqgrid-sdiv {position: relative; margin: 0em;padding: 0em; overflow: hidden; border-left: 0px none !important; border-top : 0px none !important; border-right : 0px none !important;} +.ui-jqgrid .ui-jqgrid-ftable {table-layout:fixed; margin-bottom:0em;} +.ui-jqgrid tr.footrow td {font-weight: bold; overflow: hidden; white-space:nowrap; height: 21px;padding: 0 2px 0 2px;border-top-width: 1px; border-top-color: inherit; border-top-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: 0px none !important;border-right: 0px none !important; border-bottom: 0px none !important; margin: 0px !important; padding: 0px !important; position: relative; height: 25px;white-space: nowrap;overflow: hidden;} +.ui-jqgrid .ui-pager-control {position: relative;} +.ui-jqgrid .ui-pg-table {position: relative; padding-bottom:2px; width:auto; margin: 0em;} +.ui-jqgrid .ui-pg-table td {font-weight:normal; vertical-align:middle; padding:1px;} +.ui-jqgrid .ui-pg-button { height:19px !important;} +.ui-jqgrid .ui-pg-button span { display: block; margin: 1px; float:left;} +.ui-jqgrid .ui-pg-button:hover { padding: 0px; } +.ui-jqgrid .ui-state-disabled:hover {padding:1px;} +.ui-jqgrid .ui-pg-input { height:13px;font-size:.8em; margin: 0em;} +.ui-jqgrid .ui-pg-selbox {font-size:.8em; line-height:18px; display:block; height:18px; margin: 0em;} +.ui-jqgrid .ui-separator {height: 18px; border-left: 1px solid #ccc ; border-right: 1px solid #ccc ; margin: 1px; float: right;} +.ui-jqgrid .ui-paging-info {font-weight: normal;height:19px; margin-top:3px;margin-right:4px;} +.ui-jqgrid .ui-jqgrid-pager .ui-pg-div {padding:1px 0;float:left;list-style-image:none;list-style-position:outside;list-style-type:none;position:relative;} +.ui-jqgrid .ui-jqgrid-pager .ui-pg-button { cursor:pointer; } +.ui-jqgrid .ui-jqgrid-pager .ui-pg-div span.ui-icon {float:left;margin:0 2px;} +.ui-jqgrid td input, .ui-jqgrid td select .ui-jqgrid td textarea { margin: 0em;} +.ui-jqgrid td textarea {width:auto;height:auto;} +.ui-jqgrid .ui-jqgrid-toppager {border-left: 0px none !important;border-right: 0px none !important; border-top: 0px none !important; margin: 0px !important; padding: 0px !important; position: relative; height: 25px !important;white-space: nowrap;overflow: hidden;} +/*subgrid*/ +.ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span {display: block;} +.ui-jqgrid .ui-subgrid {margin:0em;padding:0em; 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: 0px none !important;} +.ui-jqgrid .ui-subgrid td.subgrid-cell {border-width: 0px 0px 1px 0px;} +.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;} +.ui-jqgrid .jqgrid-overlay {display:none;z-index:100;} +* 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;width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');} +/* end loading div */ +/* toolbar */ +.ui-jqgrid .ui-userdata {border-left: 0px none; border-right: 0px none; height : 21px;overflow: hidden; } +/*Modal Window */ +.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; } +.ui-jqdialog .ui-jqdialog-title { margin: .1em 0 .2em; } +.ui-jqdialog .ui-jqdialog-titlebar-close { position: absolute; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } + +.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;} +/* end Modal window*/ +/* Form edit */ +.ui-jqdialog-content .FormGrid {margin: 0px;} +.ui-jqdialog-content .EditTable { width: 100%; margin-bottom:0em;} +.ui-jqdialog-content .DelTable { width: 100%; margin-bottom:0em;} +.EditTable td input, .EditTable td select, .EditTable td textarea {margin: 0em;} +.EditTable td textarea { width:auto; height:auto;} +.ui-jqdialog-content td.EditButton {text-align: right;border-top: 0px none;border-left: 0px none;border-right: 0px none; padding-bottom:5px; padding-top:5px;} +.ui-jqdialog-content td.navButton {text-align: center; border-left: 0px none;border-top: 0px none;border-right: 0px none; padding-bottom:5px; padding-top:5px;} +.ui-jqdialog-content input.FormElement {padding:.3em} +.ui-jqdialog-content .data-line {padding-top:.1em;border: 0px none;} + +.ui-jqdialog-content .CaptionTD {text-align: left; vertical-align: middle;border: 0px none; padding: 2px;white-space: nowrap;} +.ui-jqdialog-content .DataTD {padding: 2px; border: 0px none; vertical-align: top;} +.ui-jqdialog-content .form-view-data {white-space:pre} +.fm-button { display: inline-block; margin:0 4px 0 0; padding: .4em .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; } +/* End Eorm edit */ +/*.ui-jqgrid .edit-cell {}*/ +.ui-jqgrid .selected-row, div.ui-jqgrid .selected-row td {font-style : normal;border-left: 0px none;} +/* 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 */ +.jqmOverlay { background-color: #000; } +* 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-title-rtl {float:right;margin: .1em 0 .2em; } +.ui-jqgrid .ui-jqgrid-hbox-rtl {float: right; padding-left: 20px;} +.ui-jqgrid .ui-jqgrid-resize-ltr {float: right;margin: -2px -2px -2px 0px;} +.ui-jqgrid .ui-jqgrid-resize-rtl {float: left;margin: -2px 0px -1px -3px;} +.ui-jqgrid .ui-sort-rtl {left:0px;} +.ui-jqgrid .tree-wrap-ltr {float: left;} +.ui-jqgrid .tree-wrap-rtl {float: right;} +.ui-jqgrid .ui-ellipsis {text-overflow:ellipsis; -moz-binding:url('ellipsis-xbl.xml#ellipsis');} +.ui-searchFilter { display: none; position: absolute; z-index: 770; overflow: visible;} +.ui-searchFilter table {position:relative; margin:0em; width:auto} +.ui-searchFilter table td {margin: 0em; padding: 1px;} +.ui-searchFilter table td input, .ui-searchFilter table td select {margin: 0.1em;} +.ui-searchFilter .ui-state-default { cursor: pointer; } +.ui-searchFilter .divider hr {margin: 1px; } \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/install.txt b/addons/base/static/lib/jquery.jqGrid/install.txt new file mode 100644 index 00000000000..5407b35b2c4 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/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/addons/base/static/lib/jquery.jqGrid/jquery.jqGrid.js b/addons/base/static/lib/jquery.jqGrid/jquery.jqGrid.js new file mode 100644 index 00000000000..456276b77ff --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/jquery.jqGrid.js @@ -0,0 +1,50 @@ +//This file should be used if you want to debug and develop +function jqGridInclude() +{ + var pathtojsfiles = "/base/static/jquery.jqGrid/js/"; // need to be ajusted + // set include to false if you do not want some modules to be included + var modules = [ + { include: true, incfile:'i18n/grid.locale-en.js'}, // jqGrid translation + { include: true, incfile:'grid.base.js'}, // jqGrid base + { include: true, incfile:'grid.common.js'}, // jqGrid common for editing + { include: true, incfile:'grid.formedit.js'}, // jqGrid Form editing + { include: true, incfile:'grid.inlinedit.js'}, // jqGrid inline editing + { include: true, incfile:'grid.celledit.js'}, // jqGrid cell editing + { include: true, incfile:'grid.subgrid.js'}, //jqGrid subgrid + { include: true, incfile:'grid.treegrid.js'}, //jqGrid treegrid + { include: true, incfile:'grid.grouping.js'}, //jqGrid grouping + { include: true, incfile:'grid.custom.js'}, //jqGrid custom + { include: true, incfile:'grid.tbltogrid.js'}, //jqGrid table to grid + { include: true, incfile:'grid.import.js'}, //jqGrid import + { include: true, incfile:'jquery.fmatter.js'}, //jqGrid formater + { include: true, incfile:'JsonXml.js'}, //xmljson utils + { include: true, incfile:'grid.jqueryui.js'}, //jQuery UI utils + { include: true, incfile:'grid.filter.js'} // filter Plugin + ]; + var filename; + for(var i=0;i'); + } else { + IncludeJavaScript(filename); + } + } + } + } + function IncludeJavaScript(jsFile) + { + var oHead = document.getElementsByTagName('head')[0]; + var oScript = document.createElement('script'); + oScript.setAttribute('type', 'text/javascript'); + oScript.setAttribute('language', 'javascript'); + oScript.setAttribute('src', jsFile); + oHead.appendChild(oScript); + } +} +jqGridInclude(); diff --git a/addons/base/static/lib/jquery.jqGrid/js/JsonXml.js b/addons/base/static/lib/jquery.jqGrid/js/JsonXml.js new file mode 100644 index 00000000000..e682ebe9eaf --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/JsonXml.js @@ -0,0 +1,338 @@ +/* + The below work is licensed under Creative Commons GNU LGPL License. + + Original work: + + License: http://creativecommons.org/licenses/LGPL/2.1/ + Author: Stefan Goessner/2006 + Web: http://goessner.net/ + + Modifications made: + + Version: 0.9-p5 + Description: Restructured code, JSLint validated (no strict whitespaces), + added handling of empty arrays, empty strings, and int/floats values. + Author: Michael Schøler/2008-01-29 + Web: http://michael.hinnerup.net/blog/2008/01/26/converting-json-to-xml-and-xml-to-json/ + + Description: json2xml added support to convert functions as CDATA + so it will be easy to write characters that cause some problems when convert + Author: Tony Tomov +*/ + +/*global alert */ +var xmlJsonClass = { + // Param "xml": Element or document DOM node. + // Param "tab": Tab or indent string for pretty output formatting omit or use empty string "" to supress. + // Returns: JSON string + xml2json: function(xml, tab) { + if (xml.nodeType === 9) { + // document node + xml = xml.documentElement; + } + var nws = this.removeWhite(xml); + var obj = this.toObj(nws); + var json = this.toJson(obj, xml.nodeName, "\t"); + return "{\n" + tab + (tab ? json.replace(/\t/g, tab) : json.replace(/\t|\n/g, "")) + "\n}"; + }, + + // Param "o": JavaScript object + // Param "tab": tab or indent string for pretty output formatting omit or use empty string "" to supress. + // Returns: XML string + json2xml: function(o, tab) { + var toXml = function(v, name, ind) { + var xml = ""; + var i, n; + if (v instanceof Array) { + if (v.length === 0) { + xml += ind + "<"+name+">__EMPTY_ARRAY_\n"; + } + else { + for (i = 0, n = v.length; i < n; i += 1) { + var sXml = ind + toXml(v[i], name, ind+"\t") + "\n"; + xml += sXml; + } + } + } + else if (typeof(v) === "object") { + var hasChild = false; + xml += ind + "<" + name; + var m; + for (m in v) if (v.hasOwnProperty(m)) { + if (m.charAt(0) === "@") { + xml += " " + m.substr(1) + "=\"" + v[m].toString() + "\""; + } + else { + hasChild = true; + } + } + xml += hasChild ? ">" : "/>"; + if (hasChild) { + for (m in v) if (v.hasOwnProperty(m)) { + if (m === "#text") { + xml += v[m]; + } + else if (m === "#cdata") { + xml += ""; + } + else if (m.charAt(0) !== "@") { + xml += toXml(v[m], m, ind+"\t"); + } + } + xml += (xml.charAt(xml.length - 1) === "\n" ? ind : "") + ""; + } + } + else if (typeof(v) === "function") { + xml += ind + "<" + name + ">" + "" + ""; + } + else { + if (v.toString() === "\"\"" || v.toString().length === 0) { + xml += ind + "<" + name + ">__EMPTY_STRING_"; + } + else { + xml += ind + "<" + name + ">" + v.toString() + ""; + } + } + return xml; + }; + var xml = ""; + var m; + for (m in o) if (o.hasOwnProperty(m)) { + xml += toXml(o[m], m, ""); + } + return tab ? xml.replace(/\t/g, tab) : xml.replace(/\t|\n/g, ""); + }, + // Internal methods + toObj: function(xml) { + var o = {}; + var FuncTest = /function/i; + if (xml.nodeType === 1) { + // element node .. + if (xml.attributes.length) { + // element with attributes .. + var i; + for (i = 0; i < xml.attributes.length; i += 1) { + o["@" + xml.attributes[i].nodeName] = (xml.attributes[i].nodeValue || "").toString(); + } + } + if (xml.firstChild) { + // element has child nodes .. + var textChild = 0, cdataChild = 0, hasElementChild = false; + var n; + for (n = xml.firstChild; n; n = n.nextSibling) { + if (n.nodeType === 1) { + hasElementChild = true; + } + else if (n.nodeType === 3 && n.nodeValue.match(/[^ \f\n\r\t\v]/)) { + // non-whitespace text + textChild += 1; + } + else if (n.nodeType === 4) { + // cdata section node + cdataChild += 1; + } + } + if (hasElementChild) { + if (textChild < 2 && cdataChild < 2) { + // structured element with evtl. a single text or/and cdata node .. + this.removeWhite(xml); + for (n = xml.firstChild; n; n = n.nextSibling) { + if (n.nodeType === 3) { + // text node + o["#text"] = this.escape(n.nodeValue); + } + else if (n.nodeType === 4) { + // cdata node + if (FuncTest.test(n.nodeValue)) { + o[n.nodeName] = [o[n.nodeName], n.nodeValue]; + } else { + o["#cdata"] = this.escape(n.nodeValue); + } + } + else if (o[n.nodeName]) { + // multiple occurence of element .. + if (o[n.nodeName] instanceof Array) { + o[n.nodeName][o[n.nodeName].length] = this.toObj(n); + } + else { + o[n.nodeName] = [o[n.nodeName], this.toObj(n)]; + } + } + else { + // first occurence of element .. + o[n.nodeName] = this.toObj(n); + } + } + } + else { + // mixed content + if (!xml.attributes.length) { + o = this.escape(this.innerXml(xml)); + } + else { + o["#text"] = this.escape(this.innerXml(xml)); + } + } + } + else if (textChild) { + // pure text + if (!xml.attributes.length) { + o = this.escape(this.innerXml(xml)); + if (o === "__EMPTY_ARRAY_") { + o = "[]"; + } else if (o === "__EMPTY_STRING_") { + o = ""; + } + } + else { + o["#text"] = this.escape(this.innerXml(xml)); + } + } + else if (cdataChild) { + // cdata + if (cdataChild > 1) { + o = this.escape(this.innerXml(xml)); + } + else { + for (n = xml.firstChild; n; n = n.nextSibling) { + if(FuncTest.test(xml.firstChild.nodeValue)) { + o = xml.firstChild.nodeValue; + break; + } else { + o["#cdata"] = this.escape(n.nodeValue); + } + } + } + } + } + if (!xml.attributes.length && !xml.firstChild) { + o = null; + } + } + else if (xml.nodeType === 9) { + // document.node + o = this.toObj(xml.documentElement); + } + else { + alert("unhandled node type: " + xml.nodeType); + } + return o; + }, + toJson: function(o, name, ind, wellform) { + if(wellform === undefined) wellform = true; + var json = name ? ("\"" + name + "\"") : "", tab = "\t", newline = "\n"; + if(!wellform) { + tab= ""; newline= ""; + } + + if (o === "[]") { + json += (name ? ":[]" : "[]"); + } + else if (o instanceof Array) { + var n, i, ar=[]; + for (i = 0, n = o.length; i < n; i += 1) { + ar[i] = this.toJson(o[i], "", ind + tab, wellform); + } + json += (name ? ":[" : "[") + (ar.length > 1 ? (newline + ind + tab + ar.join(","+newline + ind + tab) + newline + ind) : ar.join("")) + "]"; + } + else if (o === null) { + json += (name && ":") + "null"; + } + else if (typeof(o) === "object") { + var arr = [], m; + for (m in o) { + if (o.hasOwnProperty(m)) { + arr[arr.length] = this.toJson(o[m], m, ind + tab, wellform); + } + } + json += (name ? ":{" : "{") + (arr.length > 1 ? (newline + ind + tab + arr.join(","+newline + ind + tab) + newline + ind) : arr.join("")) + "}"; + } + else if (typeof(o) === "string") { + /* + var objRegExp = /(^-?\d+\.?\d*$)/; + var FuncTest = /function/i; + var os = o.toString(); + if (objRegExp.test(os) || FuncTest.test(os) || os==="false" || os==="true") { + // int or float + json += (name && ":") + "\"" +os + "\""; + } + else { + */ + json += (name && ":") + "\"" + o.replace(/\\/g,'\\\\').replace(/\"/g,'\\"') + "\""; + //} + } + else { + json += (name && ":") + "\"" + o.toString()+ "\""; + } + return json; + }, + innerXml: function(node) { + var s = ""; + if ("innerHTML" in node) { + s = node.innerHTML; + } + else { + var asXml = function(n) { + var s = "", i; + if (n.nodeType === 1) { + s += "<" + n.nodeName; + for (i = 0; i < n.attributes.length; i += 1) { + s += " " + n.attributes[i].nodeName + "=\"" + (n.attributes[i].nodeValue || "").toString() + "\""; + } + if (n.firstChild) { + s += ">"; + for (var c = n.firstChild; c; c = c.nextSibling) { + s += asXml(c); + } + s += ""; + } + else { + s += "/>"; + } + } + else if (n.nodeType === 3) { + s += n.nodeValue; + } + else if (n.nodeType === 4) { + s += ""; + } + return s; + }; + for (var c = node.firstChild; c; c = c.nextSibling) { + s += asXml(c); + } + } + return s; + }, + escape: function(txt) { + return txt.replace(/[\\]/g, "\\\\").replace(/[\"]/g, '\\"').replace(/[\n]/g, '\\n').replace(/[\r]/g, '\\r'); + }, + removeWhite: function(e) { + e.normalize(); + var n; + for (n = e.firstChild; n; ) { + if (n.nodeType === 3) { + // text node + if (!n.nodeValue.match(/[^ \f\n\r\t\v]/)) { + // pure whitespace text node + var nxt = n.nextSibling; + e.removeChild(n); + n = nxt; + } + else { + n = n.nextSibling; + } + } + else if (n.nodeType === 1) { + // element node + this.removeWhite(n); + n = n.nextSibling; + } + else { + // any other node + n = n.nextSibling; + } + } + return e; + } +}; \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/grid.base.js b/addons/base/static/lib/jquery.jqGrid/js/grid.base.js new file mode 100644 index 00000000000..11adb4a269e --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/grid.base.js @@ -0,0 +1,3124 @@ +/* + * jqGrid 3.8.2 - jQuery Grid + * Copyright (c) 2008, 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 + * Date: 2010-12-14 + */ +//jsHint options +/*global document, window, jQuery, DOMParser, ActiveXObject $ */ + +(function ($) { + +$.jgrid = $.jgrid || {}; +$.extend($.jgrid,{ + htmlDecode : function(value){ + if(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(/])*>/gi; + if (v) { + v = v.replace(regexp,""); + return (v && v !== ' ' && v !== ' ') ? v.replace(/\"/g,"'") : ""; + } else { + return v; + } + }, + stringToDoc : function (xmlString) { + var xmlDoc; + if(typeof xmlString !== 'string') { return xmlString; } + try { + var parser = new DOMParser(); + xmlDoc = parser.parseFromString(xmlString,"text/xml"); + } + catch(e) { + xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + xmlDoc.async=false; + xmlDoc.loadXML(xmlString); + } + return (xmlDoc && xmlDoc.documentElement && xmlDoc.documentElement.tagName != 'parsererror') ? xmlDoc : null; + }, + 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) { + var tsp = {m : 1, d : 1, y : 1970, h : 0, i : 0, s : 0},k,hl,dM, regdate = /[\\\/:_;.,\t\T\s-]/; + if(date && date !== null && date !== undefined){ + date = $.trim(date); + date = date.split(regdate); + format = format.split(regdate); + var dfmt = $.jgrid.formatter.date.monthNames; + var afmt = $.jgrid.formatter.date.AmPm; + var h12to24 = function(ampm, h){ + if (ampm === 0){ if (h == 12) { h = 0;} } + else { if (h != 12) { h += 12; } } + return h; + }; + for(k=0,hl=format.length;k 11){date[k] = dM+1-12;} + } + if(format[k] == 'a') { + dM = $.inArray(date[k],afmt); + if(dM !== -1 && dM < 2 && date[k] == afmt[dM]){ + date[k] = dM; + tsp.h = h12to24(date[k], tsp.h); + } + } + if(format[k] == 'A') { + dM = $.inArray(date[k],afmt); + if(dM !== -1 && dM > 1 && date[k] == afmt[dM]){ + date[k] = dM-2; + tsp.h = h12to24(date[k], tsp.h); + } + } + if(date[k] !== undefined) { + tsp[format[k].toLowerCase()] = parseInt(date[k],10); + } + } + tsp.m = parseInt(tsp.m,10)-1; + var ty = tsp.y; + if (ty >= 70 && ty <= 99) {tsp.y = 1900+tsp.y;} + else if (ty >=0 && ty <=69) {tsp.y= 2000+tsp.y;} + } + return new Date(tsp.y, tsp.m, tsp.d, tsp.h, tsp.i, tsp.s,0); + }, + jqID : function(sid){ + sid = sid + ""; + return sid.replace(/([\.\:\[\]])/g,"\\$1"); + }, + 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; + }, + ajaxOptions: {}, + from : function(source,initalQuery){ + // Original Author Hugo Bonacci + // License MIT http://jlinq.codeplex.com/license + var 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, + _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()"; + }else{ + return""; + } + }; + this._group=function(f,u){ + return({field:f.toString(),unique:u,items:[]}); + }; + this._toStr=function(phrase){ + if(_trim){ + phrase=$.trim(phrase); + } + if(!_usecase){ + phrase=phrase.toLowerCase(); + } + phrase=phrase.toString().replace(/\\/g,'\\\\').replace(/\"/g,'\\"'); + return phrase; + }; + this._funcLoop=function(func){ + var results=[]; + $.each(_data,function(i,v){ + results.push(func(v)); + }); + return results; + }; + this._append=function(s){ + if(_query===null){ + _query=""; + } else { + _query+=_queuedOperator === "" ? " && " :_queuedOperator; + } + if(_negate){ + _query+="!"; + } + _query+="("+s+")"; + _negate=false; + _queuedOperator=""; + }; + 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){ + 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(!_usecase && typeof(a) !== "number" && typeof(b) !== "number" ) { + a=String(a).toLowerCase(); + b=String(b).toLowerCase(); + } + 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; + if(q==_sorting.length-1){ + return self._getOrder(d, by, dir, type, dfmt); + } + q++; + var values=self._getGroup(d,by,dir,type,dfmt); + var results=[]; + for(var 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.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='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(t.newfmt || 'Y-m-d',val).getTime()); + fld = 'jQuery.jgrid.parseDate("'+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===undefined || v===null) ? f: v, + length=_trim ? $.trim(val.toString()).length : val.toString().length; + if(_useProperties){ + self._append(self._getStr('this.'+f)+'.substr(0,'+length+') == '+self._getStr('"'+self._toStr(v)+'"')); + }else{ + 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===undefined || v===null) ? f: v, + length=_trim ? $.trim(val.toString()).length:val.toString().length; + if(_useProperties){ + self._append(self._getStr('this.'+f)+'.substr('+self._getStr('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('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){ + dir = dir === undefined || dir === null ? "a" :$.trim(dir.toString().toLowerCase()); + if(stype === null || stype === undefined) { stype = "text"; } + if(dfmt === null || dfmt === undefined) { dfmt = "Y-m-d"; } + if(dir=="desc"||dir=="descending"){dir="d";} + if(dir=="asc"||dir=="ascending"){dir="a";} + _sorting.push({by:by,dir:dir,type:stype, datefmt: dfmt}); + return self; + }; + return self; + }; + return new queryObject(source,null); + }, + extend : function(methods) { + $.extend($.fn.jqGrid,methods); + if (!this.no_legacy_api) { + $.fn.extend(methods); + } + } +}); + +$.fn.jqGrid = function( pin ) { + if (typeof pin == 'string') { + //var fn = $.fn.jqGrid[pin]; + var fn = $.jgrid.getAccessor($.fn.jqGrid,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 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, + loadComplete: null, + gridComplete: null, + loadError: null, + loadBeforeSend: null, + afterInsertRow: null, + beforeRequest: 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: 20, + gridview: false, + rownumWidth: 25, + 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:[], groupDataSorted : false, summary:[],summaryval:[], plusicon: 'ui-icon-circlesmall-plus', minusicon: 'ui-icon-circlesmall-minus'}, + ignoreCase : false, + cmTemplate : {} + }, $.jgrid.defaults, pin || {}); + var grid={ + headers:[], + cols:[], + footers: [], + dragStart: function(i,x,y) { + this.resizing = { idx: i, startX: x.clientX, sOL : y[0]}; + 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:y[0],top:y[1],height:y[2]}); + if($.isFunction(p.resizeStart)) { p.resizeStart.call(this,x,i); } + document.onselectstart=function(){return false;}; + }, + dragMove: function(x) { + if(this.resizing) { + var diff = x.clientX-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 >33) { + h.newWidth = newWidth; + hn.newWidth = nWn; + } + } else { + this.newWidth = p.direction === "ltr" ? p.tblwidth+diff : p.tblwidth-diff; + h.newWidth = newWidth; + } + } + } + }, + dragEnd: function() { + 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($.isFunction(p.resizeStop)) { p.resizeStop.call(this,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 = $("> tbody > tr:gt(0):visible:first", table); + var rh = rows.outerHeight() || 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) <= p.lastpage)) + { + npage = parseInt((dh - tbot + div - 1) / div,10); + if (tbot >= 0 || npage < 2 || p.scroll === true) { + page = Math.round((tbot + scrollTop) / div) + 1; + ttop = -1; + } else { + ttop = 1; + } + } + if (ttop > 0) { + page = parseInt(scrollTop / div,10) + 1; + npage = parseInt((scrollTop + dh) / div,10) + 2 - page; + empty = true; + } + if (npage) { + if (p.lastpage && page > p.lastpage || p.lastpage==1) { + return; + } + if (grid.hDiv.loading) { + grid.timer = setTimeout(grid.populateVisible, p.scrollTimeout); + } else { + p.page = page; + if (empty) { + grid.selectionPreserver(table[0]); + grid.emptyRows(grid.bDiv,false); + } + grid.populate(npage); + } + } + }, + scrollGrid: function() { + 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; + } + }, + selectionPreserver : function(ts) { + var p = ts.p; + var sr = p.selrow, sra = p.selarrrow ? $.makeArray(p.selarrrow) : null; + var left = ts.grid.bDiv.scrollLeft; + var complete = p.gridComplete; + p.gridComplete = function() { + p.selrow = null; + p.selarrrow = []; + if(p.multiselect && sra && sra.length>0) { + for(var i=0;i"), ii, + isMSIE = $.browser.msie ? true:false, + isSafari = $.browser.safari ? true : false; + ts = this; + ts.p.direction = $.trim(ts.p.direction.toLowerCase()); + if($.inArray(ts.p.direction,["ltr","rtl"]) == -1) { ts.p.direction = "ltr"; } + dir = ts.p.direction; + + $(gv).insertBefore(this); + $(this).appendTo(gv).removeClass("scroll"); + var eg = $("
"); + $(eg).insertBefore(gv).attr({"id" : "gbox_"+this.id,"dir":dir}); + $(gv).appendTo(eg).attr("id","gview_"+this.id); + if (isMSIE && $.browser.version <= 6) { + ii = ''; + } else { ii="";} + $("
").append(ii).insertBefore(gv); + $("
"+this.p.loadtext+"
").insertBefore(gv); + $(this).attr({cellspacing:"0",cellpadding:"0",border:"0","role":"grid","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 ? defval : 0;} + else {return val;} + }, + formatCol = function (pos, rowInd, tv, rawObject, rowId, rdata){ + var cm = ts.p.colModel[pos], + 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 (cm.cellattr && $.isFunction(cm.cellattr)) + { + celp = cm.cellattr.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.split("style"); + if(acp.length === 2 ) { + acp[1] = $.trim(acp[1].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 === undefined || val === null || val === "" ? " " : (ts.p.autoencode ? $.jgrid.htmlEncode(val) : val+""); + }, + formatter = function (rowId, cellval , colpos, rwdat, _act){ + var cm = ts.p.colModel[colpos],v; + if(typeof cm.formatter !== 'undefined') { + var opts= {rowId: rowId, colModel:cm, gid:ts.p.id, pos:colpos }; + if($.isFunction( cm.formatter ) ) { + v = cm.formatter.call(ts,cellval,opts,rwdat,_act); + } else if($.fmatter){ + v = $.fn.fmatter(cm.formatter, cellval,opts, rwdat, _act); + } else { + v = cellVal(cellval); + } + } else { + v = cellVal(cellval); + } + return v; + }, + addCell = function(rowId,cell,pos,irow, srvr) { + var v,prp; + v = formatter(rowId,cell,pos,srvr,'add'); + prp = formatCol( pos,irow, v, srvr, rowId, true); + return ""+v+""; + }, + addMulti = function(rowid,pos,irow){ + var v = "", + prp = formatCol( pos,irow,'',null, rowid, true); + return ""+v+""; + }, + addRowNum = function (pos,irow,pG,rN) { + 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; idiv:first", parent).css({height:"auto"}).children("div:first").css({height:0,display:"none"}); + parent.scrollTop = 0; + } + }, + refreshIndex = function() { + var datalen = ts.p.data.length, idname, i, val, + ni = ts.p.rownumbers===true ? 1 :0, + gi = ts.p.multiselect ===true ? 1 :0, + si = ts.p.subGrid===true ? 1 :0; + + if(ts.p.keyIndex === false || ts.p.loadonce === true) { + idname = ts.p.localReader.id; + } else { + idname = ts.p.colModel[ts.p.keyIndex+gi+si+ni].name; + } + for(i =0;i < datalen; i++) { + val = $.jgrid.getAccessor(ts.p.data[i],idname); + ts.p._index[val] = i; + } + }, + addXmlData = function (xml,t, rcnt, more, adjust) { + var startReq = new Date(), + locdata = (ts.p.datatype != "local" && ts.p.loadonce) || ts.p.datatype == "xmlstring", + xmlid, + frd = ts.p.datatype == "local" ? "local" : "xml"; + if(locdata) { + ts.p.data = []; + ts.p._index = {}; + ts.p.localReader.id = xmlid = "_id_"; + } + ts.p.reccount = 0; + if($.isXMLDoc(xml)) { + if(ts.p.treeANode===-1 && !ts.p.scroll) { + emptyRows(t,false); + rcnt=1; + } else { rcnt = rcnt > 1 ? rcnt :1; } + } else { return; } + var i,fpos,ir=0,v,row,gi=0,si=0,ni=0,idn, getId,f=[],F,rd ={}, xmlr,rid, rowData=[], cn=(ts.p.altRows === true) ? " "+ts.p.altclass:"",cn1; + if(!ts.p.xmlReader.repeatitems) {f = reader(frd);} + if( ts.p.keyIndex===false) { + idn = ts.p.xmlReader.id; + } else { + idn = ts.p.keyIndex; + } + if(f.length>0 && !isNaN(idn)) { + if (ts.p.remapColumns && ts.p.remapColumns.length) { + idn = $.inArray(idn, ts.p.remapColumns); + } + idn=f[idn]; + } + if( (idn+"").indexOf("[") === -1 ) { + if (f.length) { + getId = function( trow, k) {return $(idn,trow).text() || k;}; + } else { + getId = function( trow, k) {return $(ts.p.xmlReader.cell,trow).eq(idn).text() || k;}; + } + } + else { + getId = function( trow, k) {return trow.getAttribute(idn.replace(/[\[\]]/g,"")) || k;}; + } + ts.p.userData = {}; + $(ts.p.xmlReader.page,xml).each(function() {ts.p.page = this.textContent || this.text || 0; }); + $(ts.p.xmlReader.total,xml).each(function() {ts.p.lastpage = this.textContent || this.text; if(ts.p.lastpage===undefined) { ts.p.lastpage=1; } } ); + $(ts.p.xmlReader.records,xml).each(function() {ts.p.records = this.textContent || this.text || 0; } ); + $(ts.p.xmlReader.userdata,xml).each(function() {ts.p.userData[this.getAttribute("name")]=this.textContent || this.text;}); + var gxml = $(ts.p.xmlReader.root+" "+ts.p.xmlReader.row,xml); + if (!gxml) { gxml = []; } + var gl = gxml.length, j=0, grpdata={}, rn; + if(gxml && gl){ + rn = parseInt(ts.p.rowNum,10); + var br=ts.p.scroll?(parseInt(ts.p.page,10)-1)*rn+1:1,altr; + if (adjust) { rn *= adjust+1; } + var afterInsRow = $.isFunction(ts.p.afterInsertRow), hiderow=""; + if(ts.p.grouping && ts.p.groupingView.groupCollapse === true) { + hiderow = " style=\"display:none;\""; + } + while (j" ); + if(ts.p.rownumbers===true) { + rowData.push( addRowNum(0,j,ts.p.page,ts.p.rowNum) ); + ni=1; + } + if(ts.p.multiselect===true) { + rowData.push( addMulti(rid,ni,j) ); + gi=1; + } + if (ts.p.subGrid===true) { + rowData.push( $(ts).jqGrid("addSubGridCell",gi+ni,j+rcnt) ); + si= 1; + } + if(ts.p.xmlReader.repeatitems){ + if (!F) { F=orderedCols(gi+si+ni); } + var cells = $(ts.p.xmlReader.cell,xmlr); + $.each(F, function (k) { + var cell = cells[this]; + if (!cell) { return false; } + v = cell.textContent || cell.text; + rd[ts.p.colModel[k+gi+si+ni].name] = v; + rowData.push( addCell(rid,v,k+gi+si+ni,j+rcnt,xmlr) ); + }); + } else { + for(i = 0; i < f.length;i++) { + v = $(f[i],xmlr).text(); + rd[ts.p.colModel[i+gi+si+ni].name] = v; + rowData.push( addCell(rid, v, i+gi+si+ni, j+rcnt, xmlr) ); + } + } + rowData.push(""); + if(ts.p.grouping) { + var grlen = ts.p.groupingView.groupField.length, grpitem = []; + for(var z=0;z -1 ? ts.p.treeANode: 0; + row = $(rowData.join(''))[0]; // speed overhead + $(ts.rows[j+fpos]).after(row); + try {$(ts).jqGrid("setTreeNode",rd,row);} catch (e) {} + } else { + $("tbody:first",t).append(rowData.join('')); + } + if (ts.p.subGrid===true) { + try {$(ts).jqGrid("addSubGrid",ts.rows[ts.rows.length-1],gi+ni);} catch (_){} + } + if(afterInsRow) {ts.p.afterInsertRow.call(ts,rid,rd,xmlr);} + rowData=[]; + } + rd={}; + ir++; + j++; + if(ir==rn) {break;} + } + } + if(ts.p.gridview === true) { + if(ts.p.grouping) { + $(ts).jqGrid('groupingRender',grpdata,ts.p.colModel.length); + grpdata = null; + } else { + $("tbody:first",t).append(rowData.join('')); + } + } + ts.p.totaltime = new Date() - startReq; + if(ir>0) { if(ts.p.records===0) { ts.p.records=gl;} } + rowData =null; + if(!ts.p.treeGrid && !ts.p.scroll) {ts.grid.bDiv.scrollTop = 0;} + ts.p.reccount=ir; + ts.p.treeANode = -1; + if(ts.p.userDataOnFooter) { $(ts).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, frd, + locdata = (ts.p.datatype != "local" && ts.p.loadonce) || ts.p.datatype == "jsonstring"; + if(locdata) { ts.p.data = []; ts.p._index = {}; locid = ts.p.localReader.id = "_id_";} + ts.p.reccount = 0; + if(ts.p.datatype == "local") { + dReader = ts.p.localReader; + frd= 'local'; + } else { + dReader = ts.p.jsonReader; + frd='json'; + } + var ir=0,v,i,j,row,f=[],F,cur,gi=0,si=0,ni=0,len,drows,idn,rd={}, fpos, idr,rowData=[],cn=(ts.p.altRows === true) ? " "+ts.p.altclass:"",cn1,lp; + ts.p.page = $.jgrid.getAccessor(data,dReader.page) || 0; + lp = $.jgrid.getAccessor(data,dReader.total); + ts.p.lastpage = lp === undefined ? 1 : lp; + ts.p.records = $.jgrid.getAccessor(data,dReader.records) || 0; + ts.p.userData = $.jgrid.getAccessor(data,dReader.userdata) || {}; + if(!dReader.repeatitems) { + F = f = reader(frd); + } + if( ts.p.keyIndex===false ) { + idn = dReader.id; + } else { + idn = ts.p.keyIndex; + } + if(f.length>0 && !isNaN(idn)) { + if (ts.p.remapColumns && ts.p.remapColumns.length) { + idn = $.inArray(idn, ts.p.remapColumns); + } + idn=f[idn]; + } + drows = $.jgrid.getAccessor(data,dReader.root); + if (!drows) { drows = []; } + len = drows.length; i=0; + var rn = parseInt(ts.p.rowNum,10),br=ts.p.scroll?(parseInt(ts.p.page,10)-1)*rn+1:1, altr; + if (adjust) { rn *= adjust+1; } + var afterInsRow = $.isFunction(ts.p.afterInsertRow), grpdata={}, hiderow=""; + if(ts.p.grouping && ts.p.groupingView.groupCollapse === true) { + hiderow = " style=\"display:none;\""; + } + while (i"); + if(ts.p.rownumbers===true) { + rowData.push( addRowNum(0,i,ts.p.page,ts.p.rowNum) ); + ni=1; + } + if(ts.p.multiselect){ + rowData.push( addMulti(idr,ni,i) ); + gi = 1; + } + if (ts.p.subGrid) { + rowData.push( $(ts).jqGrid("addSubGridCell",gi+ni,i+rcnt) ); + si= 1; + } + if (dReader.repeatitems) { + if(dReader.cell) {cur = $.jgrid.getAccessor(cur,dReader.cell);} + if (!F) { F=orderedCols(gi+si+ni); } + } + for (j=0;j" ); + if(ts.p.grouping) { + var grlen = ts.p.groupingView.groupField.length, grpitem = []; + for(var z=0;z -1 ? ts.p.treeANode: 0; + row = $(rowData.join(''))[0]; + $(ts.rows[i+fpos]).after(row); + try {$(ts).jqGrid("setTreeNode",rd,row);} catch (e) {} + } else { + $("#"+$.jgrid.jqID(ts.p.id)+" tbody:first").append(rowData.join('')); + } + if(ts.p.subGrid === true ) { + try { $(ts).jqGrid("addSubGrid",ts.rows[ts.rows.length-1],gi+ni);} catch (_){} + } + 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 ) { + if(ts.p.grouping) { + $(ts).jqGrid('groupingRender',grpdata,ts.p.colModel.length); + grpdata = null; + } else { + $("#"+$.jgrid.jqID(ts.p.id)+" tbody:first").append(rowData.join('')); + } + } + ts.p.totaltime = new Date() - startReq; + if(ir>0) { + if(ts.p.records===0) { ts.p.records=len; } + } + rowData = null; + if(!ts.p.treeGrid && !ts.p.scroll) {ts.grid.bDiv.scrollTop = 0;} + ts.p.reccount=ir; + ts.p.treeANode = -1; + if(ts.p.userDataOnFooter) { $(ts).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 (ir0) { + var result = query.select(); + query = $.jgrid.from( result); + } + try{ + 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(); + } + query = compareFnMap[rule.op](query, opr)(rule.field, rule.data, cmtypes[rule.field]); + } + s++; + } + } 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 { + query = compareFnMap[ts.p.postData.searchOper](query)(ts.p.postData.searchField, ts.p.postData.searchString,cmtypes[ts.p.postData.searchField]); + } catch (se){} + } + } + if(ts.p.grouping) { + query.orderBy(grindexes,grpview.groupOrder[0],grtypes[0].stype, grtypes[0].srcfmt); + grpview.groupDataSorted = true; + } + if (st && ts.p.sortorder && fndsort) { + if(ts.p.sortorder.toUpperCase() == "DESC") { + query.orderBy(ts.p.sortname, "d", cmtypes[st].stype, cmtypes[st].srcfmt); + } else { + query.orderBy(ts.p.sortname, "a", cmtypes[st].stype, cmtypes[st].srcfmt); + } + } + var queryResults = query.select(), + recordsperpage = parseInt(ts.p.rowNum,10), + total = queryResults.length, + page = parseInt(ts.p.page,10), + totalpages = Math.ceil(total / recordsperpage), + retresult = {}; + queryResults = queryResults.slice( (page-1)*recordsperpage , page*recordsperpage ); + query = null; + cmtypes = null; + retresult[ts.p.localReader.total] = totalpages; + retresult[ts.p.localReader.page] = page; + retresult[ts.p.localReader.records] = total; + retresult[ts.p.localReader.root] = queryResults; + queryResults = null; + return retresult; + }, + updatepager = function(rn, dnd) { + var cp, last, base, from,to,tot,fmt, pgboxes = ""; + base = parseInt(ts.p.page,10)-1; + if(base < 0) { base = 0; } + base = base*parseInt(ts.p.rowNum,10); + to = base + ts.p.reccount; + if (ts.p.scroll) { + var rows = $("tbody:first > 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"}); + } + ts.grid.bDiv.scrollLeft = ts.grid.hDiv.scrollLeft; + } + pgboxes = ts.p.pager ? ts.p.pager : ""; + pgboxes += ts.p.toppager ? (pgboxes ? "," + ts.p.toppager : ts.p.toppager) : ""; + if(pgboxes) { + fmt = $.jgrid.formatter.integer || {}; + cp = intNum(ts.p.page); + last = intNum(ts.p.lastpage); + $(".selbox",pgboxes).attr("disabled",false); + if(ts.p.pginput===true) { + $('.ui-pg-input',pgboxes).val(ts.p.page); + $('#sp_1',pgboxes).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(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); + } + $(".ui-paging-info",pgboxes).html($.jgrid.format(ts.p.recordtext,from,to,tot)); + } + } + if(ts.p.pgbuttons===true) { + if(cp<=0) {cp = last = 0;} + if(cp==1 || cp === 0) { + $("#first, #prev",ts.p.pager).addClass('ui-state-disabled').removeClass('ui-state-hover'); + if(ts.p.toppager) { $("#first_t, #prev_t",ts.p.toppager).addClass('ui-state-disabled').removeClass('ui-state-hover'); } + } else { + $("#first, #prev",ts.p.pager).removeClass('ui-state-disabled'); + if(ts.p.toppager) { $("#first_t, #prev_t",ts.p.toppager).removeClass('ui-state-disabled'); } + } + if(cp==last || cp === 0) { + $("#next, #last",ts.p.pager).addClass('ui-state-disabled').removeClass('ui-state-hover'); + if(ts.p.toppager) { $("#next_t, #last_t",ts.p.toppager).addClass('ui-state-disabled').removeClass('ui-state-hover'); } + } else { + $("#next, #last",ts.p.pager).removeClass('ui-state-disabled'); + if(ts.p.toppager) { $("#next_t, #last_t",ts.p.toppager).removeClass('ui-state-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');} + if($.isFunction(ts.p.gridComplete)) {ts.p.gridComplete.call(ts);} + }, + beginReq = function() { + ts.grid.hDiv.loading = true; + if(ts.p.hiddengrid) { return;} + switch(ts.p.loadui) { + case "disable": + break; + case "enable": + $("#load_"+$.jgrid.jqID(ts.p.id)).show(); + break; + case "block": + $("#lui_"+$.jgrid.jqID(ts.p.id)).show(); + $("#load_"+$.jgrid.jqID(ts.p.id)).show(); + break; + } + }, + endReq = function() { + ts.grid.hDiv.loading = false; + switch(ts.p.loadui) { + case "disable": + break; + case "enable": + $("#load_"+$.jgrid.jqID(ts.p.id)).hide(); + break; + case "block": + $("#lui_"+$.jgrid.jqID(ts.p.id)).hide(); + $("#load_"+$.jgrid.jqID(ts.p.id)).hide(); + break; + } + }, + populate = function (npage) { + if(!ts.grid.hDiv.loading) { + var pvis = ts.p.scroll && npage === false; + var prm = {}, dt, dstr, pN=ts.p.prmNames; + if(ts.p.page <=0) { ts.p.page = 1; } + 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 lc = ts.p.loadComplete; + var lcf = $.isFunction(lc); + if (!lcf) { lc = 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'); + if(ts.p.groupingView.groupDataSorted === true) { + prm[pN.sort] = ts.p.groupingView.groupField[0] +" "+ ts.p.groupingView.groupOrder[0]+", "+prm[pN.sort]; + } + } + $.extend(ts.p.postData,prm); + var rcnt = !ts.p.scroll ? 1 : ts.rows.length-1; + if ($.isFunction(ts.p.datatype)) { ts.p.datatype.call(ts,ts.p.postData,"load_"+ts.p.id); return;} + else if($.isFunction(ts.p.beforeRequest)) {ts.p.beforeRequest.call(ts);} + dt = ts.p.datatype.toLowerCase(); + switch(dt) + { + case "json": + case "jsonp": + case "xml": + case "script": + $.ajax($.extend({ + url:ts.p.url, + type:ts.p.mtype, + dataType: dt , + data: $.isFunction(ts.p.serializeGridData)? ts.p.serializeGridData.call(ts,ts.p.postData) : ts.p.postData, + success:function(data,st) { + if(dt === "xml") { addXmlData(data,ts.grid.bDiv,rcnt,npage>1,adjust); } + else { addJSONData(data,ts.grid.bDiv,rcnt,npage>1,adjust); } + if(lc) { lc.call(ts,data); } + if (pvis) { ts.grid.populateVisible(); } + if( ts.p.loadonce || ts.p.treeGrid) {ts.p.datatype = "local";} + data=null; + endReq(); + }, + error:function(xhr,st,err){ + if($.isFunction(ts.p.loadError)) { ts.p.loadError.call(ts,xhr,st,err); } + endReq(); + xhr=null; + }, + beforeSend: function(xhr){ + beginReq(); + if($.isFunction(ts.p.loadBeforeSend)) { ts.p.loadBeforeSend.call(ts,xhr); } + } + },$.jgrid.ajaxOptions, ts.p.ajaxGridOptions)); + break; + case "xmlstring": + beginReq(); + dstr = $.jgrid.stringToDoc(ts.p.datastr); + addXmlData(dstr,ts.grid.bDiv); + if(lcf) {ts.p.loadComplete.call(ts,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.grid.bDiv); + if(lcf) {ts.p.loadComplete.call(ts,dstr);} + ts.p.datatype = "local"; + ts.p.datastr = null; + endReq(); + break; + case "local": + case "clientside": + beginReq(); + ts.p.datatype = "local"; + var req = addLocalData(); + addJSONData(req,ts.grid.bDiv,rcnt,npage>1,adjust); + if(lc) { lc.call(ts,req); } + if (pvis) { ts.grid.populateVisible(); } + endReq(); + break; + } + } + }, + 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){ + var ret; + if ($.isFunction(ts.p.onPaging) ) { ret = ts.p.onPaging.call(ts,onpaging); } + ts.p.selrow = null; + if(ts.p.multiselect) {ts.p.selarrrow =[];$('#cb_'+$.jgrid.jqID(ts.p.id),ts.grid.hDiv).attr("checked",false);} + ts.p.savedRow = []; + if(ret=='stop') {return false;} + return true; + }; + pgid = pgid.substr(1); + 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.format(ts.p.pgtext || "","","")+"";} + if(ts.p.pgbuttons===true) { + var po=["first"+tp,"prev"+tp, "next"+tp,"last"+tp]; if(dir=="rtl") { po.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 = $(".ui-jqgrid").css("font-size") || "11px"; + $(document.body).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() { + ts.p.page = Math.round(ts.p.rowNum*(ts.p.page-1)/this.value-0.5)+1; + ts.p.rowNum = this.value; + if(tp) { $('.ui-pg-selbox',ts.p.pager).val(this.value); } + else if(ts.p.toppager) { $('.ui-pg-selbox',ts.p.toppager).val(this.value); } + if(!clearVals('records')) { return false; } + populate(); + return false; + }); + if(ts.p.pgbuttons===true) { + $(".ui-pg-button","#"+pgcnt).hover(function(e){ + if($(this).hasClass('ui-state-disabled')) { + this.style.cursor='default'; + } else { + $(this).addClass('ui-state-hover'); + this.style.cursor='pointer'; + } + },function(e) { + if($(this).hasClass('ui-state-disabled')) { + } else { + $(this).removeClass('ui-state-hover'); + this.style.cursor= "default"; + } + }); + $("#first"+tp+", #prev"+tp+", #next"+tp+", #last"+tp,"#"+pgid).click( function(e) { + 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>1 && cp 1 && cp===0 ) { np=false;lp=false; cp=last-1;} + 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) { + if(!clearVals(this.id)) { return false; } + populate(); + } + return false; + }); + } + if(ts.p.pginput===true) { + $('input.ui-pg-input',"#"+pgcnt).keypress( function(e) { + var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0; + if(key == 13) { + ts.p.page = ($(this).val()>0) ? $(this).val():ts.p.page; + if(!clearVals('user')) { return false; } + populate(); + return false; + } + return this; + }); + } + }, + sortData = function (index, idxcol,reload,sor){ + if(!ts.p.colModel[idxcol].sortable) { return; } + var so; + if(ts.p.savedRow.length > 0) {return;} + if(!reload) { + if( ts.p.lastsort == idxcol ) { + 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(sor) { + if(ts.p.lastsort == idxcol && ts.p.sortorder == sor && !reload) { return; } + else { ts.p.sortorder = sor; } + } + var thd= $("thead:first",ts.grid.hDiv).get(0); + $("tr th:eq("+ts.p.lastsort+") span.ui-grid-ico-sort",thd).addClass('ui-state-disabled'); + $("tr th:eq("+ts.p.lastsort+")",thd).attr("aria-selected","false"); + $("tr th:eq("+idxcol+") span.ui-icon-"+ts.p.sortorder,thd).removeClass('ui-state-disabled'); + $("tr th:eq("+idxcol+")",thd).attr("aria-selected","true"); + if(!ts.p.viewsortcols[0]) { + if(ts.p.lastsort != idxcol) { + $("tr th:eq("+ts.p.lastsort+") span.s-ico",thd).hide(); + $("tr th:eq("+idxcol+") span.s-ico",thd).show(); + } + } + index = index.substring(5); + ts.p.sortname = ts.p.colModel[idxcol].index || index; + so = ts.p.sortorder; + if($.isFunction(ts.p.onSortCol)) {if (ts.p.onSortCol.call(ts,index,idxcol,so)=='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){$("#cb_"+$.jgrid.jqID(ts.p.id),ts.grid.hDiv).attr("checked",false);} + ts.p.selarrrow =[]; + ts.p.savedRow =[]; + } + if(ts.p.scroll) { + var sscroll = ts.grid.bDiv.scrollLeft; + emptyRows(ts.grid.bDiv,true); + 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"); + }); + } + populate(); + ts.p.lastsort = idxcol; + if(ts.p.sortname != index && idxcol) {ts.p.lastsort = idxcol;} + }, + setColWidth = function () { + var initwidth = 0, brd=ts.p.cellLayout, vc=0, lvc, scw=ts.p.scrollOffset,cw,hs=false,aw,tw=0,gw=0, + cl = 0, cr; + if (isSafari) { brd=0; } + $.each(ts.p.colModel, function(i) { + if(typeof this.hidden === 'undefined') {this.hidden=false;} + if(this.hidden===false){ + initwidth += intNum(this.width,0); + if(this.fixed) { + tw += this.width; + gw += this.width+brd; + } else { + vc++; + } + cl++; + } + }); + if (ts.p.shrinkToFit === false) {initwidth += brd*cl;} + if(isNaN(ts.p.width)) {ts.p.width = grid.width = initwidth;} + else { 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)) { + } else { + 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-tw)); + 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+tw+cl*brd; + 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"); + this.p.colModel.unshift({name:'cb',width:isSafari ? ts.p.multiselectWidth+ts.p.cellLayout : ts.p.multiselectWidth,sortable:false,resizable:false,hidedlg:true,search:false,align:'center',fixed: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}); + } + 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) { refreshIndex(); } + var thead = "", + tdc, idn, w, res, sort, + td, ptr, tbody, imgs,iac="",idc=""; + 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";} + tdc = isMSIE ? "class='ui-th-div-ie'" :""; + imgs = ""; + for(i=0;i"; + idn = ts.p.colModel[i].index || ts.p.colModel[i].name; + thead += "
"+ts.p.colNames[i]; + if(!ts.p.colModel[i].width) { ts.p.colModel[i].width = 150; } + else { ts.p.colModel[i].width = parseInt(ts.p.colModel[i].width,10); } + if(typeof(ts.p.colModel[i].title) !== "boolean") { ts.p.colModel[i].title = true; } + if (idn == ts.p.sortname) { + ts.p.lastsort = i; + } + thead += imgs+"
"; + } + thead += ""; + imgs = null; + $(this).append(thead); + $("thead tr:first th",this).hover(function(){$(this).addClass('ui-state-hover');},function(){$(this).removeClass('ui-state-hover');}); + if(this.p.multiselect) { + var emp=[], chk; + $('#cb_'+$.jgrid.jqID(ts.p.id),this).bind('click',function(){ + ts.p.selarrrow = []; + if (this.checked) { + $("[id^=jqg_"+ts.p.id+"_"+"]").attr("checked","checked"); + $(ts.rows).each(function(i) { + if ( i>0 ) { + if(!$(this).hasClass("subgrid") && !$(this).hasClass("jqgroup")){ + $(this).addClass("ui-state-highlight").attr("aria-selected","true"); + ts.p.selarrrow.push(this.id); + ts.p.selrow = this.id; + } + } + }); + chk=true; + emp=[]; + } + else { + $("[id^=jqg_"+ts.p.id+"_"+"]").removeAttr("checked"); + $(ts.rows).each(function(i) { + if(i>0) { + if(!$(this).hasClass("subgrid")){ + $(this).removeClass("ui-state-highlight").attr("aria-selected","false"); + emp.push(this.id); + } + } + }); + ts.p.selrow = null; + chk=false; + } + 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("
 
"); + $(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 ) { + w = ts.p.colModel[j].width; + if(typeof ts.p.colModel[j].resizable === 'undefined') {ts.p.colModel[j].resizable = true;} + if(ts.p.colModel[j].resizable){ + res = document.createElement("span"); + $(res).html(" ").addClass('ui-jqgrid-resize ui-jqgrid-resize-'+dir); + if(!$.browser.opera) { $(res).css("cursor","col-resize"); } + $(this).addClass(ts.p.resizeclass); + } else { + res = ""; + } + $(this).css("width",w+"px").prepend(res); + var hdcol = ""; + if( ts.p.colModel[j].hidden ) { + $(this).css("display","none"); + hdcol = "display:none;"; + } + firstr += ""; + grid.headers[j] = { width: w, el: this }; + sort = ts.p.colModel[j].sortable; + if( typeof sort !== 'boolean') {ts.p.colModel[j].sortable = true; sort=true;} + var nm = ts.p.colModel[j].name; + if( !(nm == 'cb' || nm=='subgrid' || nm=='rn') ) { + if(ts.p.viewsortcols[2]){ + $("div",this).addClass('ui-jqgrid-sortable'); + } + } + if(sort) { + 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("ui-state-disabled");}} + else if( j == ts.p.lastsort) {$("div span.s-ico",this).show();$("div span.ui-icon-"+ts.p.sortorder,this).removeClass("ui-state-disabled");} + } + if(ts.p.footerrow) { tfoot += ""; } + }).mousedown(function(e) { + if ($(e.target).closest("th>span.ui-jqgrid-resize").length != 1) { return; } + var ci = $.jgrid.getCellIndex(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 = $.jgrid.getCellIndex(this); + if (!ts.p.viewsortcols[2]) { r=true;d=t.attr("sort"); } + sortData( $('div',this)[0].id, ci, r, d); + return false; + }); + if (ts.p.sortable && $.fn.sortable) { + try { + $(ts).jqGrid("sortableColumns", thr); + } catch (e){} + } + if(ts.p.footerrow) { tfoot += "
 
"; } + firstr += ""; + tbody = document.createElement("tbody"); + this.appendChild(tbody); + $(this).addClass('ui-jqgrid-btable').append(firstr); + 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) + .css({ width: grid.width+"px"}) + .addClass("ui-state-default ui-jqgrid-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"}).appendTo(eg).addClass('ui-state-default ui-jqgrid-pager ui-corner-bottom'); + 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") !== "subgrid") { + $(ptr).addClass("ui-state-hover"); + } + return false; + }).bind('mouseout',function(e) { + ptr = $(e.target).closest("tr.jqgrow"); + $(ptr).removeClass("ui-state-hover"); + return false; + }); + } + var ri,ci; + $(ts).before(grid.hDiv).click(function(e) { + td = e.target; + var scb = $(td).hasClass("cbox"); + ptr = $(td,ts.rows).closest("tr.jqgrow"); + if($(ptr).length === 0 ) { + return this; + } + var cSel = true; + if($.isFunction(ts.p.beforeSelectRow)) { cSel = ts.p.beforeSelectRow.call(ts,ptr[0].id, e); } + if (td.tagName == 'A' || ((td.tagName == 'INPUT' || td.tagName == 'TEXTAREA' || td.tagName == 'OPTION' || td.tagName == 'SELECT' ) && !scb) ) { return this; } + if(cSel === true) { + if(ts.p.cellEdit === true) { + if(ts.p.multiselect && scb){ + $(ts).jqGrid("setSelection",ptr[0].id,true); + } else { + ri = ptr[0].rowIndex; + ci = $.jgrid.getCellIndex(td); + try {$(ts).jqGrid("editCell",ri,ci,true);} catch (_) {} + } + } else if ( !ts.p.multikey ) { + if(ts.p.multiselect && ts.p.multiboxonly) { + if(scb){$(ts).jqGrid("setSelection",ptr[0].id,true);} + else { + $(ts.p.selarrrow).each(function(i,n){ + var ind = ts.rows.namedItem(n); + $(ind).removeClass("ui-state-highlight"); + $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(n)).attr("checked",false); + }); + ts.p.selarrrow = []; + $("#cb_"+$.jgrid.jqID(ts.p.id),ts.grid.hDiv).attr("checked",false); + $(ts).jqGrid("setSelection",ptr[0].id,true); + } + } else { + $(ts).jqGrid("setSelection",ptr[0].id,true); + } + } else { + if(e[ts.p.multikey]) { + $(ts).jqGrid("setSelection",ptr[0].id,true); + } else if(ts.p.multiselect && scb) { + scb = $("[id^=jqg_"+ts.p.id+"_"+"]").attr("checked"); + $("[id^=jqg_"+ts.p.id+"_"+"]").attr("checked",!scb); + } + } + if($.isFunction(ts.p.onCellSelect)) { + ri = ptr[0].id; + ci = $.jgrid.getCellIndex(td); + ts.p.onCellSelect.call(ts,ri,ci,$(td).html(),e); + } + e.stopPropagation(); + } else { + return this; + } + }).bind('reloadGrid', function(e,opts) { + if(ts.p.treeGrid ===true) { ts.p.datatype = ts.p.treedatatype;} + if (opts && opts.current) { + ts.grid.selectionPreserver(ts); + } + if(ts.p.datatype=="local"){ $(ts).jqGrid("resetSelection"); if(ts.p.data.length) { refreshIndex();} } + else if(!ts.p.treeGrid) { + ts.p.selrow=null; + if(ts.p.multiselect) {ts.p.selarrrow =[];$('#cb_'+$.jgrid.jqID(ts.p.id),ts.grid.hDiv).attr("checked",false);} + ts.p.savedRow = []; + } + if(ts.p.scroll) {emptyRows(ts.grid.bDiv,true);} + if (opts && 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) { + delete ts.p.lastpage; + ts.grid.populateVisible(); + } else { + ts.grid.populate(); + } + return false; + }); + if( $.isFunction(this.p.ondblClickRow) ) { + $(this).dblclick(function(e) { + td = e.target; + ptr = $(td,ts.rows).closest("tr.jqgrow"); + if($(ptr).length === 0 ){return false;} + ri = ptr[0].rowIndex; + ci = $.jgrid.getCellIndex(td); + ts.p.ondblClickRow.call(ts,$(ptr).attr("id"),ri,ci, e); + return false; + }); + } + if ($.isFunction(this.p.onRightClickRow)) { + $(this).bind('contextmenu', function(e) { + td = e.target; + ptr = $(td,ts.rows).closest("tr.jqgrow"); + if($(ptr).length === 0 ){return false;} + if(!ts.p.multiselect) { $(ts).jqGrid("setSelection",ptr[0].id,true); } + ri = ptr[0].rowIndex; + ci = $.jgrid.getCellIndex(td); + ts.p.onRightClickRow.call(ts,$(ptr).attr("id"),ri,ci, e); + return false; + }); + } + grid.bDiv = document.createElement("div"); + $(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( isMSIE ) { + if( $("tbody",this).size() == 2 ) { $("tbody:gt(0)",this).remove();} + if( ts.p.multikey) {$(grid.bDiv).bind("selectstart",function(){return false;});} + } else { + if( ts.p.multikey) {$(grid.bDiv).bind("mousedown",function(){return false;});} + } + if(hg) {$(grid.bDiv).hide();} + grid.cDiv = document.createElement("div"); + var arf = ts.p.hidegrid===true ? $("").addClass('ui-jqgrid-titlebar-close HeaderButton').hover( + function(){ arf.addClass('ui-state-hover');}, + function() {arf.removeClass('ui-state-hover');}) + .append("").css((dir=="rtl"?"left":"right"),"0px") : ""; + $(grid.cDiv).append(arf).append(""+ts.p.caption+"") + .addClass("ui-jqgrid-titlebar ui-widget-header ui-corner-top ui-helper-clearfix"); + $(grid.cDiv).insertBefore(grid.hDiv); + if( ts.p.toolbar[0] ) { + 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).insertBefore(grid.hDiv).addClass("ui-userdata ui-state-default").attr("id","t_"+this.id); + $(grid.ubDiv).insertAfter(grid.hDiv).addClass("ui-userdata ui-state-default").attr("id","tb_"+this.id); + if(hg) {$(grid.ubDiv).hide();} + } else { + $(grid.uDiv).width(grid.width).addClass("ui-userdata ui-state-default").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).insertBefore(grid.hDiv).addClass('ui-state-default ui-jqgrid-toppager').width(grid.width); + setPager(ts.p.toppager,'_t'); + } + if(ts.p.footerrow) { + grid.sDiv = $("
")[0]; + hb = $("
"); + $(grid.sDiv).append(hb).insertAfter(grid.hDiv).width(grid.width); + $(hb).append(tfoot); + grid.footers = $(".ui-jqgrid-ftable",grid.sDiv)[0].rows[0].cells; + if(ts.p.rownumbers) { grid.footers[0].className = 'ui-state-default 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-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("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s"); + ts.p.gridstate = 'hidden'; + if($("#gbox_"+$.jgrid.jqID(ts.p.id)).hasClass("ui-resizable")) { $(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(ts.p.id)).hide(); } + 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("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n"); + 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(); } + 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();} + $(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).mouseup(function (e) { + if(grid.resizing) { grid.dragEnd(); return false;} + return true; + }); + ts.formatCol = formatCol; + ts.sortData = sortData; + ts.updatepager = updatepager; + ts.refreshIndex = refreshIndex; + ts.formatter = function ( rowId, cellval , colpos, rwdat, act){return formatter(rowId, cellval , colpos, rwdat, act);}; + $.extend(grid,{populate : populate, emptyRows: emptyRows}); + this.grid = grid; + ts.addXmlData = function(d) {addXmlData(d,ts.grid.bDiv);}; + ts.addJSONData = function(d) {addJSONData(d,ts.grid.bDiv);}; + this.grid.cols = this.rows[0].cells; + + populate();ts.p.hiddengrid=false; + $(window).unload(function () { + ts = null; + }); + }); +}; +$.jgrid.extend({ + getGridParam : function(pName) { + var $t = this[0]; + if (!$t || !$t.grid) {return;} + if (!pName) { return $t.p; } + else {return typeof($t.p[pName]) != "undefined" ? $t.p[pName] : null;} + }, + setGridParam : function (newParams){ + return this.each(function(){ + if (this.grid && typeof(newParams) === 'object') {$.extend(true,this.p,newParams);} + }); + }, + getDataIDs : function () { + var ids=[], i=0, len, j=0; + this.each(function(){ + len = this.rows.length; + if(len && len>0){ + while(i= 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.rows.namedItem(selection).rowIndex; + if(ner >=0 ){ + scrGrid(ner); + } + } + if(!$t.p.multiselect) { + if(pt.className !== "ui-subgrid") { + if( $t.p.selrow ) { + $($t.rows.namedItem($t.p.selrow)).removeClass("ui-state-highlight").attr("aria-selected","false"); + } + if( $t.p.selrow != pt.id) { + $t.p.selrow = pt.id; + $(pt).addClass("ui-state-highlight").attr("aria-selected","true"); + stat = true; + } else { + stat = false; + $t.p.selrow = null; + } + if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow.call($t, pt.id, stat); } + } + } else { + $t.p.selrow = pt.id; + ia = $.inArray($t.p.selrow,$t.p.selarrrow); + if ( ia === -1 ){ + if(pt.className !== "ui-subgrid") { $(pt).addClass("ui-state-highlight").attr("aria-selected","true");} + stat = true; + $("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID($t.p.selrow)).attr("checked",stat); + $t.p.selarrrow.push($t.p.selrow); + } else { + if(pt.className !== "ui-subgrid") { $(pt).removeClass("ui-state-highlight").attr("aria-selected","false");} + stat = false; + $("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID($t.p.selrow)).attr("checked",stat); + $t.p.selarrrow.splice(ia,1); + tpsr = $t.p.selarrrow[0]; + $t.p.selrow = (tpsr === undefined) ? null : tpsr; + } + if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow.call($t, pt.id , stat); } + } + }); + }, + resetSelection : function(){ + return this.each(function(){ + var t = this, ind; + if(!t.p.multiselect) { + if(t.p.selrow) { + $("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(t.p.selrow)).removeClass("ui-state-highlight").attr("aria-selected","false"); + t.p.selrow = null; + } + } else { + $(t.p.selarrrow).each(function(i,n){ + ind = t.rows.namedItem(n); + $(ind).removeClass("ui-state-highlight").attr("aria-selected","false"); + $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(n)).attr("checked",false); + }); + $("#cb_"+$.jgrid.jqID(t.p.id)).attr("checked",false); + t.p.selarrrow = []; + } + t.p.savedRow = []; + }); + }, + getRowData : function( rowid ) { + var res = {}, resall, getall=false, len, j=0; + this.each(function(){ + var $t = this,nm,ind; + if(typeof(rowid) == 'undefined') { + getall = true; + resall = []; + len = $t.rows.length; + } else { + ind = $t.rows.namedItem(rowid); + if(!ind) { return res; } + len = 2; + } + while(j span:first",ind).html(vl).attr(title); + } else { + $("td:eq("+i+")",ind).html(vl).attr(title); + } + } + }); + if(t.p.datatype == 'local') { + var pos = t.p._index[rowid]; + if(typeof(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(cp === 'object') {$(ind).css(cssp);} + } + }); + return success; + }, + addRowData : function(rowid,rdata,pos,src) { + if(!pos) {pos = "last";} + var success = false, nm, row, gi, si, ni,sind, i, v, prp="", aradd, cnm, cn, data, cm; + 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(typeof(rowid) != 'undefined') { rowid = rowid+"";} + else { + rowid = (t.p.records+1)+""; + if(t.p.keyIndex !== false) { + cnm = t.p.colModel[t.p.keyIndex+gi+si+ni].name; + if(typeof rdata[0][cnm] != "undefined") { rowid = rdata[0][cnm]; } + } + } + } + cn = t.p.altclass; + var k = 0, cna ="", lcdata = {}, + air = $.isFunction(t.p.afterInsertRow) ? true : false; + while(k < datalen) { + data = rdata[k]; + row=""; + if(aradd) { + try {rowid = data[cnm];} + catch (e) {rowid = (t.p.records+1)+"";} + cna = t.p.altRows === true ? (t.rows.length-1)%2 === 0 ? cn : "" : ""; + } + if(ni){ + prp = t.formatCol(0,1,'',null,rowid, true); + row += "0"; + } + if(gi) { + v = ""; + prp = t.formatCol(ni,1,'', null, rowid, true); + row += ""+v+""; + } + if(si) { + row += $(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] = cm.formatter && typeof(cm.formatter) === 'string' && cm.formatter == 'date' ? $.unformat.date(data[nm],cm) : data[nm]; + v = t.formatter( rowid, $.jgrid.getAccessor(data,nm), i, data, 'edit'); + prp = t.formatCol(i,1,v, rowid, data, true); + row += ""+v+""; + } + row = "" + row+""; + if(t.p.subGrid===true) { + row = $(row)[0]; + $(t).jqGrid("addSubGrid",row,gi+ni); + } + if(t.rows.length === 0){ + $("table:first",t.grid.bDiv).append(row); + } else { + switch (pos) { + case 'last': + $(t.rows[t.rows.length-1]).after(row); + break; + case 'first': + $(t.rows[0]).after(row); + break; + case 'after': + sind = t.rows.namedItem(src); + if (sind) { + if($(t.rows[sind.rowIndex+1]).hasClass("ui-subgrid")) { $(t.rows[sind.rowIndex+1]).after(row); } + else { $(sind).after(row); } + } + break; + case 'before': + sind = t.rows.namedItem(src); + if(sind) {$(sind).before(row);sind=sind.rowIndex;} + break; + } + } + t.p.records++; + t.p.reccount++; + if(air) { t.p.afterInsertRow.call(t,rowid,data,data); } + k++; + if(t.p.datatype == 'local') { + t.p._index[rowid] = 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 == 1) {$(t.rows[t.rows.length-1]).addClass(cn);} + } else { + $(t.rows).each(function(i){ + if(i % 2 ==1) { $(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) { + for(var i in obj) { + if (obj.hasOwnProperty(i)) { return false; } + } + return true; + } + if(typeof(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; + if (!$t.grid ) {return;} + if( typeof colname === 'string') {colname=[colname];} + show = show != "none" ? "" : "none"; + var sw = show === "" ? true :false; + $(this.p.colModel).each(function(i) { + if ($.inArray(this.name,colname) !== -1 && this.hidden === sw) { + $("tr",$t.grid.hDiv).each(function(){ + $(this).children("th:eq("+i+")").css("display",show); + }); + $($t.rows).each(function(j){ + $(this).children("td:eq("+i+")").css("display",show); + }); + if($t.p.footerrow) { $($t.grid.sDiv).children("td:eq("+i+")").css("display", show); } + if(show == "none") { $t.p.tblwidth -= this.width+$t.p.cellLayout;} else {$t.p.tblwidth += this.width;} + this.hidden = !sw; + fndh=true; + } + }); + if(fndh===true) { + $("table:first",$t.grid.hDiv).width($t.p.tblwidth); + $("table:first",$t.grid.bDiv).width($t.p.tblwidth); + $t.grid.hDiv.scrollLeft = $t.grid.bDiv.scrollLeft; + if($t.p.footerrow) { + $("table:first",$t.grid.sDiv).width($t.p.tblwidth); + $t.grid.sDiv.scrollLeft = $t.grid.bDiv.scrollLeft; + } + if($t.p.shrinkToFit===true) { + $($t).jqGrid("setGridWidth",$t.grid.width-0.001,true); + } + } + }); + }, + 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); } + }, + setGridWidth : function(nwidth, shrink) { + return this.each(function(){ + if (!this.grid ) {return;} + var $t = this, cw, + initwidth = 0, brd=$t.p.cellLayout, lvc, vc=0, hs=false, scw=$t.p.scrollOffset, aw, gw=0, tw=0, + cl = 0,cr; + if(typeof shrink != 'boolean') { + shrink=$t.p.shrinkToFit; + } + if(isNaN(nwidth)) {return;} + else { 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) { + if ($.browser.safari) { brd=0;} + $.each($t.p.colModel, function(i) { + if(this.hidden===false){ + initwidth += parseInt(this.width,10); + if(this.fixed) { + tw += this.width; + gw += this.width+brd; + } else { + vc++; + } + cl++; + } + }); + 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 = Math.round(aw*this.width/($t.p.tblwidth-tw)); + 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; + } + }); + 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+tw+brd*cl; + 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"; } + $('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) { + $t.grid.footers[lvc].style.width = cw+"px"; + $('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;} + $($t.grid.bDiv).css({height: nh+(isNaN(nh)?"":"px")}); + $t.p.height = nh; + if ($t.p.scroll) { $t.grid.populateVisible(); } + }); + }, + setCaption : function (newcap){ + return this.each(function(){ + this.p.caption=newcap; + $("span.ui-jqgrid-title",this.grid.cDiv).html(newcap); + $(this.grid.cDiv).show(); + }); + }, + setLabel : function(colname, nData, prop, attrp ){ + return this.each(function(){ + var $t = this, pos=-1; + 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 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.rows.namedItem(rowid); + if (ind){ + var tcell = $("td:eq("+pos+")",ind); + if(nData !== "" || forceupd === true) { + v = $t.formatter(rowid, nData, pos,ind,'edit'); + title = $t.p.colModel[pos].title ? {"title":$.jgrid.stripHtml(v)} : {}; + if($t.p.treeGrid && $(".tree-wrap",$(tcell)).length>0) { + $("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(nData,cm) : nData; + index = $t.p._index[rowid]; + if(typeof 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.rows.namedItem(rowid); + if(ind) { + try { + ret = $.unformat($("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; + obj = typeof (obj) != 'boolean' ? false : obj; + if(typeof 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; + if (ln && ln>0){ + while(i0) { + // 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 () { $("#"+$t.p.knv).attr("tabindex","-1").focus();},0); + } + nm = $t.p.colModel[iCol].name; + if (nm=='subgrid' || nm=='cb' || nm=='rn') {return;} + cc = $("td:eq("+iCol+")",$t.rows[iRow]); + if ($t.p.colModel[iCol].editable===true && ed===true && !cc.hasClass("not-editable-cell")) { + 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 ui-state-highlight"); + $($t.rows[$t.p.iRow]).removeClass("selected-row ui-state-hover"); + } + $(cc).addClass("edit-cell ui-state-highlight"); + $($t.rows[iRow]).addClass("selected-row ui-state-hover"); + try { + tmp = $.unformat(cc,{rowId: $t.rows[iRow].id, colModel:$t.p.colModel[iCol]},iCol); + } catch (_) { + tmp = $(cc).html(); + } + if($t.p.autoencode) { tmp = $.jgrid.htmlDecode(tmp); } + if (!$t.p.colModel[iCol].edittype) {$t.p.colModel[iCol].edittype = "text";} + $t.p.savedRow.push({id:iRow,ic:iCol,name:nm,v: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;} + } + var opt = $.extend({}, $t.p.colModel[iCol].editoptions || {} ,{id:iRow+"_"+nm,name:nm}); + var elc = $.jgrid.createEl($t.p.colModel[iCol].edittype,opt,tmp,true,$.extend({},$.jgrid.ajaxOptions,$t.p.ajaxSelectOptions || {})); + if ($.isFunction($t.p.beforeEditCell)) { + $t.p.beforeEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol); + } + $(cc).html("").append(elc).attr("tabindex","0"); + window.setTimeout(function () { $(elc).focus();},0); + $("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) {$($t).jqGrid("saveCell",iRow,iCol);}//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(); + }); + 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 ui-state-highlight"); + $($t.rows[$t.p.iRow]).removeClass("selected-row ui-state-hover"); + } + cc.addClass("edit-cell ui-state-highlight"); + $($t.rows[iRow]).addClass("selected-row ui-state-hover"); + if ($.isFunction($t.p.onSelectCell)) { + tmp = cc.html().replace(/\ \;/ig,''); + $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; + 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) ; + 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]).attr("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(jQuery.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.nodefined,jQuery.jgrid.edit.bClose); } + if (e=="e2") { $.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.novalue,jQuery.jgrid.edit.bClose); } + else {$.jgrid.info_dialog(jQuery.jgrid.errors.errcap,e.message,jQuery.jgrid.edit.bClose); } + } + break; + } + // The common approach is if nothing changed do not do anything + if (v2 != $t.p.savedRow[fr].v){ + 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(v,iCol,$t); + if(cv[0] === true) { + var addpost = {}; + 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); } + postdata[nm] = v; + var idname,oper, opers; + opers = $t.p.prmNames; + idname = opers.id; + oper = opers.oper; + postdata[idname] = $t.rows[iRow].id; + postdata[oper] = opers.editoper; + postdata = $.extend(addpost,postdata); + $("#lui_"+$t.p.id).show(); + $t.grid.hDiv.loading = true; + $.ajax( $.extend( { + url: $t.p.cellurl, + data :$.isFunction($t.p.serializeCellData) ? $t.p.serializeCellData.call($t, postdata) : postdata, + type: "POST", + complete: function (result, stat) { + $("#lui_"+$t.p.id).hide(); + $t.grid.hDiv.loading = false; + if (stat == 'success') { + if ($.isFunction($t.p.afterSubmitCell)) { + var ret = $t.p.afterSubmitCell.call($t, result,postdata.id,nm,v,iRow,iCol); + if(ret[0] === true) { + $(cc).empty(); + $($t).jqGrid("setCell",$t.rows[iRow].id, iCol, v2, false, false, true); + $(cc).addClass("dirty-cell"); + $($t.rows[iRow]).addClass("edited"); + 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($.jgrid.errors.errcap,ret[1],$.jgrid.edit.bClose); + $($t).jqGrid("restoreCell",iRow,iCol); + } + } else { + $(cc).empty(); + $($t).jqGrid("setCell",$t.rows[iRow].id, iCol, v2, false, false, true); + $(cc).addClass("dirty-cell"); + $($t.rows[iRow]).addClass("edited"); + if ($.isFunction($t.p.afterSaveCell)) { + $t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol); + } + $t.p.savedRow.splice(0,1); + } + } + }, + error:function(res,stat) { + $("#lui_"+$t.p.id).hide(); + $t.grid.hDiv.loading = false; + if ($.isFunction($t.p.errorCell)) { + $t.p.errorCell.call($t, res,stat); + $($t).jqGrid("restoreCell",iRow,iCol); + } else { + $.jgrid.info_dialog($.jgrid.errors.errcap,res.status+" : "+res.statusText+"
"+stat,$.jgrid.edit.bClose); + $($t).jqGrid("restoreCell",iRow,iCol); + } + } + }, $.jgrid.ajaxOptions, $t.p.ajaxCellOptions || {})); + } else { + try { + $.jgrid.info_dialog($.jgrid.errors.errcap,$.jgrid.errors.nourl,$.jgrid.edit.bClose); + $($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"); + 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($.jgrid.errors.errcap,v+" "+cv[1],$.jgrid.edit.bClose);},100); + $($t).jqGrid("restoreCell",iRow,iCol); + } catch (e) {} + } + } else { + $($t).jqGrid("restoreCell",iRow,iCol); + } + } + if ($.browser.opera) { + $("#"+$t.p.knv).attr("tabindex","-1").focus(); + } else { + window.setTimeout(function () { $("#"+$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); + 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; + if (!$t.grid || $t.p.cellEdit !== true) {return;} + // try to find next editable cell + for (var i=iCol+1; i<$t.p.colModel.length; i++) { + if ( $t.p.colModel[i].editable ===true) { + 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; + if (!$t.grid || $t.p.cellEdit !== true) {return;} + // try to find next editable cell + for (var i=iCol-1; i>=0; i--) { + if ( $t.p.colModel[i].editable ===true) { + 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; + $(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; + } + return false; + }); + 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; + } + }); + }, + 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(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(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 +}); +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/grid.common.js b/addons/base/static/lib/jquery.jqGrid/js/grid.common.js new file mode 100644 index 00000000000..5f0a4a3d589 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/grid.common.js @@ -0,0 +1,656 @@ +;(function($){ +/* + * jqGrid common function + * 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 +*/ +/*global jQuery, $ */ + +$.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 :''}, o || {}); + if(o.onClose) { + var oncret = o.onClose(selector); + if (typeof oncret == 'boolean' && !oncret ) { return; } + } + 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"); + } + }, +//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) { + var mw = document.createElement('div'), rtlsup, self = this; + rtlsup = $(p.gbox).attr("dir") == "rtl" ? true : false; + mw.className= "ui-widget ui-widget-content ui-corner-all ui-jqdialog"; + mw.id = aIDs.themodal; + var mh = document.createElement('div'); + mh.className = "ui-jqdialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix"; + mh.id = aIDs.modalhead; + $(mh).append(""+p.caption+""); + var ahr= $("
") + .hover(function(){ahr.addClass('ui-state-hover');}, + function(){ahr.removeClass('ui-state-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 ui-widget-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 {$(mw).insertBefore(insertSelector);} + if(typeof p.jqModal === 'undefined') {p.jqModal = true;} // internal use + var coord = {}; + if ( $.fn.jqm && p.jqModal === true) { + if(p.left ===0 && p.top===0) { + var pos = []; + pos = this.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(e){ + var oncm = $("#"+aIDs.themodal).data("onClose") || p.onClose; + var gboxclose = $("#"+aIDs.themodal).data("gbox") || p.gbox; + self.hideModal("#"+aIDs.themodal,{gb:gboxclose,jqm:p.jqModal,onClose:oncm}); + 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]").first().css("z-index"); + if(parentZ) { + p.zIndex = parseInt(parentZ,10)+1; + } 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(typeof p.drag == 'undefined') { p.drag=true;} + if(typeof p.resize == 'undefined') {p.resize=true;} + if (p.drag) { + $(mh).css('cursor','move'); + if($.fn.jqDrag) { + $(mw).jqDrag(mh); + } else { + try { + $(mw).draggable({handle: $("#"+mh.id)}); + } catch (e) {} + } + } + if(p.resize) { + if($.fn.jqResize) { + $(mw).append("
"); + $("#"+aIDs.themodal).jqResize(".jqResize",aIDs.scrollelm ? "#"+aIDs.scrollelm : false); + } else { + try { + $(mw).resizable({handles: 'se, sw',alsoResize: aIDs.scrollelm ? "#"+aIDs.scrollelm : false}); + } catch (r) {} + } + } + if(p.closeOnEscape === true){ + $(mw).keydown( function( e ) { + if( e.which == 27 ) { + var cone = $("#"+aIDs.themodal).data("onClose") || p.onClose; + self.hideModal(this,{gb:p.gbox,jqm:p.jqModal,onClose: cone}); + } + }); + } + }, + viewModal : function (selector,o){ + o = $.extend({ + toTop: true, + overlay: 10, + modal: false, + onShow: this.showModal, + onHide: this.closeModal, + gbox: '', + jqm : true, + jqM : true + }, o || {}); + 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"); + try{$(':input:visible',selector)[0].focus();}catch(_){} + } + }, + + info_dialog : function(caption, content,c_b, modalopt) { + var mopt = { + width:290, + height:'auto', + dataheight: 'auto', + drag: true, + resize: false, + caption:""+caption+"", + 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(mopt,modalopt || {}); + var jm = mopt.jqModal, self = this; + if($.fn.jqm && !jm) { jm = false; } + // in case there is no jqModal + var buttstr =""; + if(mopt.buttons.length > 0) { + for(var 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") { + this.hideModal("#info_dialog",{jqm:jm}); + } + $("#info_dialog").remove(); + } catch (e){} + this.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){ + $("#"+this.id,"#info_id").bind('click',function(){mopt.buttons[i].onClick.call($("#info_dialog")); return false;}); + }); + } + $("#closedialog", "#info_id").click(function(e){ + self.hideModal("#info_dialog",{jqm:jm}); + return false; + }); + $(".fm-button","#info_dialog").hover( + function(){$(this).addClass('ui-state-hover');}, + function(){$(this).removeClass('ui-state-hover');} + ); + if($.isFunction(mopt.beforeOpen) ) { mopt.beforeOpen(); } + this.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){} + }, +// Form Functions + createEl : function(eltype,options,vl,autowidth, ajaxso) { + var elem = ""; + function bindEv (el, opt) { + if($.isFunction(opt.dataInit)) { + opt.dataInit(el); + } + 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); + } + }); + } + return opt; + } + function setAttributes(elm, atr) { + var exclude = ['dataInit','dataEvents', 'value','dataUrl', 'buildSelect']; + $.each(atr, function(key, value){ + if($.inArray(key, exclude) === -1) { + $(elem).attr(key,value); + } + }); + } + 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); + options = bindEv(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|0|no|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); + options = bindEv(elem,options); + $(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(typeof(options.dataUrl) != "undefined") { + $.ajax($.extend({ + url: options.dataUrl, + type : "GET", + dataType: "html", + success: function(data,status){ + var a; + if(typeof(options.buildSelect) != "undefined") { + var b = options.buildSelect(data); + a = $(b).html(); + } else { + a = $(data).html(); + } + if(a) { + $(elem).append(a); + setAttributes(elem, options); + options = bindEv(elem,options); + if(typeof 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){ + //if(i===0) { this.selected = ""; } + $(this).attr("role","option"); + if($.inArray($.trim($(this).text()),ovm) > -1 || $.inArray($.trim($(this).val()),ovm) > -1 ) { + this.selected= "selected"; + if(!msl) { return false; } + } + }); + },0); + } + } + },ajaxso || {})); + } else if(options.value) { + var i; + if(msl) { + ovm = vl.split(","); + ovm = $.map(ovm,function(n){return $.trim(n);}); + if(typeof options.size === 'undefined') {options.size = 3;} + } else { + options.size = 1; + } + if(typeof options.value === 'function') { options.value = options.value(); } + var so,sv, ov; + if(typeof options.value === 'string') { + so = options.value.split(";"); + for(i=0; i 2 ) { + sv[1] = $.map(sv,function(n,i){if(i>0) { return n;} }).join(":"); + } + ov = document.createElement("option"); + ov.setAttribute("role","option"); + ov.value = sv[0]; ov.innerHTML = sv[1]; + 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";} + elem.appendChild(ov); + } + } else if (typeof options.value === 'object') { + var oSv = options.value; + for ( var key in oSv) { + if (oSv.hasOwnProperty(key ) ){ + ov = document.createElement("option"); + ov.setAttribute("role","option"); + ov.value = key; ov.innerHTML = oSv[key]; + 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"; } + elem.appendChild(ov); + } + } + } + setAttributes(elem, options); + options = bindEv(elem,options); + } + break; + case "text" : + case "password" : + case "button" : + var role; + if(eltype=="button") { role = "button"; } + else { role = "textbox"; } + elem = document.createElement("input"); + elem.type = eltype; + elem.value = vl; + setAttributes(elem, options); + options = bindEv(elem,options); + if(eltype != "button"){ + if(autowidth) { + if(!options.size) { $(elem).css({width:"98%"}); } + } else if (!options.size) { options.size = 20; } + } + $(elem).attr("role",role); + break; + case "image" : + case "file" : + elem = document.createElement("input"); + elem.type = eltype; + setAttributes(elem, options); + options = bindEv(elem,options); + break; + case "custom" : + elem = document.createElement("span"); + try { + if($.isFunction(options.custom_element)) { + var celm = options.custom_element.call(this,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) { + if (e=="e1") { this.info_dialog($.jgrid.errors.errcap,"function 'custom_element' "+$.jgrid.edit.msg.nodefined, $.jgrid.edit.bClose);} + if (e=="e2") { this.info_dialog($.jgrid.errors.errcap,"function 'custom_element' "+$.jgrid.edit.msg.novalue,$.jgrid.edit.bClose);} + else { this.info_dialog($.jgrid.errors.errcap,typeof(e)==="string"?e:e.message,$.jgrid.edit.bClose); } + } + break; + } + 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 ); + }, + DaysArray = function(n) { + for (var i = 1; i <= n; i++) { + this[i] = 31; + if (i==4 || i==6 || i==9 || i==11) {this[i] = 30;} + if (i==2) {this[i] = 29;} + } + return this; + }; + + var 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; + for(var i=0;i12){ + return false; + } + } + if(dln === -1) { + return false; + } else { + 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; + } else { + return false; + } + }, + checkTime : function(time){ + // checks only hh:ss (and optional am/pm) + var re = /^(\d{1,2}):(\d{2})([ap]m)?$/,regs; + if(!this.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,g, customobject, nam) { + var edtrul,i, nm, dft, len; + if(typeof(customobject) === "undefined") { + if(typeof(valref)=='string'){ + for( i =0, len=g.p.colModel.length;i=0) { + edtrul = g.p.colModel[valref].editrules; + } + } else { + edtrul = customobject; + nm = nam===undefined ? "_" : nam; + } + if(edtrul) { + if(!nm) { nm = g.p.colNames[valref]; } + if(edtrul.required === true) { + if( this.isEmpty(val) ) { return [false,nm+": "+$.jgrid.edit.msg.required,""]; } + } + // force required + var rqfield = edtrul.required === false ? false : true; + if(edtrul.number === true) { + if( !(rqfield === false && this.isEmpty(val)) ) { + if(isNaN(val)) { return [false,nm+": "+$.jgrid.edit.msg.number,""]; } + } + } + if(typeof edtrul.minValue != 'undefined' && !isNaN(edtrul.minValue)) { + if (parseFloat(val) < parseFloat(edtrul.minValue) ) { return [false,nm+": "+$.jgrid.edit.msg.minValue+" "+edtrul.minValue,""];} + } + if(typeof edtrul.maxValue != 'undefined' && !isNaN(edtrul.maxValue)) { + if (parseFloat(val) > parseFloat(edtrul.maxValue) ) { return [false,nm+": "+$.jgrid.edit.msg.maxValue+" "+edtrul.maxValue,""];} + } + var filter; + if(edtrul.email === true) { + if( !(rqfield === false && this.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+": "+$.jgrid.edit.msg.email,""];} + } + } + if(edtrul.integer === true) { + if( !(rqfield === false && this.isEmpty(val)) ) { + if(isNaN(val)) { return [false,nm+": "+$.jgrid.edit.msg.integer,""]; } + if ((val % 1 !== 0) || (val.indexOf('.') != -1)) { return [false,nm+": "+$.jgrid.edit.msg.integer,""];} + } + } + if(edtrul.date === true) { + if( !(rqfield === false && this.isEmpty(val)) ) { + if(g.p.colModel[valref].formatoptions && g.p.colModel[valref].formatoptions.newformat) { + dft = g.p.colModel[valref].formatoptions.newformat; + } else { + dft = g.p.colModel[valref].datefmt || "Y-m-d"; + } + if(!this.checkDate (dft, val)) { return [false,nm+": "+$.jgrid.edit.msg.date+" - "+dft,""]; } + } + } + if(edtrul.time === true) { + if( !(rqfield === false && this.isEmpty(val)) ) { + if(!this.checkTime (val)) { return [false,nm+": "+$.jgrid.edit.msg.date+" - hh:mm (am/pm)",""]; } + } + } + if(edtrul.url === true) { + if( !(rqfield === false && this.isEmpty(val)) ) { + filter = /^(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i; + if(!filter.test(val)) {return [false,nm+": "+$.jgrid.edit.msg.url,""];} + } + } + if(edtrul.custom === true) { + if( !(rqfield === false && this.isEmpty(val)) ) { + if($.isFunction(edtrul.custom_func)) { + var ret = edtrul.custom_func.call(g,val,nm); + if($.isArray(ret)) { + return ret; + } else { + return [false,$.jgrid.edit.msg.customarray,""]; + } + } else { + return [false,$.jgrid.edit.msg.customfcheck,""]; + } + } + } + } + return [true,"",""]; + } +}); +})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/grid.custom.js b/addons/base/static/lib/jquery.jqGrid/js/grid.custom.js new file mode 100644 index 00000000000..0640f21c30b --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/grid.custom.js @@ -0,0 +1,440 @@ +(function($){ +/** + * jqGrid extension for custom methods + * 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 +**/ +/*global jQuery, $ */ + +$.jgrid.extend({ + getColProp : function(colname){ + var ret ={}, $t = this[0]; + if ( !$t.grid ) { return false; } + var cM = $t.p.colModel; + for ( var i =0;i0 ? true : false; + 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\":\"" + sopt[i] + "\","; + 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 bsr = false; + if($.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});} + if($.isFunction(p.afterSearch)){p.afterSearch();} + }; + var clearToolbar = function(trigger){ + var sdata={}, v, j=0, nm; + trigger = (typeof trigger != 'boolean') ? true : trigger; + $.each($t.p.colModel,function(i,n){ + v = (this.searchoptions && this.searchoptions.defaultValue) ? this.searchoptions.defaultValue : ""; + nm = this.index || this.name; + switch (this.stype) { + case 'select' : + var v1; + $("select[name="+nm+"] option",$t.grid.hDiv).each(function (i){ + if(i===0) { this.selected = true; } + if ($(this).text() == v) { + this.selected = true; + v1 = $(this).val(); + return false; + } + }); + if (v1) { + // post the key and not the text + sdata[nm] = v1; + j++; + } else { + try { + delete $t.p.postData[nm]; + } catch(e) {} + } + break; + case 'text': + $("input[name="+nm+"]",$t.grid.hDiv).val(v); + if(v) { + sdata[nm] = v; + j++; + } else { + try { + delete $t.p.postData[nm]; + } catch (y){} + } + break; + } + }); + var sd = j>0 ? true : false; + 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 = false; + if($.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});} + if($.isFunction(p.afterClear)){p.afterClear();} + }; + var toggleToolbar = function(){ + var trow = $("tr.ui-search-toolbar",$t.grid.hDiv); + if(trow.css("display")=='none') { trow.show(); } + else { trow.hide(); } + }; + // create the row + function bindEvents(selector, events) { + var jElem = $(selector); + if (jElem[0]) { + jQuery.each(events, function() { + if (this.data !== undefined) { + jElem.bind(this.type, this.data, this.fn); + } else { + jElem.bind(this.type, this.fn); + } + }); + } + } + var tr = $(""); + var timeoutHnd; + $.each($t.p.colModel,function(i,n){ + var cm=this, thd , th, soptions,surl,self; + th = $(""); + thd = $("
"); + if(this.hidden===true) { $(th).css("display","none");} + this.search = this.search === false ? false : true; + if(typeof this.stype == 'undefined' ) {this.stype='text';} + soptions = $.extend({},this.searchoptions || {}); + if(this.search){ + switch (this.stype) + { + case "select": + surl = this.surl || soptions.dataUrl; + if(surl) { + // data returned should have already constructed html select + // primitive jQuery load + self = thd; + $.ajax($.extend({ + url: surl, + dataType: "html", + complete: function(res,status) { + if(soptions.buildSelect !== undefined) { + var d = soptions.buildSelect(res); + if (d) { $(self).append(d); } + } else { + $(self).append(res.responseText); + } + if(soptions.defaultValue) { $("select",self).val(soptions.defaultValue); } + $("select",self).attr({name:cm.index || cm.name, id: "gs_"+cm.name}); + if(soptions.attr) {$("select",self).attr(soptions.attr);} + $("select",self).css({width: "100%"}); + // preserve autoserch + if(soptions.dataInit !== undefined) { soptions.dataInit($("select",self)[0]); } + if(soptions.dataEvents !== undefined) { bindEvents($("select",self)[0],soptions.dataEvents); } + if(p.autosearch===true){ + $("select",self).change(function(e){ + triggerToolbar(); + return false; + }); + } + res=null; + } + }, $.jgrid.ajaxOptions, $t.p.ajaxSelectOptions || {} )); + } else { + var oSv; + if(cm.searchoptions && cm.searchoptions.value) { + oSv = cm.searchoptions.value; + } else if(cm.editoptions && cm.editoptions.value) { + oSv = cm.editoptions.value; + } + if (oSv) { + var elem = document.createElement("select"); + elem.style.width = "100%"; + $(elem).attr({name:cm.index || cm.name, id: "gs_"+cm.name}); + var so, sv, ov; + if(typeof oSv === "string") { + so = oSv.split(";"); + for(var k=0; k"); + if(soptions.attr) {$("input",thd).attr(soptions.attr);} + if(soptions.dataInit !== undefined) { soptions.dataInit($("input",thd)[0]); } + if(soptions.dataEvents !== undefined) { bindEvents($("input",thd)[0], soptions.dataEvents); } + if(p.autosearch===true){ + if(p.searchOnEnter) { + $("input",thd).keypress(function(e){ + var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0; + if(key == 13){ + triggerToolbar(); + return false; + } + return this; + }); + } else { + $("input",thd).keydown(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();},500); + } + }); + } + } + break; + } + } + $(th).append(thd); + $(tr).append(th); + }); + $("table thead",$t.grid.hDiv).append(tr); + this.ftoolbar = true; + this.triggerToolbar = triggerToolbar; + this.clearToolbar = clearToolbar; + this.toggleToolbar = toggleToolbar; + }); + } +}); +})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/grid.filter.js b/addons/base/static/lib/jquery.jqGrid/js/grid.filter.js new file mode 100644 index 00000000000..c0c9d07c240 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/grid.filter.js @@ -0,0 +1,675 @@ +/* + * jqFilter jQuery jqGrid filter addon. + * Copyright (c) 2011, 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 + * + * The work is inspired from this Stefan Pirvu + * http://www.codeproject.com/KB/scripting/json-filtering.aspx + * + * The filter uses JSON entities to hold filter rules and groups. Here is an example of a filter: + +{ "groupOp": "AND", + "groups" : [ + { "groupOp": "OR", + "rules": [ + { "field": "name", "op": "eq", "data": "England" }, + { "field": "id", "op": "le", "data": "5"} + ] + } + ], + "rules": [ + { "field": "name", "op": "eq", "data": "Romania" }, + { "field": "id", "op": "le", "data": "1"} + ] +} +*/ +/*global jQuery, $ */ + +(function ($) { + +$.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: [], + onChange : null, + checkValues : null, + error: false, + errmsg : "", + errorcheck : true, + showQuery : true, + sopt : null, + ops : [ + {"name": "eq", "description": "equal", "operator":"="}, + {"name": "ne", "description": "not equal", "operator":"<>"}, + {"name": "lt", "description": "less", "operator":"<"}, + {"name": "le", "description": "less or equal","operator":"<="}, + {"name": "gt", "description": "greater", "operator":">"}, + {"name": "ge", "description": "greater or equal", "operator":">="}, + {"name": "bw", "description": "begins with", "operator":"LIKE"}, + {"name": "bn", "description": "does not begin with", "operator":"NOT LIKE"}, + {"name": "in", "description": "in", "operator":"IN"}, + {"name": "ni", "description": "not in", "operator":"NOT IN"}, + {"name": "ew", "description": "ends with", "operator":"LIKE"}, + {"name": "en", "description": "does not end with", "operator":"NOT LIKE"}, + {"name": "cn", "description": "contains", "operator":"LIKE"}, + {"name": "nc", "description": "does not contain", "operator":"NOT LIKE"}, + {"name": "nu", "description": "is null", "operator":"IS NULL"}, + {"name": "nn", "description": "is not null", "operator":"IS NOT 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'], + _gridsopt : [], // grid translated strings, do not tuch + groupOps : ["AND", "OR"], + groupButton : true + }, 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], + rules: [], + groups: [] + }; + } + var i, len = this.p.columns.length, cl; + + // translating the options + if(this.p._gridsopt.length) { + // ['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc'] + for(i=0;i"); + } + /* + *Perform checking. + * + */ + var checkData = function(val, colModelItem) { + var ret = [true,""]; + if($.isFunction(colModelItem.searchrules)) { + ret = colModelItem.searchrules(val, colModelItem); + } else if($.jgrid && $.jgrid.checkValues) { + try { + ret = $.jgrid.checkValues(val, -1, null, colModelItem.searchrules, colModelItem.label); + } catch (e) {} + } + if(ret && ret.length && ret[0] === false) { + p.error = !ret[0]; + p.errmsg = ret[1]; + } + }, + 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; + }; + /* + * Redrow 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); + }; + /* + * 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 + 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); + + // 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] ? " 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], + rules: [], + groups: [] + }); // adding a new group + + that.reDraw(); // the html has changed, force reDraw + + that.onchange(); // signals that the filter has changed + return false; + }); + } else { + inputAddSubgroup = ""; + } + th.append(inputAddSubgroup); + + // 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 = (typeof 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; + } + } + var opr; + if( cm.searchoptions.sopt ) {opr = cm.searchoptions.sopt;} + else if(that.p.sopt) { opr= that.p.sopt; } + else if (cm.searchtype === 'string') {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]; + } + + // append rules rows + if (group.rules !== undefined) { + for (i = 0; i < group.rules.length; i++) { + table.append( + this.createTableRowForRule(group.rules[i], group) + ); + } + } + + 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, 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 = $(""); + ruleFieldTd.append(ruleFieldSelect); + ruleFieldSelect.bind('change',function() { + rule.field = $(ruleFieldSelect).val(); + + trpar = $(this).parents("tr:first"); + for (i=0;i"+that.p.ops[i].description+""; + } + } + $(".selectopts",trpar).empty().append( s ); + + // data + $(".data",trpar).empty().append( elm ); + $(".input-elm",trpar).bind('change',function() { + rule.data = $(this).val(); + if($.isArray(rule.data)) { rule.data = rule.data.join(","); } + 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 = (typeof 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 = randId(); + var ruleDataInput = $.jgrid.createEl(cm.inputtype,cm.searchoptions, rule.data, true, that.p.ajaxSelectOptions, true); + + // 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 = ""; + rd.value = ""; + rd.setAttribute("readonly", "true"); + rd.setAttribute("disabled", "true"); + } else { + 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 (cm.searchtype === 'string') {op = p.stropts;} + else {op = that.p.numopts;} + str=""; + for ( i = 0; i < that.p.ops.length; i++) { + if($.inArray(that.p.ops[i].name, op) !== -1) { + selected = rule.op === that.p.ops[i].name ? " 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); + + $(ruleDataInput) + .addClass("input-elm") + .bind('change', function() { + rule.data = $(this).val(); + if($.isArray(rule.data)) { rule.data = rule.data.join(","); } + + that.onchange(); // signals that the filter has changed + }); + + // create action container + var ruleDeleteTd = $(""); + tr.append(ruleDeleteTd); + + // create button for: delete rule + 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 + } else { + 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].name === rule.op) { + opUF = this.p.ops[i].operator; + opC = this.p.ops[i].name; + 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 + } else { + 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(); + }); + } + +}); +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/grid.formedit.js b/addons/base/static/lib/jquery.jqGrid/js/grid.formedit.js new file mode 100644 index 00000000000..aea99600a62 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/grid.formedit.js @@ -0,0 +1,1888 @@ +(function($){ +/** + * jqGrid extension for form editing Grid Data + * 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 +**/ +/*global xmlJsonClass, jQuery, $ */ +var rp_ge = null; +$.jgrid.extend({ + 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, + multipleGroup : false, + //cloneSearchRowOnAdd: true, + top : 0, + left: 0, + jqModal : true, + modal: true, + resize : false, + width: 450, + height: 'auto', + dataheight: 'auto', + showQuery: true, + errorcheck : true, + // translation + // if you want to change or remove the order change it in sopt + // ['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc'], + sopt: null, + stringResult: undefined, + onClose : null, + onSearch : null, + onReset : null, + overlay : 10, + columns : [] + }, $.jgrid.search, p || {}); + return this.each(function() { + var $t = this; + if(!$t.grid) {return;} + var fid = "fbox_"+$t.p.id, + showFrm = true, + IDs = {themodal:'editmod'+fid,modalhead:'edithd'+fid,modalcontent:'editcnt'+fid, scrollelm : fid}, + defaultFilters = $t.p.postData[p.sFilter], + fil = $("
").insertBefore("#gview_"+$t.p.id); + if(typeof(defaultFilters) === "string") { + defaultFilters = $.jgrid.parse( defaultFilters ); + } + if(p.recreateFilter === true) { + $("#"+IDs.themodal).remove(); + } + function showFilter() { + if($.isFunction(p.beforeShowSearch)) { + showFrm = p.beforeShowSearch($("#"+fid)); + if(typeof(showFrm) === "undefined") { + showFrm = true; + } + } + if(showFrm) { + $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+fid,jqm:p.jqModal, modal:p.modal, overlay: p.overlay}); + if($.isFunction(p.afterShowSearch)) { + p.afterShowSearch($("#"+fid)); + } + } + } + if ( $("#"+IDs.themodal).html() !== null ) { + showFilter(); + } else { + if($.isFunction(p.onInitializeSearch) ) { + p.onInitializeSearch($("#"+fid)); + } + var columns = $.extend([],$t.p.colModel), + bS =""+p.Find+"", + bC =""+p.Reset+"", + bQ = ""; + if(p.showQuery) { + bQ ="Query"; + } + var bt = "

"+bC+""+bQ+bS+"
", + colnm, found=false; + 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 = (typeof 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.name; + } + } + }); + } else { + columns = p.columns; + } + // old behaviour + if( (!defaultFilters && colnm) || p.multipleSearch === false ) { + defaultFilters = {"groupOp": "AND",rules:[{"field":colnm,"op":"eq","data":""}]}; + } + $("#"+fid).jqFilter({ + columns : columns, + filter: p.loadDefaults ? defaultFilters : null, + showQuery: p.showQuery, + errorcheck : p.errorcheck, + sopt: p.sopt, + groupButton : p.multipleGroup, + _gridsopt : $.jgrid.search.odata, + onChange : function( sp ) { + if(this.p.showQuery) { + $('.query',this).html(this.toUserFriendlyString()); + } + } + }); + fil.append( bt ); + if(p.multipleSearch === false) { + $(".add-rule","#"+fid).hide(); + $(".delete-rule","#"+fid).hide(); + } + if($.isFunction(p.onInitializeSearch) ) { + p.onInitializeSearch($("#"+fid)); + } + $.jgrid.createModal(IDs ,fil,p,"#gview_"+$t.p.id,$("#gbox_"+$t.p.id)[0]); + if(bQ) { + $("#"+fid+"_query").bind('click', function(e){ + $(".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 fl = $("#"+fid), + sdata={}, res , + 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 && $t.p.datatype !== "local") { + try { + // xmlJsonClass or JSON.stringify + res = xmlJsonClass.toJson(filters, '', '', false); + } catch (e) { + 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); + $($t).trigger("reloadGrid",[{page:1}]); + if($.isFunction(p.onSearch) ) { + p.onSearch(); + } + if(p.closeAfterSearch) { + $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+$t.p.id,jqm:p.jqModal,onClose: p.onClose}); + } + return false; + }); + $("#"+fid+"_reset").bind('click', function(){ + var sdata={}, + fl = $("#"+fid); + $t.p.search = false; + if(p.multipleSearch===false) { + sdata[p.sField] = sdata[p.sValue] = sdata[p.sOper] = ""; + } else { + sdata[p.sFilter] = ""; + } + fl[0].resetFilter(); + $.extend($t.p.postData,sdata); + $($t).trigger("reloadGrid",[{page:1}]); + if($.isFunction(p.onReset) ) { + p.onReset(); + } + return false; + }); + showFilter(); + $(".fm-button:not(.ui-state-disabled)",fil).hover( + function(){$(this).addClass('ui-state-hover');}, + function(){$(this).removeClass('ui-state-hover');} + ); + } + }); + }, + editGridRow : function(rowid, p){ + p = $.extend({ + top : 0, + left: 0, + width: 300, + height: 'auto', + dataheight: 'auto', + modal: false, + overlay : 10, + 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, + _savedData : {}, + processing : false, + onClose : null, + ajaxEditOptions : {}, + serializeEditData : null, + viewPagerButtons : true + }, $.jgrid.edit, p || {}); + rp_ge = p; + return this.each(function(){ + var $t = this; + if (!$t.grid || !rowid) { return; } + var gID = $t.p.id, + frmgr = "FrmGrid_"+gID,frmtb = "TblGrid_"+gID, + IDs = {themodal:'editmod'+gID,modalhead:'edithd'+gID,modalcontent:'editcnt'+gID, scrollelm : frmgr}, + onBeforeShow = $.isFunction(rp_ge.beforeShowForm) ? rp_ge.beforeShowForm : false, + onAfterShow = $.isFunction(rp_ge.afterShowForm) ? rp_ge.afterShowForm : false, + onBeforeInit = $.isFunction(rp_ge.beforeInitData) ? rp_ge.beforeInitData : false, + onInitializeForm = $.isFunction(rp_ge.onInitializeForm) ? rp_ge.onInitializeForm : false, + copydata = null, + showFrm = true, + maxCols = 1, maxRows=0, postdata, extpost, newData, diff; + if (rowid === "new") { + rowid = "_empty"; + p.caption=rp_ge.addCaption; + } else { + p.caption=rp_ge.editCaption; + } + if(p.recreateForm===true && $("#"+IDs.themodal).html() !== null) { + $("#"+IDs.themodal).remove(); + } + var closeovrl = true; + if(p.checkOnUpdate && p.jqModal && !p.modal) { + closeovrl = false; + } + function getFormData(){ + $(".FormElement", "#"+frmtb).each(function(i) { + var celm = $(".customelement", this); + if (celm.length) { + var elem = celm[0], nm = $(elem).attr('name'); + $.each($t.p.colModel, function(i,n){ + if(this.name === nm && this.editoptions && $.isFunction(this.editoptions.custom_value)) { + try { + postdata[nm] = this.editoptions.custom_value($("#"+$.jgrid.jqID(nm),"#"+frmtb),'get'); + if (postdata[nm] === undefined) { throw "e1"; } + } catch (e) { + if (e==="e1") { $.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.novalue,jQuery.jgrid.edit.bClose);} + else { $.jgrid.info_dialog(jQuery.jgrid.errors.errcap,e.message,jQuery.jgrid.edit.bClose); } + } + return true; + } + }); + } else { + switch ($(this).get(0).type) { + case "checkbox": + if($(this).attr("checked")) { + postdata[this.name]= $(this).val(); + }else { + var ofv = $(this).attr("offval"); + postdata[this.name]= ofv; + } + break; + case "select-one": + postdata[this.name]= $("option:selected",this).val(); + extpost[this.name]= $("option:selected",this).text(); + break; + case "select-multiple": + postdata[this.name]= $(this).val(); + if(postdata[this.name]) { postdata[this.name] = postdata[this.name].join(","); } + else { postdata[this.name] =""; } + var selectedText = []; + $("option:selected",this).each( + function(i,selected){ + selectedText[i] = $(selected).text(); + } + ); + extpost[this.name]= selectedText.join(","); + break; + case "password": + case "text": + case "textarea": + case "button": + postdata[this.name] = $(this).val(); + + break; + } + if($t.p.autoencode) { postdata[this.name] = $.jgrid.htmlEncode(postdata[this.name]); } + } + }); + return true; + } + function createData(rowid,obj,tb,maxcols){ + var nm, hc,trdata, cnt=0,tmp, dc,elc, retpos=[], ind=false, + tdtmpl = "  ", tmpl="", i; //*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:eq("+i+")",obj.rows[ind]).text(); + } else { + try { + tmp = $.unformat($("td:eq("+i+")",obj.rows[ind]),{rowId:rowid, colModel:this},i); + } catch (_) { + tmp = $("td:eq("+i+")",obj.rows[ind]).html(); + } + } + } + var opt = $.extend({}, this.editoptions || {} ,{id:nm,name:nm}), + 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() : opt.defaultValue; + } + if(!this.edittype) { this.edittype = "text"; } + if($t.p.autoencode) { tmp = $.jgrid.htmlDecode(tmp); } + elc = $.jgrid.createEl(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(rp_ge.checkOnSubmit || rp_ge.checkOnUpdate) { rp_ge._savedData[nm] = tmp; } + $(elc).addClass("FormElement"); + if(this.edittype == 'text' || this.edittype == 'textarea') { + $(elc).addClass("ui-widget-content ui-corner-all"); + } + 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( typeof frmopt.label === 'undefined' ? obj.p.colNames[i]: frmopt.label); + $("td:eq("+(cp-1)+")",trdata[0]).append(frmopt.elmprefix).append(elc).append(frmopt.elmsuffix); + retpos[cnt] = i; + cnt++; + } + }); + if( cnt > 0) { + var idrow = $(""); + idrow[0].rp = cnt+999; + $(tb).append(idrow); + if(rp_ge.checkOnSubmit || rp_ge.checkOnUpdate) { rp_ge._savedData[obj.p.id+"_id"] = rowid; } + } + return retpos; + } + function fillData(rowid,obj,fmid){ + var nm,cnt=0,tmp, fld,opt,vl,vlc; + if(rp_ge.checkOnSubmit || rp_ge.checkOnUpdate) {rp_ge._savedData = {};rp_ge._savedData[obj.p.id+"_id"]=rowid;} + var cm = obj.p.colModel; + if(rowid == '_empty') { + $(cm).each(function(i){ + nm = this.name; + opt = $.extend({}, this.editoptions || {} ); + fld = $("#"+$.jgrid.jqID(nm),"#"+fmid); + if(fld[0] !== null) { + vl = ""; + if(opt.defaultValue ) { + vl = $.isFunction(opt.defaultValue) ? opt.defaultValue() : opt.defaultValue; + if(fld[0].type=='checkbox') { + vlc = vl.toLowerCase(); + if(vlc.search(/(false|0|no|off|undefined)/i)<0 && vlc!=="") { + fld[0].checked = true; + fld[0].defaultChecked = true; + fld[0].value = vl; + } else { + fld.attr({checked:"",defaultChecked:""}); + } + } else {fld.val(vl); } + } else { + if( fld[0].type=='checkbox' ) { + fld[0].checked = false; + fld[0].defaultChecked = false; + vl = $(fld).attr("offval"); + } else if (fld[0].type && fld[0].type.substr(0,6)=='select') { + fld[0].selectedIndex = 0; + } else { + fld.val(vl); + } + } + if(rp_ge.checkOnSubmit===true || rp_ge.checkOnUpdate) { rp_ge._savedData[nm] = vl; } + } + }); + $("#id_g","#"+fmid).val(rowid); + return; + } + var tre = $(obj).jqGrid("getInd",rowid,true); + if(!tre) { return; } + $('td',tre).each( function(i) { + nm = cm[i].name; + // hidden fields are included in the form + if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn' && cm[i].editable===true) { + if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) { + tmp = $(this).text(); + } else { + try { + tmp = $.unformat($(this),{rowId:rowid, colModel:cm[i]},i); + } catch (_) { + tmp = $(this).html(); + } + } + if($t.p.autoencode) { tmp = $.jgrid.htmlDecode(tmp); } + if(rp_ge.checkOnSubmit===true || rp_ge.checkOnUpdate) { rp_ge._savedData[nm] = tmp; } + nm = $.jgrid.jqID(nm); + switch (cm[i].edittype) { + case "password": + case "text": + case "button" : + case "image": + $("#"+nm,"#"+fmid).val(tmp); + break; + case "textarea": + if(tmp == " " || tmp == " " || (tmp.length==1 && tmp.charCodeAt(0)==160) ) {tmp='';} + $("#"+nm,"#"+fmid).val(tmp); + break; + case "select": + var opv = tmp.split(","); + opv = $.map(opv,function(n){return $.trim(n);}); + $("#"+nm+" option","#"+fmid).each(function(j){ + if (!cm[i].editoptions.multiple && (opv[0] == $.trim($(this).text()) || opv[0] == $.trim($(this).val())) ){ + this.selected= true; + } else if (cm[i].editoptions.multiple){ + if( $.inArray($.trim($(this).text()), opv ) > -1 || $.inArray($.trim($(this).val()), opv ) > -1 ){ + this.selected = true; + }else{ + this.selected = false; + } + } else { + this.selected = false; + } + }); + break; + case "checkbox": + tmp = tmp+""; + if(cm[i].editoptions && cm[i].editoptions.value) { + var cb = cm[i].editoptions.value.split(":"); + if(cb[0] == tmp) { + $("#"+nm,"#"+fmid).attr("checked",true); + $("#"+nm,"#"+fmid).attr("defaultChecked",true); //ie + } else { + $("#"+nm,"#"+fmid).attr("checked",false); + $("#"+nm,"#"+fmid).attr("defaultChecked",""); //ie + } + } else { + tmp = tmp.toLowerCase(); + if(tmp.search(/(false|0|no|off|undefined)/i)<0 && tmp!=="") { + $("#"+nm,"#"+fmid).attr("checked",true); + $("#"+nm,"#"+fmid).attr("defaultChecked",true); //ie + } else { + $("#"+nm,"#"+fmid).attr("checked",false); + $("#"+nm,"#"+fmid).attr("defaultChecked",""); //ie + } + } + break; + case 'custom' : + try { + if(cm[i].editoptions && $.isFunction(cm[i].editoptions.custom_value)) { + cm[i].editoptions.custom_value($("#"+nm,"#"+fmid),'set',tmp); + } else { throw "e1"; } + } catch (e) { + if (e=="e1") { $.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.nodefined,jQuery.jgrid.edit.bClose);} + else { $.jgrid.info_dialog(jQuery.jgrid.errors.errcap,e.message,jQuery.jgrid.edit.bClose); } + } + break; + } + cnt++; + } + }); + if(cnt>0) { $("#id_g","#"+frmtb).val(rowid); } + } + function postIt() { + var copydata, ret=[true,"",""], onCS = {}, opers = $t.p.prmNames, idname, oper, key; + if($.isFunction(rp_ge.beforeCheckValues)) { + var retvals = rp_ge.beforeCheckValues(postdata,$("#"+frmgr),postdata[$t.p.id+"_id"] == "_empty" ? opers.addoper : opers.editoper); + if(retvals && typeof(retvals) === 'object') { postdata = retvals; } + } + for( key in postdata ){ + if(postdata.hasOwnProperty(key)) { + ret = $.jgrid.checkValues(postdata[key],key,$t); + if(ret[0] === false) { break; } + } + } + if(ret[0]) { + if( $.isFunction( rp_ge.onclickSubmit)) { onCS = rp_ge.onclickSubmit(rp_ge,postdata) || {}; } + if( $.isFunction(rp_ge.beforeSubmit)) { ret = rp_ge.beforeSubmit(postdata,$("#"+frmgr)); } + } + + if(ret[0] && !rp_ge.processing) { + rp_ge.processing = true; + $("#sData", "#"+frmtb+"_2").addClass('ui-state-active'); + oper = opers.oper; + idname = opers.id; + // we add to pos data array the action - the name is oper + postdata[oper] = ($.trim(postdata[$t.p.id+"_id"]) == "_empty") ? opers.addoper : opers.editoper; + if(postdata[oper] != opers.addoper) { + postdata[idname] = postdata[$t.p.id+"_id"]; + } else { + // check to see if we have allredy this field in the form and if yes lieve it + if( postdata[idname] === undefined ) { postdata[idname] = postdata[$t.p.id+"_id"]; } + } + delete postdata[$t.p.id+"_id"]; + postdata = $.extend(postdata,rp_ge.editData,onCS); + + var ajaxOptions = $.extend({ + url: rp_ge.url ? rp_ge.url : $($t).jqGrid('getGridParam','editurl'), + type: rp_ge.mtype, + data: $.isFunction(rp_ge.serializeEditData) ? rp_ge.serializeEditData(postdata) : postdata, + complete:function(data,Status){ + if(Status != "success") { + ret[0] = false; + if ($.isFunction(rp_ge.errorTextFormat)) { + ret[1] = rp_ge.errorTextFormat(data); + } else { + ret[1] = Status + " Status: '" + data.statusText + "'. Error code: " + data.status; + } + } else { + // data is posted successful + // execute aftersubmit with the returned data from server + if( $.isFunction(rp_ge.afterSubmit) ) { + ret = rp_ge.afterSubmit(data,postdata); + } + } + if(ret[0] === false) { + $("#FormError>td","#"+frmtb).html(ret[1]); + $("#FormError","#"+frmtb).show(); + } else { + // remove some values if formattaer select or checkbox + $.each($t.p.colModel, function(i,n){ + if(extpost[this.name] && this.formatter && this.formatter=='select') { + try {delete extpost[this.name];} catch (e) {} + } + }); + postdata = $.extend(postdata,extpost); + if($t.p.autoencode) { + $.each(postdata,function(n,v){ + postdata[n] = $.jgrid.htmlDecode(v); + }); + } + rp_ge.reloadAfterSubmit = rp_ge.reloadAfterSubmit && $t.p.datatype != "local"; + // the action is add + if(postdata[oper] == opers.addoper ) { + //id processing + // user not set the id ret[2] + if(!ret[2]) { ret[2] = (parseInt($t.p.records,10)+1)+""; } + postdata[idname] = ret[2]; + if(rp_ge.closeAfterAdd) { + if(rp_ge.reloadAfterSubmit) { $($t).trigger("reloadGrid"); } + else { + $($t).jqGrid("addRowData",ret[2],postdata,p.addedrow); + $($t).jqGrid("setSelection",ret[2]); + } + $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge.onClose}); + } else if (rp_ge.clearAfterAdd) { + if(rp_ge.reloadAfterSubmit) { $($t).trigger("reloadGrid"); } + else { $($t).jqGrid("addRowData",ret[2],postdata,p.addedrow); } + fillData("_empty",$t,frmgr); + } else { + if(rp_ge.reloadAfterSubmit) { $($t).trigger("reloadGrid"); } + else { $($t).jqGrid("addRowData",ret[2],postdata,p.addedrow); } + } + } else { + // the action is update + if(rp_ge.reloadAfterSubmit) { + $($t).trigger("reloadGrid"); + if( !rp_ge.closeAfterEdit ) { setTimeout(function(){$($t).jqGrid("setSelection",postdata[idname]);},1000); } + } else { + if($t.p.treeGrid === true) { + $($t).jqGrid("setTreeRow",postdata[idname],postdata); + } else { + $($t).jqGrid("setRowData",postdata[idname],postdata); + } + } + if(rp_ge.closeAfterEdit) { $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge.onClose}); } + } + if($.isFunction(rp_ge.afterComplete)) { + copydata = data; + setTimeout(function(){rp_ge.afterComplete(copydata,postdata,$("#"+frmgr));copydata=null;},500); + } + } + rp_ge.processing=false; + if(rp_ge.checkOnSubmit || rp_ge.checkOnUpdate) { + $("#"+frmgr).data("disabled",false); + if(rp_ge._savedData[$t.p.id+"_id"] !="_empty"){ + for(var key in rp_ge._savedData) { + if(postdata[key]) { + rp_ge._savedData[key] = postdata[key]; + } + } + } + } + $("#sData", "#"+frmtb+"_2").removeClass('ui-state-active'); + try{$(':input:visible',"#"+frmgr)[0].focus();} catch (e){} + }, + error:function(xhr,st,err){ + $("#FormError>td","#"+frmtb).html(st+ " : "+err); + $("#FormError","#"+frmtb).show(); + rp_ge.processing=false; + $("#"+frmgr).data("disabled",false); + $("#sData", "#"+frmtb+"_2").removeClass('ui-state-active'); + } + }, $.jgrid.ajaxOptions, rp_ge.ajaxEditOptions ); + + if (!ajaxOptions.url && !rp_ge.useDataProxy) { + if ($.isFunction($t.p.dataProxy)) { + rp_ge.useDataProxy = true; + } else { + ret[0]=false; ret[1] += " "+$.jgrid.errors.nourl; + } + } + if (ret[0]) { + if (rp_ge.useDataProxy) { $t.p.dataProxy.call($t, ajaxOptions, "set_"+$t.p.id); } + else { $.ajax(ajaxOptions); } + } + } + if(ret[0] === false) { + $("#FormError>td","#"+frmtb).html(ret[1]); + $("#FormError","#"+frmtb).show(); + // return; + } + } + function compareData(nObj, oObj ) { + var ret = false,key; + for (key in nObj) { + if(nObj[key] != oObj[key]) { + ret = true; + break; + } + } + return ret; + } + function checkUpdates () { + var stat = true; + $("#FormError","#"+frmtb).hide(); + if(rp_ge.checkOnUpdate) { + postdata = {}; extpost={}; + getFormData(); + newData = $.extend({},postdata,extpost); + diff = compareData(newData,rp_ge._savedData); + if(diff) { + $("#"+frmgr).data("disabled",true); + $(".confirm","#"+IDs.themodal).show(); + stat = false; + } + } + return stat; + } + function restoreInline() + { + if (rowid !== "_empty" && typeof($t.p.savedRow) !== "undefined" && $t.p.savedRow.length > 0 && $.isFunction($.fn.jqGrid.restoreRow)) { + for (var i=0;i<$t.p.savedRow.length;i++) { + if ($t.p.savedRow[i].id == rowid) { + $($t).jqGrid('restoreRow',rowid); + break; + } + } + } + } + function updateNav(cr,totr){ + if (cr===0) { $("#pData","#"+frmtb+"_2").addClass('ui-state-disabled'); } else { $("#pData","#"+frmtb+"_2").removeClass('ui-state-disabled'); } + if (cr==totr) { $("#nData","#"+frmtb+"_2").addClass('ui-state-disabled'); } else { $("#nData","#"+frmtb+"_2").removeClass('ui-state-disabled'); } + } + function getCurrPos() { + var rowsInGrid = $($t).jqGrid("getDataIDs"), + selrow = $("#id_g","#"+frmtb).val(), + pos = $.inArray(selrow,rowsInGrid); + return [pos,rowsInGrid]; + } + + if ( $("#"+IDs.themodal).html() !== null ) { + if(onBeforeInit) { + showFrm = onBeforeInit($("#"+frmgr)); + if(typeof(showFrm) == "undefined") { + showFrm = true; + } + } + if(showFrm === false) { return; } + restoreInline(); + $(".ui-jqdialog-title","#"+IDs.modalhead).html(p.caption); + $("#FormError","#"+frmtb).hide(); + if(rp_ge.topinfo) { + $(".topinfo","#"+frmtb+"_2").html(rp_ge.topinfo); + $(".tinfo","#"+frmtb+"_2").show(); + } else { + $(".tinfo","#"+frmtb+"_2").hide(); + } + if(rp_ge.bottominfo) { + $(".bottominfo","#"+frmtb+"_2").html(rp_ge.bottominfo); + $(".binfo","#"+frmtb+"_2").show(); + } else { + $(".binfo","#"+frmtb+"_2").hide(); + } + // filldata + fillData(rowid,$t,frmgr); + /// + if(rowid=="_empty" || !rp_ge.viewPagerButtons) { + $("#pData, #nData","#"+frmtb+"_2").hide(); + } else { + $("#pData, #nData","#"+frmtb+"_2").show(); + } + if(rp_ge.processing===true) { + rp_ge.processing=false; + $("#sData", "#"+frmtb+"_2").removeClass('ui-state-active'); + } + if($("#"+frmgr).data("disabled")===true) { + $(".confirm","#"+IDs.themodal).hide(); + $("#"+frmgr).data("disabled",false); + } + if(onBeforeShow) { onBeforeShow($("#"+frmgr)); } + $("#"+IDs.themodal).data("onClose",rp_ge.onClose); + $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal}); + if(!closeovrl) { + $(".jqmOverlay").click(function(){ + if(!checkUpdates()) { return false; } + $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge.onClose}); + return false; + }); + } + if(onAfterShow) { onAfterShow($("#"+frmgr)); } + } else { + var dh = isNaN(p.dataheight) ? p.dataheight : p.dataheight+"px", + frm = $("
").data("disabled",false), + tbl = $("
"); + if(onBeforeInit) { + showFrm = onBeforeInit($("#"+frmgr)); + if(typeof(showFrm) == "undefined") { + showFrm = true; + } + } + if(showFrm === false) { return; } + restoreInline(); + $($t.p.colModel).each( function(i) { + var fmto = this.formoptions; + maxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 ); + maxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 ); + }); + $(frm).append(tbl); + var flr = $(""); + flr[0].rp = 0; + $(tbl).append(flr); + //topinfo + flr = $(""+rp_ge.topinfo+""); + flr[0].rp = 0; + $(tbl).append(flr); + // set the id. + // use carefull only to change here colproperties. + // create data + var rtlb = $t.p.direction == "rtl" ? true :false, + bp = rtlb ? "nData" : "pData", + bn = rtlb ? "pData" : "nData"; + createData(rowid,$t,tbl,maxCols); + // buttons at footer + var bP = "", + bN = "", + bS =""+p.bSubmit+"", + bC =""+p.bCancel+""; + var bt = ""; + bt += ""; + bt += "

"+bS+bC+"
"; + if(maxRows > 0) { + var sd=[]; + $.each($(tbl)[0].rows,function(i,r){ + sd[i] = r; + }); + sd.sort(function(a,b){ + if(a.rp > b.rp) {return 1;} + if(a.rp < b.rp) {return -1;} + return 0; + }); + $.each(sd, function(index, row) { + $('tbody',tbl).append(row); + }); + } + p.gbox = "#gbox_"+gID; + var cle = false; + if(p.closeOnEscape===true){ + p.closeOnEscape = false; + cle = true; + } + var tms = $("").append(frm).append(bt); + $.jgrid.createModal(IDs,tms,p,"#gview_"+$t.p.id,$("#gbox_"+$t.p.id)[0]); + if(rtlb) { + $("#pData, #nData","#"+frmtb+"_2").css("float","right"); + $(".EditButton","#"+frmtb+"_2").css("text-align","left"); + } + if(rp_ge.topinfo) { $(".tinfo","#"+frmtb+"_2").show(); } + if(rp_ge.bottominfo) { $(".binfo","#"+frmtb+"_2").show(); } + tms = null; bt=null; + $("#"+IDs.themodal).keydown( function( e ) { + var wkey = e.target; + if ($("#"+frmgr).data("disabled")===true ) { return false; }//?? + if(rp_ge.savekey[0] === true && e.which == rp_ge.savekey[1]) { // save + if(wkey.tagName != "TEXTAREA") { + $("#sData", "#"+frmtb+"_2").trigger("click"); + return false; + } + } + if(e.which === 27) { + if(!checkUpdates()) { return false; } + if(cle) { $.jgrid.hideModal(this,{gb:p.gbox,jqm:p.jqModal, onClose: rp_ge.onClose}); } + return false; + } + if(rp_ge.navkeys[0]===true) { + if($("#id_g","#"+frmtb).val() == "_empty") { return true; } + if(e.which == rp_ge.navkeys[1]){ //up + $("#pData", "#"+frmtb+"_2").trigger("click"); + return false; + } + if(e.which == rp_ge.navkeys[2]){ //down + $("#nData", "#"+frmtb+"_2").trigger("click"); + return false; + } + } + }); + if(p.checkOnUpdate) { + $("a.ui-jqdialog-titlebar-close span","#"+IDs.themodal).removeClass("jqmClose"); + $("a.ui-jqdialog-titlebar-close","#"+IDs.themodal).unbind("click") + .click(function(){ + if(!checkUpdates()) { return false; } + $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge.onClose}); + return false; + }); + } + p.saveicon = $.extend([true,"left","ui-icon-disk"],p.saveicon); + p.closeicon = $.extend([true,"left","ui-icon-close"],p.closeicon); + // beforeinitdata after creation of the form + if(p.saveicon[0]===true) { + $("#sData","#"+frmtb+"_2").addClass(p.saveicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left') + .append(""); + } + if(p.closeicon[0]===true) { + $("#cData","#"+frmtb+"_2").addClass(p.closeicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left') + .append(""); + } + if(rp_ge.checkOnSubmit || rp_ge.checkOnUpdate) { + bS =""+p.bYes+""; + bN =""+p.bNo+""; + bC =""+p.bExit+""; + var ii, zI = p.zIndex || 999; zI ++; + if ($.browser.msie && $.browser.version ==6) { + ii = ''; + } else { ii="";} + $("
"+p.saveData+"

"+bS+bN+bC+"
").insertAfter("#"+frmgr); + $("#sNew","#"+IDs.themodal).click(function(){ + postIt(); + $("#"+frmgr).data("disabled",false); + $(".confirm","#"+IDs.themodal).hide(); + return false; + }); + $("#nNew","#"+IDs.themodal).click(function(){ + $(".confirm","#"+IDs.themodal).hide(); + $("#"+frmgr).data("disabled",false); + setTimeout(function(){$(":input","#"+frmgr)[0].focus();},0); + return false; + }); + $("#cNew","#"+IDs.themodal).click(function(){ + $(".confirm","#"+IDs.themodal).hide(); + $("#"+frmgr).data("disabled",false); + $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge.onClose}); + return false; + }); + } + // here initform - only once + if(onInitializeForm) { onInitializeForm($("#"+frmgr)); } + if(rowid=="_empty" || !rp_ge.viewPagerButtons) { $("#pData,#nData","#"+frmtb+"_2").hide(); } else { $("#pData,#nData","#"+frmtb+"_2").show(); } + if(onBeforeShow) { onBeforeShow($("#"+frmgr)); } + $("#"+IDs.themodal).data("onClose",rp_ge.onClose); + $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, overlay: p.overlay,modal:p.modal}); + if(!closeovrl) { + $(".jqmOverlay").click(function(){ + if(!checkUpdates()) { return false; } + $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge.onClose}); + return false; + }); + } + if(onAfterShow) { onAfterShow($("#"+frmgr)); } + $(".fm-button","#"+IDs.themodal).hover( + function(){$(this).addClass('ui-state-hover');}, + function(){$(this).removeClass('ui-state-hover');} + ); + $("#sData", "#"+frmtb+"_2").click(function(e){ + postdata = {}; extpost={}; + $("#FormError","#"+frmtb).hide(); + // all depend on ret array + //ret[0] - succes + //ret[1] - msg if not succes + //ret[2] - the id that will be set if reload after submit false + getFormData(); + if(postdata[$t.p.id+"_id"] == "_empty") { postIt(); } + else if(p.checkOnSubmit===true ) { + newData = $.extend({},postdata,extpost); + diff = compareData(newData,rp_ge._savedData); + if(diff) { + $("#"+frmgr).data("disabled",true); + $(".confirm","#"+IDs.themodal).show(); + } else { + postIt(); + } + } else { + postIt(); + } + return false; + }); + $("#cData", "#"+frmtb+"_2").click(function(e){ + if(!checkUpdates()) { return false; } + $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge.onClose}); + return false; + }); + $("#nData", "#"+frmtb+"_2").click(function(e){ + if(!checkUpdates()) { return false; } + $("#FormError","#"+frmtb).hide(); + var npos = getCurrPos(); + npos[0] = parseInt(npos[0],10); + if(npos[0] != -1 && npos[1][npos[0]+1]) { + if($.isFunction(p.onclickPgButtons)) { + p.onclickPgButtons('next',$("#"+frmgr),npos[1][npos[0]]); + } + fillData(npos[1][npos[0]+1],$t,frmgr); + $($t).jqGrid("setSelection",npos[1][npos[0]+1]); + if($.isFunction(p.afterclickPgButtons)) { + p.afterclickPgButtons('next',$("#"+frmgr),npos[1][npos[0]+1]); + } + updateNav(npos[0]+1,npos[1].length-1); + } + return false; + }); + $("#pData", "#"+frmtb+"_2").click(function(e){ + if(!checkUpdates()) { return false; } + $("#FormError","#"+frmtb).hide(); + var ppos = getCurrPos(); + if(ppos[0] != -1 && ppos[1][ppos[0]-1]) { + if($.isFunction(p.onclickPgButtons)) { + p.onclickPgButtons('prev',$("#"+frmgr),ppos[1][ppos[0]]); + } + fillData(ppos[1][ppos[0]-1],$t,frmgr); + $($t).jqGrid("setSelection",ppos[1][ppos[0]-1]); + if($.isFunction(p.afterclickPgButtons)) { + p.afterclickPgButtons('prev',$("#"+frmgr),ppos[1][ppos[0]-1]); + } + updateNav(ppos[0]-1,ppos[1].length-1); + } + return false; + }); + } + var posInit =getCurrPos(); + updateNav(posInit[0],posInit[1].length-1); + + }); + }, + viewGridRow : function(rowid, p){ + p = $.extend({ + top : 0, + left: 0, + width: 0, + height: 'auto', + dataheight: 'auto', + modal: false, + overlay: 10, + drag: true, + resize: true, + jqModal: true, + closeOnEscape : false, + labelswidth: '30%', + closeicon: [], + navkeys: [false,38,40], + onClose: null, + beforeShowForm : null, + beforeInitData : null, + viewPagerButtons : true + }, $.jgrid.view, p || {}); + return this.each(function(){ + var $t = this; + if (!$t.grid || !rowid) { return; } + if(!p.imgpath) { p.imgpath= $t.p.imgpath; } + // I hate to rewrite code, but ... + var gID = $t.p.id, + frmgr = "ViewGrid_"+gID , frmtb = "ViewTbl_"+gID, + IDs = {themodal:'viewmod'+gID,modalhead:'viewhd'+gID,modalcontent:'viewcnt'+gID, scrollelm : frmgr}, + onBeforeInit = $.isFunction(p.beforeInitData) ? p.beforeInitData : false, + showFrm = true, + maxCols = 1, maxRows=0; + function focusaref(){ //Sfari 3 issues + if(p.closeOnEscape===true || p.navkeys[0]===true) { + setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+IDs.modalhead).focus();},0); + } + } + function createData(rowid,obj,tb,maxcols){ + var nm, hc,trdata, cnt=0,tmp, dc, retpos=[], ind=false, + tdtmpl = "  ", tmpl="", + tdtmpl2 = "  ", + fmtnum = ['integer','number','currency'],max1 =0, max2=0 ,maxw,setme, viewfld; + for (var i =1;i<=maxcols;i++) { + tmpl += i == 1 ? tdtmpl : tdtmpl2; + } + // find max number align rigth with property formatter + $(obj.p.colModel).each( function(i) { + if(this.editrules && this.editrules.edithidden === true) { + hc = false; + } else { + hc = this.hidden === true ? true : false; + } + if(!hc && this.align==='right') { + if(this.formatter && $.inArray(this.formatter,fmtnum) !== -1 ) { + max1 = Math.max(max1,parseInt(this.width,10)); + } else { + max2 = Math.max(max2,parseInt(this.width,10)); + } + } + }); + maxw = max1 !==0 ? max1 : max2 !==0 ? max2 : 0; + ind = $(obj).jqGrid("getInd",rowid); + $(obj.p.colModel).each( function(i) { + nm = this.name; + setme = false; + // 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'" : ""; + viewfld = (typeof this.viewable != 'boolean') ? true : this.viewable; + if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn' && viewfld) { + if(ind === false) { + tmp = ""; + } else { + if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) { + tmp = $("td:eq("+i+")",obj.rows[ind]).text(); + } else { + tmp = $("td:eq("+i+")",obj.rows[ind]).html(); + } + } + setme = this.align === 'right' && maxw !==0 ? true : false; + var opt = $.extend({}, this.editoptions || {} ,{id:nm,name:nm}), + frmopt = $.extend({},{rowabove:false,rowcontent:''}, this.formoptions || {}), + rp = parseInt(frmopt.rowpos,10) || cnt+1, + cp = parseInt((parseInt(frmopt.colpos,10) || 1)*2,10); + if(frmopt.rowabove) { + var newdata = $(""+frmopt.rowcontent+""); + $(tb).append(newdata); + newdata[0].rp = rp; + } + trdata = $(tb).find("tr[rowpos="+rp+"]"); + if ( trdata.length===0 ) { + trdata = $("").addClass("FormData").attr("id","trv_"+nm); + $(trdata).append(tmpl); + $(tb).append(trdata); + trdata[0].rp = rp; + } + $("td:eq("+(cp-2)+")",trdata[0]).html(''+ (typeof frmopt.label === 'undefined' ? obj.p.colNames[i]: frmopt.label)+''); + $("td:eq("+(cp-1)+")",trdata[0]).append(""+tmp+"").attr("id","v_"+nm); + if(setme){ + $("td:eq("+(cp-1)+") span",trdata[0]).css({'text-align':'right',width:maxw+"px"}); + } + retpos[cnt] = i; + cnt++; + } + }); + if( cnt > 0) { + var idrow = $(""); + idrow[0].rp = cnt+99; + $(tb).append(idrow); + } + return retpos; + } + function fillData(rowid,obj){ + var nm, hc,cnt=0,tmp, opt,trv; + trv = $(obj).jqGrid("getInd",rowid,true); + if(!trv) { return; } + $('td',trv).each( function(i) { + nm = obj.p.colModel[i].name; + // hidden fields are included in the form + if(obj.p.colModel[i].editrules && obj.p.colModel[i].editrules.edithidden === true) { + hc = false; + } else { + hc = obj.p.colModel[i].hidden === true ? true : false; + } + if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn') { + if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) { + tmp = $(this).text(); + } else { + tmp = $(this).html(); + } + opt = $.extend({},obj.p.colModel[i].editoptions || {}); + nm = $.jgrid.jqID("v_"+nm); + $("#"+nm+" span","#"+frmtb).html(tmp); + if (hc) { $("#"+nm,"#"+frmtb).parents("tr:first").hide(); } + cnt++; + } + }); + if(cnt>0) { $("#id_g","#"+frmtb).val(rowid); } + } + function updateNav(cr,totr){ + if (cr===0) { $("#pData","#"+frmtb+"_2").addClass('ui-state-disabled'); } else { $("#pData","#"+frmtb+"_2").removeClass('ui-state-disabled'); } + if (cr==totr) { $("#nData","#"+frmtb+"_2").addClass('ui-state-disabled'); } else { $("#nData","#"+frmtb+"_2").removeClass('ui-state-disabled'); } + } + function getCurrPos() { + var rowsInGrid = $($t).jqGrid("getDataIDs"), + selrow = $("#id_g","#"+frmtb).val(), + pos = $.inArray(selrow,rowsInGrid); + return [pos,rowsInGrid]; + } + + if ( $("#"+IDs.themodal).html() !== null ) { + if(onBeforeInit) { + showFrm = onBeforeInit($("#"+frmgr)); + if(typeof(showFrm) == "undefined") { + showFrm = true; + } + } + if(showFrm === false) { return; } + $(".ui-jqdialog-title","#"+IDs.modalhead).html(p.caption); + $("#FormError","#"+frmtb).hide(); + fillData(rowid,$t); + if($.isFunction(p.beforeShowForm)) { p.beforeShowForm($("#"+frmgr)); } + $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal}); + focusaref(); + } else { + var dh = isNaN(p.dataheight) ? p.dataheight : p.dataheight+"px"; + var frm = $("
"), + tbl =$("
"); + if(onBeforeInit) { + showFrm = onBeforeInit($("#"+frmgr)); + if(typeof(showFrm) == "undefined") { + showFrm = true; + } + } + if(showFrm === false) { return; } + $($t.p.colModel).each( function(i) { + var fmto = this.formoptions; + maxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 ); + maxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 ); + }); + // set the id. + $(frm).append(tbl); + createData(rowid, $t, tbl, maxCols); + var rtlb = $t.p.direction == "rtl" ? true :false, + bp = rtlb ? "nData" : "pData", + bn = rtlb ? "pData" : "nData", + + // buttons at footer + bP = "", + bN = "", + bC =""+p.bClose+""; + if(maxRows > 0) { + var sd=[]; + $.each($(tbl)[0].rows,function(i,r){ + sd[i] = r; + }); + sd.sort(function(a,b){ + if(a.rp > b.rp) {return 1;} + if(a.rp < b.rp) {return -1;} + return 0; + }); + $.each(sd, function(index, row) { + $('tbody',tbl).append(row); + }); + } + p.gbox = "#gbox_"+gID; + var cle = false; + if(p.closeOnEscape===true){ + p.closeOnEscape = false; + cle = true; + } + var bt = $("").append(frm).append("
"+bC+"
"); + $.jgrid.createModal(IDs,bt,p,"#gview_"+$t.p.id,$("#gview_"+$t.p.id)[0]); + if(rtlb) { + $("#pData, #nData","#"+frmtb+"_2").css("float","right"); + $(".EditButton","#"+frmtb+"_2").css("text-align","left"); + } + if(!p.viewPagerButtons) { $("#pData, #nData","#"+frmtb+"_2").hide(); } + bt = null; + $("#"+IDs.themodal).keydown( function( e ) { + if(e.which === 27) { + if(cle) { $.jgrid.hideModal(this,{gb:p.gbox,jqm:p.jqModal, onClose: p.onClose}); } + return false; + } + if(p.navkeys[0]===true) { + if(e.which === p.navkeys[1]){ //up + $("#pData", "#"+frmtb+"_2").trigger("click"); + return false; + } + if(e.which === p.navkeys[2]){ //down + $("#nData", "#"+frmtb+"_2").trigger("click"); + return false; + } + } + }); + p.closeicon = $.extend([true,"left","ui-icon-close"],p.closeicon); + if(p.closeicon[0]===true) { + $("#cData","#"+frmtb+"_2").addClass(p.closeicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left') + .append(""); + } + if($.isFunction(p.beforeShowForm)) { p.beforeShowForm($("#"+frmgr)); } + $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, modal:p.modal}); + $(".fm-button:not(.ui-state-disabled)","#"+frmtb+"_2").hover( + function(){$(this).addClass('ui-state-hover');}, + function(){$(this).removeClass('ui-state-hover');} + ); + focusaref(); + $("#cData", "#"+frmtb+"_2").click(function(e){ + $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: p.onClose}); + return false; + }); + $("#nData", "#"+frmtb+"_2").click(function(e){ + $("#FormError","#"+frmtb).hide(); + var npos = getCurrPos(); + npos[0] = parseInt(npos[0],10); + if(npos[0] != -1 && npos[1][npos[0]+1]) { + if($.isFunction(p.onclickPgButtons)) { + p.onclickPgButtons('next',$("#"+frmgr),npos[1][npos[0]]); + } + fillData(npos[1][npos[0]+1],$t); + $($t).jqGrid("setSelection",npos[1][npos[0]+1]); + if($.isFunction(p.afterclickPgButtons)) { + p.afterclickPgButtons('next',$("#"+frmgr),npos[1][npos[0]+1]); + } + updateNav(npos[0]+1,npos[1].length-1); + } + focusaref(); + return false; + }); + $("#pData", "#"+frmtb+"_2").click(function(e){ + $("#FormError","#"+frmtb).hide(); + var ppos = getCurrPos(); + if(ppos[0] != -1 && ppos[1][ppos[0]-1]) { + if($.isFunction(p.onclickPgButtons)) { + p.onclickPgButtons('prev',$("#"+frmgr),ppos[1][ppos[0]]); + } + fillData(ppos[1][ppos[0]-1],$t); + $($t).jqGrid("setSelection",ppos[1][ppos[0]-1]); + if($.isFunction(p.afterclickPgButtons)) { + p.afterclickPgButtons('prev',$("#"+frmgr),ppos[1][ppos[0]-1]); + } + updateNav(ppos[0]-1,ppos[1].length-1); + } + focusaref(); + return false; + }); + } + var posInit =getCurrPos(); + updateNav(posInit[0],posInit[1].length-1); + }); + }, + delGridRow : function(rowids,p) { + p = $.extend({ + top : 0, + left: 0, + width: 240, + height: 'auto', + dataheight : 'auto', + modal: false, + overlay: 10, + drag: true, + resize: true, + url : '', + mtype : "POST", + reloadAfterSubmit: true, + beforeShowForm: null, + beforeInitData : null, + afterShowForm: null, + beforeSubmit: null, + onclickSubmit: null, + afterSubmit: null, + jqModal : true, + closeOnEscape : false, + delData: {}, + delicon : [], + cancelicon : [], + onClose : null, + ajaxDelOptions : {}, + processing : false, + serializeDelData : null, + useDataProxy : false + }, $.jgrid.del, p ||{}); + rp_ge = p; + return this.each(function(){ + var $t = this; + if (!$t.grid ) { return; } + if(!rowids) { return; } + var onBeforeShow = typeof p.beforeShowForm === 'function' ? true: false, + onAfterShow = typeof p.afterShowForm === 'function' ? true: false, + onBeforeInit = $.isFunction(p.beforeInitData) ? p.beforeInitData : false, + gID = $t.p.id, onCS = {}, + showFrm = true, + dtbl = "DelTbl_"+gID,postd, idname, opers, oper, + IDs = {themodal:'delmod'+gID,modalhead:'delhd'+gID,modalcontent:'delcnt'+gID, scrollelm: dtbl}; + if (jQuery.isArray(rowids)) { rowids = rowids.join(); } + if ( $("#"+IDs.themodal).html() !== null ) { + if(onBeforeInit) { + showFrm = onBeforeInit( $("#"+dtbl)); + if(typeof(showFrm) == "undefined") { + showFrm = true; + } + } + if(showFrm === false) { return; } + $("#DelData>td","#"+dtbl).text(rowids); + $("#DelError","#"+dtbl).hide(); + if( rp_ge.processing === true) { + rp_ge.processing=false; + $("#dData", "#"+dtbl).removeClass('ui-state-active'); + } + if(onBeforeShow) { p.beforeShowForm($("#"+dtbl)); } + $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal,jqM: false, overlay: p.overlay, modal:p.modal}); + if(onAfterShow) { p.afterShowForm($("#"+dtbl)); } + } else { + var dh = isNaN(p.dataheight) ? p.dataheight : p.dataheight+"px"; + var tbl = "
"; + tbl += ""; + // error data + tbl += ""; + tbl += ""; + tbl += ""; + // buttons at footer + tbl += "
"+p.msg+"
 
"; + var bS = ""+p.bSubmit+"", + bC = ""+p.bCancel+""; + tbl += "

"+bS+" "+bC+"
"; + p.gbox = "#gbox_"+gID; + $.jgrid.createModal(IDs,tbl,p,"#gview_"+$t.p.id,$("#gview_"+$t.p.id)[0]); + + if(onBeforeInit) { + showFrm = onBeforeInit( $("#"+dtbl) ); + if(typeof(showFrm) == "undefined") { + showFrm = true; + } + } + if(showFrm === false) { return; } + + $(".fm-button","#"+dtbl+"_2").hover( + function(){$(this).addClass('ui-state-hover');}, + function(){$(this).removeClass('ui-state-hover');} + ); + p.delicon = $.extend([true,"left","ui-icon-scissors"],p.delicon); + p.cancelicon = $.extend([true,"left","ui-icon-cancel"],p.cancelicon); + if(p.delicon[0]===true) { + $("#dData","#"+dtbl+"_2").addClass(p.delicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left') + .append(""); + } + if(p.cancelicon[0]===true) { + $("#eData","#"+dtbl+"_2").addClass(p.cancelicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left') + .append(""); + } + $("#dData","#"+dtbl+"_2").click(function(e){ + var ret=[true,""]; onCS = {}; + var postdata = $("#DelData>td","#"+dtbl).text(); //the pair is name=val1,val2,... + if( typeof p.onclickSubmit === 'function' ) { onCS = p.onclickSubmit(rp_ge, postdata) || {}; } + if( typeof p.beforeSubmit === 'function' ) { ret = p.beforeSubmit(postdata); } + if(ret[0] && !rp_ge.processing) { + rp_ge.processing = true; + $(this).addClass('ui-state-active'); + opers = $t.p.prmNames; + postd = $.extend({},rp_ge.delData, onCS); + oper = opers.oper; + postd[oper] = opers.deloper; + idname = opers.id; + postd[idname] = postdata; + + var ajaxOptions = $.extend({ + url: rp_ge.url ? rp_ge.url : $($t).jqGrid('getGridParam','editurl'), + type: p.mtype, + data: $.isFunction(p.serializeDelData) ? p.serializeDelData(postd) : postd, + complete:function(data,Status){ + if(Status != "success") { + ret[0] = false; + if ($.isFunction(rp_ge.errorTextFormat)) { + ret[1] = rp_ge.errorTextFormat(data); + } else { + ret[1] = Status + " Status: '" + data.statusText + "'. Error code: " + data.status; + } + } else { + // data is posted successful + // execute aftersubmit with the returned data from server + if( typeof rp_ge.afterSubmit === 'function' ) { + ret = rp_ge.afterSubmit(data,postd); + } + } + if(ret[0] === false) { + $("#DelError>td","#"+dtbl).html(ret[1]); + $("#DelError","#"+dtbl).show(); + } else { + if(rp_ge.reloadAfterSubmit && $t.p.datatype != "local") { + $($t).trigger("reloadGrid"); + } else { + var toarr = []; + toarr = postdata.split(","); + if($t.p.treeGrid===true){ + try {$($t).jqGrid("delTreeNode",toarr[0]);} catch(e){} + } else { + for(var i=0;itd","#"+dtbl).html(st+ " : "+err); + $("#DelError","#"+dtbl).show(); + rp_ge.processing=false; + $("#dData", "#"+dtbl+"_2").removeClass('ui-state-active'); + } + }, $.jgrid.ajaxOptions, p.ajaxDelOptions); + + + if (!ajaxOptions.url && !rp_ge.useDataProxy) { + if ($.isFunction($t.p.dataProxy)) { + rp_ge.useDataProxy = true; + } else { + ret[0]=false; ret[1] += " "+$.jgrid.errors.nourl; + } + } + if (ret[0]) { + if (rp_ge.useDataProxy) { $t.p.dataProxy.call($t, ajaxOptions, "del_"+$t.p.id); } + else { $.ajax(ajaxOptions); } + } + } + + if(ret[0] === false) { + $("#DelError>td","#"+dtbl).html(ret[1]); + $("#DelError","#"+dtbl).show(); + } + return false; + }); + $("#eData", "#"+dtbl+"_2").click(function(e){ + $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge.onClose}); + return false; + }); + if(onBeforeShow) { p.beforeShowForm($("#"+dtbl)); } + $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, overlay: p.overlay, modal:p.modal}); + if(onAfterShow) { p.afterShowForm($("#"+dtbl)); } + } + if(p.closeOnEscape===true) { + setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+IDs.modalhead).focus();},0); + } + }); + }, + navGrid : function (elem, o, pEdit,pAdd,pDel,pSearch, pView) { + o = $.extend({ + edit: true, + editicon: "ui-icon-pencil", + add: true, + addicon:"ui-icon-plus", + del: true, + delicon:"ui-icon-trash", + search: true, + searchicon:"ui-icon-search", + refresh: true, + refreshicon:"ui-icon-refresh", + refreshstate: 'firstpage', + view: false, + viewicon : "ui-icon-document", + position : "left", + closeOnEscape : true, + beforeRefresh : null, + afterRefresh : null, + cloneToTop : false + }, $.jgrid.nav, o ||{}); + return this.each(function() { + if(this.nav) { return; } + var alertIDs = {themodal:'alertmod',modalhead:'alerthd',modalcontent:'alertcnt'}, + $t = this, vwidth, vheight, twd, tdw; + if(!$t.grid || typeof elem != 'string') { return; } + if ($("#"+alertIDs.themodal).html() === null) { + if (typeof window.innerWidth != 'undefined') { + vwidth = window.innerWidth; + vheight = window.innerHeight; + } else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth !== 0) { + vwidth = document.documentElement.clientWidth; + vheight = document.documentElement.clientHeight; + } else { + vwidth=1024; + vheight=768; + } + $.jgrid.createModal(alertIDs,"
"+o.alerttext+"
",{gbox:"#gbox_"+$t.p.id,jqModal:true,drag:true,resize:true,caption:o.alertcap,top:vheight/2-25,left:vwidth/2-100,width:200,height:'auto',closeOnEscape:o.closeOnEscape},"","",true); + } + var clone = 1; + if(o.cloneToTop && $t.p.toppager) { clone = 2; } + for(var i = 0; i"), + sep = "", + pgid, elemids; + if(i===0) { + pgid = elem; + elemids = $t.p.id; + if(pgid == $t.p.toppager) { + elemids += "_top"; + clone = 1; + } + } else { + pgid = $t.p.toppager; + elemids = $t.p.id+"_top"; + } + if($t.p.direction == "rtl") { $(navtbl).attr("dir","rtl").css("float","right"); } + if (o.add) { + pAdd = pAdd || {}; + tbd = $(""); + $(tbd).append("
"+o.addtext+"
"); + $("tr",navtbl).append(tbd); + $(tbd,navtbl) + .attr({"title":o.addtitle || "",id : pAdd.id || "add_"+elemids}) + .click(function(){ + if (!$(this).hasClass('ui-state-disabled')) { + if (typeof o.addfunc == 'function') { + o.addfunc(); + } else { + $($t).jqGrid("editGridRow","new",pAdd); + } + } + return false; + }).hover( + function () { + if (!$(this).hasClass('ui-state-disabled')) { + $(this).addClass("ui-state-hover"); + } + }, + function () {$(this).removeClass("ui-state-hover");} + ); + tbd = null; + } + if (o.edit) { + tbd = $(""); + pEdit = pEdit || {}; + $(tbd).append("
"+o.edittext+"
"); + $("tr",navtbl).append(tbd); + $(tbd,navtbl) + .attr({"title":o.edittitle || "",id: pEdit.id || "edit_"+elemids}) + .click(function(){ + if (!$(this).hasClass('ui-state-disabled')) { + var sr = $t.p.selrow; + if (sr) { + if(typeof o.editfunc == 'function') { + o.editfunc(sr); + } else { + $($t).jqGrid("editGridRow",sr,pEdit); + } + } else { + $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$t.p.id,jqm:true}); + $("#jqg_alrt").focus(); + } + } + return false; + }).hover( + function () { + if (!$(this).hasClass('ui-state-disabled')) { + $(this).addClass("ui-state-hover"); + } + }, + function () {$(this).removeClass("ui-state-hover");} + ); + tbd = null; + } + if (o.view) { + tbd = $(""); + pView = pView || {}; + $(tbd).append("
"+o.viewtext+"
"); + $("tr",navtbl).append(tbd); + $(tbd,navtbl) + .attr({"title":o.viewtitle || "",id: pView.id || "view_"+elemids}) + .click(function(){ + if (!$(this).hasClass('ui-state-disabled')) { + var sr = $t.p.selrow; + if (sr) { + $($t).jqGrid("viewGridRow",sr,pView); + } else { + $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$t.p.id,jqm:true}); + $("#jqg_alrt").focus(); + } + } + return false; + }).hover( + function () { + if (!$(this).hasClass('ui-state-disabled')) { + $(this).addClass("ui-state-hover"); + } + }, + function () {$(this).removeClass("ui-state-hover");} + ); + tbd = null; + } + if (o.del) { + tbd = $(""); + pDel = pDel || {}; + $(tbd).append("
"+o.deltext+"
"); + $("tr",navtbl).append(tbd); + $(tbd,navtbl) + .attr({"title":o.deltitle || "",id: pDel.id || "del_"+elemids}) + .click(function(){ + if (!$(this).hasClass('ui-state-disabled')) { + var dr; + if($t.p.multiselect) { + dr = $t.p.selarrrow; + if(dr.length===0) { dr = null; } + } else { + dr = $t.p.selrow; + } + if(dr){ + if("function" == typeof o.delfunc){ + o.delfunc(dr); + }else{ + $($t).jqGrid("delGridRow",dr,pDel); + } + } else { + $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$t.p.id,jqm:true}); $("#jqg_alrt").focus(); + } + } + return false; + }).hover( + function () { + if (!$(this).hasClass('ui-state-disabled')) { + $(this).addClass("ui-state-hover"); + } + }, + function () {$(this).removeClass("ui-state-hover");} + ); + tbd = null; + } + if(o.add || o.edit || o.del || o.view) { $("tr",navtbl).append(sep); } + if (o.search) { + tbd = $(""); + pSearch = pSearch || {}; + $(tbd).append("
"+o.searchtext+"
"); + $("tr",navtbl).append(tbd); + $(tbd,navtbl) + .attr({"title":o.searchtitle || "",id:pSearch.id || "search_"+elemids}) + .click(function(){ + if (!$(this).hasClass('ui-state-disabled')) { + $($t).jqGrid("searchGrid",pSearch); + } + return false; + }).hover( + function () { + if (!$(this).hasClass('ui-state-disabled')) { + $(this).addClass("ui-state-hover"); + } + }, + function () {$(this).removeClass("ui-state-hover");} + ); + tbd = null; + } + if (o.refresh) { + tbd = $(""); + $(tbd).append("
"+o.refreshtext+"
"); + $("tr",navtbl).append(tbd); + $(tbd,navtbl) + .attr({"title":o.refreshtitle || "",id: "refresh_"+elemids}) + .click(function(){ + if (!$(this).hasClass('ui-state-disabled')) { + if($.isFunction(o.beforeRefresh)) { o.beforeRefresh(); } + $t.p.search = false; + try { + var gID = $t.p.id; + $t.p.postData.filters =""; + $("#fbox_"+gID).jqFilter('resetFilter'); + if($.isFunction($t.clearToolbar)) { $t.clearToolbar(false); } + } catch (e) {} + switch (o.refreshstate) { + case 'firstpage': + $($t).trigger("reloadGrid", [{page:1}]); + break; + case 'current': + $($t).trigger("reloadGrid", [{current:true}]); + break; + } + if($.isFunction(o.afterRefresh)) { o.afterRefresh(); } + } + return false; + }).hover( + function () { + if (!$(this).hasClass('ui-state-disabled')) { + $(this).addClass("ui-state-hover"); + } + }, + function () {$(this).removeClass("ui-state-hover");} + ); + tbd = null; + } + tdw = $(".ui-jqgrid").css("font-size") || "11px"; + $('body').append(""); + twd = $(navtbl).clone().appendTo("#testpg2").width(); + $("#testpg2").remove(); + $(pgid+"_"+o.position,pgid).append(navtbl); + if($t.p._nvtd) { + if(twd > $t.p._nvtd[0] ) { + $(pgid+"_"+o.position,pgid).width(twd); + $t.p._nvtd[0] = twd; + } + $t.p._nvtd[1] = twd; + } + tdw =null; twd=null; navtbl =null; + this.nav = true; + } + }); + }, + navButtonAdd : function (elem, p) { + p = $.extend({ + caption : "newButton", + title: '', + buttonicon : 'ui-icon-newwin', + onClickButton: null, + position : "last", + cursor : 'pointer' + }, p ||{}); + return this.each(function() { + if( !this.grid) { return; } + if( elem.indexOf("#") !== 0) { elem = "#"+elem; } + var findnav = $(".navtable",elem)[0], $t = this; + if (findnav) { + if( p.id && $("#"+p.id, findnav).html() !== null ) { return; } + var tbd = $(""); + if(p.buttonicon.toString().toUpperCase() == "NONE") { + $(tbd).addClass('ui-pg-button ui-corner-all').append("
"+p.caption+"
"); + } else { + $(tbd).addClass('ui-pg-button ui-corner-all').append("
"+p.caption+"
"); + } + if(p.id) {$(tbd).attr("id",p.id);} + if(p.position=='first'){ + if(findnav.rows[0].cells.length ===0 ) { + $("tr",findnav).append(tbd); + } else { + $("tr td:eq(0)",findnav).before(tbd); + } + } else { + $("tr",findnav).append(tbd); + } + $(tbd,findnav) + .attr("title",p.title || "") + .click(function(e){ + if (!$(this).hasClass('ui-state-disabled')) { + if ($.isFunction(p.onClickButton) ) { p.onClickButton.call($t,e); } + } + return false; + }) + .hover( + function () { + if (!$(this).hasClass('ui-state-disabled')) { + $(this).addClass('ui-state-hover'); + } + }, + function () {$(this).removeClass("ui-state-hover");} + ); + } + }); + }, + navSeparatorAdd:function (elem,p) { + p = $.extend({ + sepclass : "ui-separator", + sepcontent: '' + }, p ||{}); + return this.each(function() { + if( !this.grid) { return; } + if( elem.indexOf("#") !== 0) { elem = "#"+elem; } + var findnav = $(".navtable",elem)[0]; + if(findnav) { + var sep = ""+p.sepcontent+""; + $("tr",findnav).append(sep); + } + }); + }, + GridToForm : function( rowid, formid ) { + return this.each(function(){ + var $t = this; + if (!$t.grid) { return; } + var rowdata = $($t).jqGrid("getRowData",rowid); + if (rowdata) { + for(var i in rowdata) { + if ( $("[name="+i+"]",formid).is("input:radio") || $("[name="+i+"]",formid).is("input:checkbox")) { + $("[name="+i+"]",formid).each( function() { + if( $(this).val() == rowdata[i] ) { + $(this).attr("checked","checked"); + } else { + $(this).attr("checked",""); + } + }); + } else { + // this is very slow on big table and form. + $("[name="+i+"]",formid).val(rowdata[i]); + } + } + } + }); + }, + FormToGrid : function(rowid, formid, mode, position){ + return this.each(function() { + var $t = this; + if(!$t.grid) { return; } + if(!mode) { mode = 'set'; } + if(!position) { position = 'first'; } + var fields = $(formid).serializeArray(); + var griddata = {}; + $.each(fields, function(i, field){ + griddata[field.name] = field.value; + }); + if(mode=='add') { $($t).jqGrid("addRowData",rowid,griddata, position); } + else if(mode=='set') { $($t).jqGrid("setRowData",rowid,griddata); } + }); + } +}); +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/grid.grouping.js b/addons/base/static/lib/jquery.jqGrid/js/grid.grouping.js new file mode 100644 index 00000000000..1efa53165e5 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/grid.grouping.js @@ -0,0 +1,255 @@ +// Grouping module +;(function($){ +$.jgrid.extend({ + groupingSetup : function () { + return this.each(function (){ + var $t = this, + grp = $t.p.groupingView; + if(grp !== null && ( (typeof grp === 'object') || $.isFunction(grp) ) ) { + if(!grp.groupField.length) { + $t.p.grouping = false; + } else { + for(var i=0;i"; + try { + gv = $t.formatter(hid, grp.sortnames[0][i], cp, grp.sortitems[0] ); + } catch (egv) { + gv = grp.sortnames[0][i]; + } + str += ""+icon+$.jgrid.format(grp.groupText[0], gv, grdata[n].length)+""; + for(var kk=0;kk"; + var fdata = grp.summaryval[0][n], + cm = $t.p.colModel, + vv, grlen = grdata[n].length; + for(var k=0; k ", + tplfld = "{0}"; + $.each(fdata,function(){ + if(this.nm == cm[k].name) { + if(cm[k].summaryTpl) { + tplfld = cm[k].summaryTpl; + } + if(this.st == 'avg') { + if(this.v && grlen > 0) { + this.v = (this.v/grlen); + } + } + try { + vv = $t.formatter('', this.v, k, this); + } catch (ef) { + vv = this.v; + } + tmpdata= ""+$.jgrid.format(tplfld,vv)+ ""; + return false; + } + }); + str += tmpdata; + } + str += ""; + } + }); + $("#"+$t.p.id+" tbody:first").append(str); + // free up memory + str = null; + }); + }, + groupingGroupBy : function (name, options, current) { + return this.each(function(){ + var $t = this; + if(typeof(name) == "string") { + name = [name]; + } + var grp = $t.p.groupingView; + $t.p.grouping = true; + // show previoous hidden groups if they are hidden + for(var i=0;igrid", + data: "roots>rows" + }, + jsonGrid :{ + config : "grid", + data: "data" + }, + ajaxOptions :{} + }, o || {}); + return this.each(function(){ + var $t = this; + var XmlConvert = function (xml,o) { + var cnfg = $(o.xmlGrid.config,xml)[0]; + var xmldata = $(o.xmlGrid.data,xml)[0], jstr, jstr1; + if(xmlJsonClass.xml2json && $.jgrid.parse) { + jstr = xmlJsonClass.xml2json(cnfg," "); + jstr = $.jgrid.parse(jstr); + for(var key in jstr) { + if(jstr.hasOwnProperty(key)) { + jstr1=jstr[key]; + } + } + if(xmldata) { + // save the datatype + var svdatatype = jstr.grid.datatype; + jstr.grid.datatype = 'xmlstring'; + jstr.grid.datastr = xml; + $($t).jqGrid( jstr1 ).jqGrid("setGridParam",{datatype:svdatatype}); + } else { + $($t).jqGrid( jstr1 ); + } + jstr = null;jstr1=null; + } else { + alert("xml2json or parse are not present"); + } + }; + var JsonConvert = function (jsonstr,o){ + if (jsonstr && typeof jsonstr == 'string') { + var json = $.jgrid.parse(jsonstr); + var gprm = json[o.jsonGrid.config]; + var jdata = json[o.jsonGrid.data]; + if(jdata) { + var svdatatype = gprm.datatype; + gprm.datatype = 'jsonstring'; + gprm.datastr = jdata; + $($t).jqGrid( gprm ).jqGrid("setGridParam",{datatype:svdatatype}); + } else { + $($t).jqGrid( gprm ); + } + } + }; + switch (o.imptype){ + case 'xml': + $.ajax($.extend({ + url:o.impurl, + type:o.mtype, + data: o.impData, + dataType:"xml", + complete: function(xml,stat) { + if(stat == 'success') { + XmlConvert(xml.responseXML,o); + if($.isFunction(o.importComplete)) { + o.importComplete(xml); + } + } + xml=null; + } + }, o.ajaxOptions)); + break; + case 'xmlstring' : + // we need to make just the conversion and use the same code as xml + if(o.impstring && typeof o.impstring == 'string') { + var xmld = $.jgrid.stringToDoc(o.impstring); + if(xmld) { + XmlConvert(xmld,o); + if($.isFunction(o.importComplete)) { + o.importComplete(xmld); + } + o.impstring = null; + } + xmld = null; + } + break; + case 'json': + $.ajax($.extend({ + url:o.impurl, + type:o.mtype, + data: o.impData, + dataType:"json", + complete: function(json,stat) { + if(stat == 'success') { + JsonConvert(json.responseText,o ); + if($.isFunction(o.importComplete)) { + o.importComplete(json); + } + } + json=null; + } + }, o.ajaxOptions )); + break; + case 'jsonstring' : + if(o.impstring && typeof o.impstring == 'string') { + JsonConvert(o.impstring,o ); + if($.isFunction(o.importComplete)) { + o.importComplete(o.impstring); + } + o.impstring = null; + } + break; + } + }); + }, + jqGridExport : function(o) { + o = $.extend({ + exptype : "xmlstring", + root: "grid", + ident: "\t" + }, o || {}); + var ret = null; + this.each(function () { + if(!this.grid) { return;} + var gprm = $.extend({},$(this).jqGrid("getGridParam")); + // we need to check for: + // 1.multiselect, 2.subgrid 3. treegrid and remove the unneded columns from colNames + if(gprm.rownumbers) { + gprm.colNames.splice(0,1); + gprm.colModel.splice(0,1); + } + if(gprm.multiselect) { + gprm.colNames.splice(0,1); + gprm.colModel.splice(0,1); + } + if(gprm.subGrid) { + gprm.colNames.splice(0,1); + gprm.colModel.splice(0,1); + } + gprm.knv = null; + if(gprm.treeGrid) { + for (var key in gprm.treeReader) { + if(gprm.treeReader.hasOwnProperty(key)) { + gprm.colNames.splice(gprm.colNames.length-1); + gprm.colModel.splice(gprm.colModel.length-1); + } + } + } + switch (o.exptype) { + case 'xmlstring' : + ret = "<"+o.root+">"+xmlJsonClass.json2xml(gprm,o.ident)+""; + break; + case 'jsonstring' : + ret = "{"+ xmlJsonClass.toJson(gprm,o.root,o.ident)+"}"; + if(gprm.postData.filters !== undefined) { + ret=ret.replace(/filters":"/,'filters":'); + ret=ret.replace(/}]}"/,'}]}'); + } + break; + } + }); + return ret; + }, + excelExport : function(o) { + o = $.extend({ + exptype : "remote", + url : null, + oper: "oper", + tag: "excel", + exportOptions : {} + }, o || {}); + return this.each(function(){ + if(!this.grid) { return;} + var url; + if(o.exptype == "remote") { + var pdata = $.extend({},this.p.postData); + pdata[o.oper] = o.tag; + var params = jQuery.param(pdata); + if(o.url.indexOf("?") != -1) { url = o.url+"&"+params; } + else { url = o.url+"?"+params; } + window.location = url; + } + }); + } + }); +})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/grid.inlinedit.js b/addons/base/static/lib/jquery.jqGrid/js/grid.inlinedit.js new file mode 100644 index 00000000000..9f8e921f7a7 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/grid.inlinedit.js @@ -0,0 +1,255 @@ +;(function($){ +/** + * jqGrid extension for manipulating Grid Data + * 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 +**/ +$.jgrid.extend({ +//Editing + editRow : function(rowid,keys,oneditfunc,succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc) { + return this.each(function(){ + var $t = this, nm, tmp, editable, cnt=0, focus=null, svr={}, ind,cm; + if (!$t.grid ) { return; } + ind = $($t).jqGrid("getInd",rowid,true); + if( ind === false ) {return;} + editable = $(ind).attr("editable") || "0"; + if (editable == "0" && !$(ind).hasClass("not-editable-row")) { + cm = $t.p.colModel; + $('td',ind).each( function(i) { + nm = cm[i].name; + var treeg = $t.p.treeGrid===true && nm == $t.p.ExpandColumn; + if(treeg) { tmp = $("span:first",this).html();} + else { + try { + tmp = $.unformat(this,{rowId:rowid, colModel:cm[i]},i); + } catch (_) { + tmp = $(this).html(); + } + } + if ( nm != 'cb' && nm != 'subgrid' && nm != 'rn') { + if($t.p.autoencode) { tmp = $.jgrid.htmlDecode(tmp); } + svr[nm]=tmp; + if(cm[i].editable===true) { + if(focus===null) { focus = i; } + if (treeg) { $("span:first",this).html(""); } + else { $(this).html(""); } + var opt = $.extend({},cm[i].editoptions || {},{id:rowid+"_"+nm,name:nm}); + if(!cm[i].edittype) { cm[i].edittype = "text"; } + var elc = $.jgrid.createEl(cm[i].edittype,opt,tmp,true,$.extend({},$.jgrid.ajaxOptions,$t.p.ajaxSelectOptions || {})); + $(elc).addClass("editable"); + if(treeg) { $("span:first",this).append(elc); } + else { $(this).append(elc); } + //Again IE + if(cm[i].edittype == "select" && cm[i].editoptions.multiple===true && $.browser.msie) { + $(elc).width($(elc).width()); + } + cnt++; + } + } + }); + if(cnt > 0) { + svr.id = rowid; $t.p.savedRow.push(svr); + $(ind).attr("editable","1"); + $("td:eq("+focus+") input",ind).focus(); + if(keys===true) { + $(ind).bind("keydown",function(e) { + if (e.keyCode === 27) {$($t).jqGrid("restoreRow",rowid, afterrestorefunc);} + if (e.keyCode === 13) { + var ta = e.target; + if(ta.tagName == 'TEXTAREA') { return true; } + $($t).jqGrid("saveRow",rowid,succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc ); + return false; + } + e.stopPropagation(); + }); + } + if( $.isFunction(oneditfunc)) { oneditfunc.call($t, rowid); } + } + } + }); + }, + saveRow : function(rowid, succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc) { + return this.each(function(){ + var $t = this, nm, tmp={}, tmp2={}, editable, fr, cv, ind; + if (!$t.grid ) { return; } + ind = $($t).jqGrid("getInd",rowid,true); + if(ind === false) {return;} + editable = $(ind).attr("editable"); + url = url ? url : $t.p.editurl; + if (editable==="1") { + var cm; + $("td",ind).each(function(i) { + cm = $t.p.colModel[i]; + nm = cm.name; + if ( nm != 'cb' && nm != 'subgrid' && cm.editable===true && nm != 'rn') { + switch (cm.edittype) { + case "checkbox": + var cbv = ["Yes","No"]; + if(cm.editoptions ) { + cbv = cm.editoptions.value.split(":"); + } + tmp[nm]= $("input",this).attr("checked") ? cbv[0] : cbv[1]; + break; + case 'text': + case 'password': + case 'textarea': + case "button" : + tmp[nm]=$("input, textarea",this).val(); + break; + case 'select': + if(!cm.editoptions.multiple) { + tmp[nm] = $("select>option:selected",this).val(); + tmp2[nm] = $("select>option:selected", this).text(); + } else { + var sel = $("select",this), selectedText = []; + tmp[nm] = $(sel).val(); + if(tmp[nm]) { tmp[nm]= tmp[nm].join(","); } else { tmp[nm] =""; } + $("select > option:selected",this).each( + function(i,selected){ + selectedText[i] = $(selected).text(); + } + ); + tmp2[nm] = selectedText.join(","); + } + if(cm.formatter && cm.formatter == 'select') { tmp2={}; } + break; + case 'custom' : + try { + if(cm.editoptions && $.isFunction(cm.editoptions.custom_value)) { + tmp[nm] = cm.editoptions.custom_value.call($t, $(".customelement",this),'get'); + if (tmp[nm] === undefined) { throw "e2"; } + } else { throw "e1"; } + } catch (e) { + if (e=="e1") { $.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.nodefined,jQuery.jgrid.edit.bClose); } + if (e=="e2") { $.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.novalue,jQuery.jgrid.edit.bClose); } + else { $.jgrid.info_dialog(jQuery.jgrid.errors.errcap,e.message,jQuery.jgrid.edit.bClose); } + } + break; + } + cv = $.jgrid.checkValues(tmp[nm],i,$t); + if(cv[0] === false) { + cv[1] = tmp[nm] + " " + cv[1]; + return false; + } + if($t.p.autoencode) { tmp[nm] = $.jgrid.htmlEncode(tmp[nm]); } + } + }); + if (cv[0] === false){ + try { + var positions = $.jgrid.findPos($("#"+$.jgrid.jqID(rowid), $t.grid.bDiv)[0]); + $.jgrid.info_dialog($.jgrid.errors.errcap,cv[1],$.jgrid.edit.bClose,{left:positions[0],top:positions[1]}); + } catch (e) { + alert(cv[1]); + } + return; + } + if(tmp) { + var idname, opers, oper; + opers = $t.p.prmNames; + oper = opers.oper; + idname = opers.id; + tmp[oper] = opers.editoper; + tmp[idname] = rowid; + if(typeof($t.p.inlineData) == 'undefined') { $t.p.inlineData ={}; } + if(typeof(extraparam) == 'undefined') { extraparam ={}; } + tmp = $.extend({},tmp,$t.p.inlineData,extraparam); + } + if (url == 'clientArray') { + tmp = $.extend({},tmp, tmp2); + if($t.p.autoencode) { + $.each(tmp,function(n,v){ + tmp[n] = $.jgrid.htmlDecode(v); + }); + } + var resp = $($t).jqGrid("setRowData",rowid,tmp); + $(ind).attr("editable","0"); + for( var k=0;k<$t.p.savedRow.length;k++) { + if( $t.p.savedRow[k].id == rowid) {fr = k; break;} + } + if(fr >= 0) { $t.p.savedRow.splice(fr,1); } + if( $.isFunction(aftersavefunc) ) { aftersavefunc.call($t, rowid,resp); } + } else { + $("#lui_"+$t.p.id).show(); + $.ajax($.extend({ + url:url, + data: $.isFunction($t.p.serializeRowData) ? $t.p.serializeRowData.call($t, tmp) : tmp, + type: "POST", + complete: function(res,stat){ + $("#lui_"+$t.p.id).hide(); + if (stat === "success"){ + var ret; + if( $.isFunction(succesfunc)) { ret = succesfunc.call($t, res);} + else { ret = true; } + if (ret===true) { + if($t.p.autoencode) { + $.each(tmp,function(n,v){ + tmp[n] = $.jgrid.htmlDecode(v); + }); + } + tmp = $.extend({},tmp, tmp2); + $($t).jqGrid("setRowData",rowid,tmp); + $(ind).attr("editable","0"); + for( var k=0;k<$t.p.savedRow.length;k++) { + if( $t.p.savedRow[k].id == rowid) {fr = k; break;} + } + if(fr >= 0) { $t.p.savedRow.splice(fr,1); } + if( $.isFunction(aftersavefunc) ) { aftersavefunc.call($t, rowid,res); } + } else { + if($.isFunction(errorfunc) ) { + errorfunc.call($t, rowid, res, stat); + } + $($t).jqGrid("restoreRow",rowid, afterrestorefunc); + } + } + }, + error:function(res,stat){ + $("#lui_"+$t.p.id).hide(); + if($.isFunction(errorfunc) ) { + errorfunc.call($t, rowid, res, stat); + } else { + alert("Error Row: "+rowid+" Result: " +res.status+":"+res.statusText+" Status: "+stat); + } + $($t).jqGrid("restoreRow",rowid, afterrestorefunc); + } + }, $.jgrid.ajaxOptions, $t.p.ajaxRowOptions || {})); + } + $(ind).unbind("keydown"); + } + }); + }, + restoreRow : function(rowid, afterrestorefunc) { + return this.each(function(){ + var $t= this, fr, ind, ares={}; + if (!$t.grid ) { return; } + ind = $($t).jqGrid("getInd",rowid,true); + if(ind === false) {return;} + for( var k=0;k<$t.p.savedRow.length;k++) { + if( $t.p.savedRow[k].id == rowid) {fr = k; break;} + } + if(fr >= 0) { + if($.isFunction($.fn.datepicker)) { + try { + $("input.hasDatepicker","#"+$.jgrid.jqID(ind.id)).datepicker('hide'); + } catch (e) {} + } + $.each($t.p.colModel, function(i,n){ + if(this.editable === true && this.name in $t.p.savedRow[fr]) { + ares[this.name] = $t.p.savedRow[fr][this.name]; + } + }); + $($t).jqGrid("setRowData",rowid,ares); + $(ind).attr("editable","0").unbind("keydown"); + $t.p.savedRow.splice(fr,1); + } + if ($.isFunction(afterrestorefunc)) + { + afterrestorefunc.call($t, rowid); + } + }); + } +//end inline edit +}); +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/grid.jqueryui.js b/addons/base/static/lib/jquery.jqGrid/js/grid.jqueryui.js new file mode 100644 index 00000000000..38b30919683 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/grid.jqueryui.js @@ -0,0 +1,504 @@ +;(function($){ +/* +** + * jqGrid addons using jQuery UI + * Author: Mark Williams + * 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 + * depends on jQuery UI +**/ +if ($.browser.msie && $.browser.version==8) { + $.expr[":"].hidden = function(elem) { + return elem.offsetWidth === 0 || elem.offsetHeight === 0 || + elem.style.display == "none"; + }; +} +// requiere load multiselect before grid +$.jgrid._multiselect = false; +if($.ui) { + if ($.ui.multiselect ) { + if($.ui.multiselect.prototype._setSelected) { + var setSelected = $.ui.multiselect.prototype._setSelected; + $.ui.multiselect.prototype._setSelected = function(item,selected) { + var ret = setSelected.call(this,item,selected); + if (selected && this.selectedList) { + var elt = this.element; + this.selectedList.find('li').each(function() { + if ($(this).data('optionLink')) { + $(this).data('optionLink').remove().appendTo(elt); + } + }); + } + return ret; + }; + } + if($.ui.multiselect.prototype.destroy) { + $.ui.multiselect.prototype.destroy = function() { + this.element.show(); + this.container.remove(); + if ($.Widget === undefined) { + $.widget.prototype.destroy.apply(this, arguments); + } else { + $.Widget.prototype.destroy.apply(this, arguments); + } + }; + } + $.jgrid._multiselect = true; + } +} + +$.jgrid.extend({ + sortableColumns : function (tblrow) + { + return this.each(function (){ + var ts = this; + function start() {ts.p.disableClick = true;} + var sortable_opts = { + "tolerance" : "pointer", + "axis" : "x", + "scrollSensitivity": "1", + "items": '>th:not(:has(#jqgh_cb,#jqgh_rn,#jqgh_subgrid),:hidden)', + "placeholder": { + element: function(item) { + var el = $(document.createElement(item[0].nodeName)) + .addClass(item[0].className+" ui-sortable-placeholder ui-state-highlight") + .removeClass("ui-sortable-helper")[0]; + return el; + }, + update: function(self, p) { + p.height(self.currentItem.innerHeight() - parseInt(self.currentItem.css('paddingTop')||0, 10) - parseInt(self.currentItem.css('paddingBottom')||0, 10)); + p.width(self.currentItem.innerWidth() - parseInt(self.currentItem.css('paddingLeft')||0, 10) - parseInt(self.currentItem.css('paddingRight')||0, 10)); + } + }, + "update": function(event, ui) { + var p = $(ui.item).parent(); + var th = $(">th", p); + var colModel = ts.p.colModel; + var cmMap = {}; + $.each(colModel, function(i) { cmMap[this.name]=i; }); + var permutation = []; + th.each(function(i) { + var id = $(">div", this).get(0).id.replace(/^jqgh_/, ""); + if (id in cmMap) { + permutation.push(cmMap[id]); + } + }); + + $(ts).jqGrid("remapColumns",permutation, true, true); + if ($.isFunction(ts.p.sortable.update)) { + ts.p.sortable.update(permutation); + } + setTimeout(function(){ts.p.disableClick=false;}, 50); + } + }; + if (ts.p.sortable.options) { + $.extend(sortable_opts, ts.p.sortable.options); + } else if ($.isFunction(ts.p.sortable)) { + ts.p.sortable = { "update" : ts.p.sortable }; + } + if (sortable_opts.start) { + var s = sortable_opts.start; + sortable_opts.start = function(e,ui) { + start(); + s.call(this,e,ui); + }; + } else { + sortable_opts.start = start; + } + if (ts.p.sortable.exclude) { + sortable_opts.items += ":not("+ts.p.sortable.exclude+")"; + } + tblrow.sortable(sortable_opts).data("sortable").floating = true; + }); + }, + columnChooser : function(opts) { + var self = this; + if($("#colchooser_"+self[0].p.id).length ) { return; } + var selector = $('
'); + var select = $('select', selector); + + function insert(perm,i,v) { + if(i>=0){ + var a = perm.slice(); + var b = a.splice(i,Math.max(perm.length-i,i)); + if(i>perm.length) { i = perm.length; } + a[i] = v; + return a.concat(b); + } + } + opts = $.extend({ + "width" : 420, + "height" : 240, + "classname" : null, + "done" : function(perm) { if (perm) { self.jqGrid("remapColumns", perm, true); } }, + /* msel is either the name of a ui widget class that + extends a multiselect, or a function that supports + creating a multiselect object (with no argument, + or when passed an object), and destroying it (when + passed the string "destroy"). */ + "msel" : "multiselect", + /* "msel_opts" : {}, */ + + /* dlog is either the name of a ui widget class that + behaves in a dialog-like way, or a function, that + supports creating a dialog (when passed dlog_opts) + or destroying a dialog (when passed the string + "destroy") + */ + "dlog" : "dialog", + + /* dlog_opts is either an option object to be passed + to "dlog", or (more likely) a function that creates + the options object. + The default produces a suitable options object for + ui.dialog */ + "dlog_opts" : function(opts) { + var buttons = {}; + buttons[opts.bSubmit] = function() { + opts.apply_perm(); + opts.cleanup(false); + }; + buttons[opts.bCancel] = function() { + opts.cleanup(true); + }; + return { + "buttons": buttons, + "close": function() { + opts.cleanup(true); + }, + "modal" : opts.modal ? opts.modal : false, + "resizable": opts.resizable ? opts.resizable : true, + "width": opts.width+20 + }; + }, + /* Function to get the permutation array, and pass it to the + "done" function */ + "apply_perm" : function() { + $('option',select).each(function(i) { + if (this.selected) { + self.jqGrid("showCol", colModel[this.value].name); + } else { + self.jqGrid("hideCol", colModel[this.value].name); + } + }); + + var perm = []; + //fixedCols.slice(0); + $('option[selected]',select).each(function() { perm.push(parseInt(this.value,10)); }); + $.each(perm, function() { delete colMap[colModel[parseInt(this,10)].name]; }); + $.each(colMap, function() { + var ti = parseInt(this,10); + perm = insert(perm,ti,ti); + }); + if (opts.done) { + opts.done.call(self, perm); + } + }, + /* Function to cleanup the dialog, and select. Also calls the + done function with no permutation (to indicate that the + columnChooser was aborted */ + "cleanup" : function(calldone) { + call(opts.dlog, selector, 'destroy'); + call(opts.msel, select, 'destroy'); + selector.remove(); + if (calldone && opts.done) { + opts.done.call(self); + } + }, + "msel_opts" : {} + }, $.jgrid.col, opts || {}); + if($.ui) { + if ($.ui.multiselect ) { + if(opts.msel == "multiselect") { + if(!$.jgrid._multiselect) { + // should be in language file + alert("Multiselect plugin loaded after jqGrid. Please load the plugin before the jqGrid!"); + return; + } + opts.msel_opts = $.extend($.ui.multiselect.defaults,opts.msel_opts); + } + } + } + if (opts.caption) { + selector.attr("title", opts.caption); + } + if (opts.classname) { + selector.addClass(opts.classname); + select.addClass(opts.classname); + } + if (opts.width) { + $(">div",selector).css({"width": opts.width,"margin":"0 auto"}); + select.css("width", opts.width); + } + if (opts.height) { + $(">div",selector).css("height", opts.height); + select.css("height", opts.height - 10); + } + var colModel = self.jqGrid("getGridParam", "colModel"); + var colNames = self.jqGrid("getGridParam", "colNames"); + var colMap = {}, fixedCols = []; + + select.empty(); + $.each(colModel, function(i) { + colMap[this.name] = i; + if (this.hidedlg) { + if (!this.hidden) { + fixedCols.push(i); + } + return; + } + + select.append(""); + }); + function call(fn, obj) { + if (!fn) { return; } + if (typeof fn == 'string') { + if ($.fn[fn]) { + $.fn[fn].apply(obj, $.makeArray(arguments).slice(2)); + } + } else if ($.isFunction(fn)) { + fn.apply(obj, $.makeArray(arguments).slice(2)); + } + } + + var dopts = $.isFunction(opts.dlog_opts) ? opts.dlog_opts.call(self, opts) : opts.dlog_opts; + call(opts.dlog, selector, dopts); + var mopts = $.isFunction(opts.msel_opts) ? opts.msel_opts.call(self, opts) : opts.msel_opts; + call(opts.msel, select, mopts); + }, + sortableRows : function (opts) { + // Can accept all sortable options and events + return this.each(function(){ + var $t = this; + if(!$t.grid) { return; } + // Currently we disable a treeGrid sortable + if($t.p.treeGrid) { return; } + if($.fn.sortable) { + opts = $.extend({ + "cursor":"move", + "axis" : "y", + "items": ".jqgrow" + }, + opts || {}); + if(opts.start && $.isFunction(opts.start)) { + opts._start_ = opts.start; + delete opts.start; + } else {opts._start_=false;} + if(opts.update && $.isFunction(opts.update)) { + opts._update_ = opts.update; + delete opts.update; + } else {opts._update_ = false;} + opts.start = function(ev,ui) { + $(ui.item).css("border-width","0px"); + $("td",ui.item).each(function(i){ + this.style.width = $t.grid.cols[i].style.width; + }); + if($t.p.subGrid) { + var subgid = $(ui.item).attr("id"); + try { + $($t).jqGrid('collapseSubGridRow',subgid); + } catch (e) {} + } + if(opts._start_) { + opts._start_.apply(this,[ev,ui]); + } + }; + opts.update = function (ev,ui) { + $(ui.item).css("border-width",""); + if($t.p.rownumbers === true) { + $("td.jqgrid-rownum",$t.rows).each(function(i){ + $(this).html(i+1); + }); + } + if(opts._update_) { + opts._update_.apply(this,[ev,ui]); + } + }; + $("tbody:first",$t).sortable(opts); + $("tbody:first",$t).disableSelection(); + } + }); + }, + gridDnD : function(opts) { + return this.each(function(){ + var $t = this; + if(!$t.grid) { return; } + // Currently we disable a treeGrid drag and drop + if($t.p.treeGrid) { return; } + if(!$.fn.draggable || !$.fn.droppable) { return; } + function updateDnD () + { + var datadnd = $.data($t,"dnd"); + $("tr.jqgrow:not(.ui-draggable)",$t).draggable($.isFunction(datadnd.drag) ? datadnd.drag.call($($t),datadnd) : datadnd.drag); + } + var appender = "
"; + if($("#jqgrid_dnd").html() === null) { + $('body').append(appender); + } + + if(typeof opts == 'string' && opts == 'updateDnD' && $t.p.jqgdnd===true) { + updateDnD(); + return; + } + opts = $.extend({ + "drag" : function (opts) { + return $.extend({ + start : function (ev, ui) { + // if we are in subgrid mode try to collapse the node + if($t.p.subGrid) { + var subgid = $(ui.helper).attr("id"); + try { + $($t).jqGrid('collapseSubGridRow',subgid); + } catch (e) {} + } + // hack + // drag and drop does not insert tr in table, when the table has no rows + // we try to insert new empty row on the target(s) + for (var i=0;i<$.data($t,"dnd").connectWith.length;i++){ + if($($.data($t,"dnd").connectWith[i]).jqGrid('getGridParam','reccount') == "0" ){ + $($.data($t,"dnd").connectWith[i]).jqGrid('addRowData','jqg_empty_row',{}); + } + } + ui.helper.addClass("ui-state-highlight"); + $("td",ui.helper).each(function(i) { + this.style.width = $t.grid.headers[i].width+"px"; + }); + if(opts.onstart && $.isFunction(opts.onstart) ) { opts.onstart.call($($t),ev,ui); } + }, + stop :function(ev,ui) { + if(ui.helper.dropped) { + var ids = $(ui.helper).attr("id"); + $($t).jqGrid('delRowData',ids ); + } + // if we have a empty row inserted from start event try to delete it + for (var i=0;i<$.data($t,"dnd").connectWith.length;i++){ + $($.data($t,"dnd").connectWith[i]).jqGrid('delRowData','jqg_empty_row'); + } + if(opts.onstop && $.isFunction(opts.onstop) ) { opts.onstop.call($($t),ev,ui); } + } + },opts.drag_opts || {}); + }, + "drop" : function (opts) { + return $.extend({ + accept: function(d) { + if (!$(d).hasClass('jqgrow')) { return d;} + var tid = $(d).closest("table.ui-jqgrid-btable"); + if(tid.length > 0 && $.data(tid[0],"dnd") !== undefined) { + var cn = $.data(tid[0],"dnd").connectWith; + return $.inArray('#'+this.id,cn) != -1 ? true : false; + } + return d; + }, + drop: function(ev, ui) { + if (!$(ui.draggable).hasClass('jqgrow')) { return; } + var accept = $(ui.draggable).attr("id"); + var getdata = ui.draggable.parent().parent().jqGrid('getRowData',accept); + if(!opts.dropbyname) { + var j =0, tmpdata = {}, dropname; + var dropmodel = $("#"+this.id).jqGrid('getGridParam','colModel'); + try { + for (var key in getdata) { + if(getdata.hasOwnProperty(key) && dropmodel[j]) { + dropname = dropmodel[j].name; + tmpdata[dropname] = getdata[key]; + } + j++; + } + getdata = tmpdata; + } catch (e) {} + } + ui.helper.dropped = true; + if(opts.beforedrop && $.isFunction(opts.beforedrop) ) { + //parameters to this callback - event, element, data to be inserted, sender, reciever + // should return object which will be inserted into the reciever + var datatoinsert = opts.beforedrop.call(this,ev,ui,getdata,$('#'+$t.id),$(this)); + if (typeof datatoinsert != "undefined" && datatoinsert !== null && typeof datatoinsert == "object") { getdata = datatoinsert; } + } + if(ui.helper.dropped) { + var grid; + if(opts.autoid) { + if($.isFunction(opts.autoid)) { + grid = opts.autoid.call(this,getdata); + } else { + grid = Math.ceil(Math.random()*1000); + grid = opts.autoidprefix+grid; + } + } + // NULL is interpreted as undefined while null as object + $("#"+this.id).jqGrid('addRowData',grid,getdata,opts.droppos); + } + if(opts.ondrop && $.isFunction(opts.ondrop) ) { opts.ondrop.call(this,ev,ui, getdata); } + }}, opts.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": 5000 + }, + "dropbyname" : false, + "droppos" : "first", + "autoid" : true, + "autoidprefix" : "dnd_" + }, opts || {}); + + if(!opts.connectWith) { return; } + opts.connectWith = opts.connectWith.split(","); + opts.connectWith = $.map(opts.connectWith,function(n){return $.trim(n);}); + $.data($t,"dnd",opts); + + if($t.p.reccount != "0" && !$t.p.jqgdnd) { + updateDnD(); + } + $t.p.jqgdnd = true; + for (var i=0;i"; + } else { + return ""; + } +}, +addSubGrid : function(t,pos) { + return this.each(function(){ + var ts = this; + if (!ts.grid ) { return; } + //------------------------- + var subGridCell = function(trdiv,cell,pos){ + var tddiv = $("").html(cell); + $(trdiv).append(tddiv); + }; + var subGridXml = function(sjxml, sbid){ + var tddiv, i, sgmap, + dummy = $("
"), + trdiv = $(""); + for (i = 0; i"); + $(tddiv).html(ts.p.subGridModel[0].name[i]); + $(tddiv).width( ts.p.subGridModel[0].width[i]); + $(trdiv).append(tddiv); + } + $(dummy).append(trdiv); + if (sjxml){ + sgmap = ts.p.xmlReader.subgrid; + $(sgmap.root+" "+sgmap.row, sjxml).each( function(){ + trdiv = $(""); + if(sgmap.repeatitems === true) { + $(sgmap.cell,this).each( function(i) { + subGridCell(trdiv, $(this).text() || ' ',i); + }); + } else { + var f = ts.p.subGridModel[0].mapping || ts.p.subGridModel[0].name; + if (f) { + for (i=0;i"), + trdiv = $(""); + for (i = 0; i"); + $(tddiv).html(ts.p.subGridModel[0].name[i]); + $(tddiv).width( ts.p.subGridModel[0].width[i]); + $(trdiv).append(tddiv); + } + $(dummy).append(trdiv); + if (sjxml){ + sgmap = ts.p.jsonReader.subgrid; + result = sjxml[sgmap.root]; + if ( typeof result !== 'undefined' ) { + for (i=0;i"); + if(sgmap.repeatitems === true) { + if(sgmap.cell) { cur=cur[sgmap.cell]; } + for (j=0;j=1 ? " ":""; + _id = $(res).attr("id"); + bfsc =true; + if($.isFunction(ts.p.subGridBeforeExpand)) { + bfsc = ts.p.subGridBeforeExpand.call(ts, pID+"_"+_id,_id); + } + if(bfsc === false) {return false;} + nhc = 0; + $.each(ts.p.colModel,function(i,v){ + if(this.hidden === true || this.name == 'rn' || this.name == 'cb') {nhc++;} + }); + subdata = ""+atd+"
"; + $(this).parent().after( subdata+ "
" ); + if( $.isFunction(ts.p.subGridRowExpanded)) { + ts.p.subGridRowExpanded.call(ts, pID+"_"+ _id,_id); + } else { + populatesubgrid(res); + } + $(this).html("").removeClass("sgcollapsed").addClass("sgexpanded"); + } else if($(this).hasClass("sgexpanded")) { + bfsc = true; + if( $.isFunction(ts.p.subGridRowColapsed)) { + res = $(this).parent(); + _id = $(res).attr("id"); + bfsc = ts.p.subGridRowColapsed.call(ts, pID+"_"+_id,_id ); + } + if(bfsc===false) {return false;} + $(this).parent().next().remove(".ui-subgrid"); + $(this).html("").removeClass("sgexpanded").addClass("sgcollapsed"); + } + return false; + }); + ts.subGridXml = function(xml,sid) {subGridXml(xml,sid);}; + ts.subGridJson = function(json,sid) {subGridJson(json,sid);}; + }); +}, +expandSubGridRow : function(rowid) { + return this.each(function () { + var $t = this; + if(!$t.grid && !rowid) {return;} + if($t.p.subGrid===true) { + var rc = $(this).jqGrid("getInd",rowid,true); + if(rc) { + var sgc = $("td.sgcollapsed",rc)[0]; + if(sgc) { + $(sgc).trigger("click"); + } + } + } + }); +}, +collapseSubGridRow : function(rowid) { + return this.each(function () { + var $t = this; + if(!$t.grid && !rowid) {return;} + if($t.p.subGrid===true) { + var rc = $(this).jqGrid("getInd",rowid,true); + if(rc) { + var sgc = $("td.sgexpanded",rc)[0]; + if(sgc) { + $(sgc).trigger("click"); + } + } + } + }); +}, +toggleSubGridRow : function(rowid) { + return this.each(function () { + var $t = this; + if(!$t.grid && !rowid) {return;} + if($t.p.subGrid===true) { + var rc = $(this).jqGrid("getInd",rowid,true); + if(rc) { + var sgc = $("td.sgcollapsed",rc)[0]; + if(sgc) { + $(sgc).trigger("click"); + } else { + sgc = $("td.sgexpanded",rc)[0]; + if(sgc) { + $(sgc).trigger("click"); + } + } + } + } + }); +} +}); +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/grid.tbltogrid.js b/addons/base/static/lib/jquery.jqGrid/js/grid.tbltogrid.js new file mode 100644 index 00000000000..364d4181433 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/grid.tbltogrid.js @@ -0,0 +1,106 @@ +/* + Transform a table to a jqGrid. + Peter Romianowski + If the first column of the table contains checkboxes or + radiobuttons then the jqGrid is made selectable. +*/ +// Addition - selector can be a class or id +function tableToGrid(selector, options) { +jQuery(selector).each(function() { + if(this.grid) {return;} //Adedd from Tony Tomov + // This is a small "hack" to make the width of the jqGrid 100% + jQuery(this).width("99%"); + var w = jQuery(this).width(); + + // Text whether we have single or multi select + var inputCheckbox = jQuery('input[type=checkbox]:first', jQuery(this)); + var inputRadio = jQuery('input[type=radio]:first', jQuery(this)); + var selectMultiple = inputCheckbox.length > 0; + var selectSingle = !selectMultiple && inputRadio.length > 0; + var selectable = selectMultiple || selectSingle; + //var inputName = inputCheckbox.attr("name") || inputRadio.attr("name"); + + // Build up the columnModel and the data + var colModel = []; + var colNames = []; + jQuery('th', jQuery(this)).each(function() { + if (colModel.length === 0 && selectable) { + colModel.push({ + name: '__selection__', + index: '__selection__', + width: 0, + hidden: true + }); + colNames.push('__selection__'); + } else { + colModel.push({ + name: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(' ').join('_'), + index: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(' ').join('_'), + width: jQuery(this).width() || 150 + }); + colNames.push(jQuery(this).html()); + } + }); + var data = []; + var rowIds = []; + var rowChecked = []; + jQuery('tbody > tr', jQuery(this)).each(function() { + var row = {}; + var rowPos = 0; + jQuery('td', jQuery(this)).each(function() { + if (rowPos === 0 && selectable) { + var input = jQuery('input', jQuery(this)); + var rowId = input.attr("value"); + rowIds.push(rowId || data.length); + if (input.attr("checked")) { + rowChecked.push(rowId); + } + row[colModel[rowPos].name] = input.attr("value"); + } else { + row[colModel[rowPos].name] = jQuery(this).html(); + } + rowPos++; + }); + if(rowPos >0) { data.push(row); } + }); + + // Clear the original HTML table + jQuery(this).empty(); + + // Mark it as jqGrid + jQuery(this).addClass("scroll"); + + jQuery(this).jqGrid(jQuery.extend({ + datatype: "local", + width: w, + colNames: colNames, + colModel: colModel, + multiselect: selectMultiple + //inputName: inputName, + //inputValueCol: imputName != null ? "__selection__" : null + }, options || {})); + + // Add data + var a; + for (a = 0; a < data.length; a++) { + var id = null; + if (rowIds.length > 0) { + id = rowIds[a]; + if (id && id.replace) { + // We have to do this since the value of a checkbox + // or radio button can be anything + id = encodeURIComponent(id).replace(/[.\-%]/g, "_"); + } + } + if (id === null) { + id = a + 1; + } + jQuery(this).jqGrid("addRowData",id, data[a]); + } + + // Set the selection + for (a = 0; a < rowChecked.length; a++) { + jQuery(this).jqGrid("setSelection",rowChecked[a]); + } +}); +}; diff --git a/addons/base/static/lib/jquery.jqGrid/js/grid.treegrid.js b/addons/base/static/lib/jquery.jqGrid/js/grid.treegrid.js new file mode 100644 index 00000000000..94ec770c153 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/grid.treegrid.js @@ -0,0 +1,490 @@ +;(function($) { +/* +** + * jqGrid extension - Tree Grid + * 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 +**/ +$.jgrid.extend({ + setTreeNode : function(rd, row){ + return this.each(function(){ + var $t = this; + if( !$t.grid || !$t.p.treeGrid ) { return; } + var expCol = $t.p.expColInd, + expanded = $t.p.treeReader.expanded_field, + isLeaf = $t.p.treeReader.leaf_field, + level = $t.p.treeReader.level_field, + loaded = $t.p.treeReader.loaded; + + row.level = rd[level]; + + if($t.p.treeGridModel == 'nested') { + var lft = rd[$t.p.treeReader.left_field], + rgt = rd[$t.p.treeReader.right_field]; + if(!rd[isLeaf]) { + // NS Model + rd[isLeaf] = (parseInt(rgt,10) === parseInt(lft,10)+1) ? 'true' : 'false'; + } + } else { + //row.parent_id = rd[$t.p.treeReader.parent_id_field]; + } + var curLevel = parseInt(rd[level],10), ident,lftpos; + if($t.p.tree_root_level === 0) { + ident = curLevel+1; + lftpos = curLevel; + } else { + ident = curLevel; + lftpos = curLevel -1; + } + var twrap = "
"; + twrap += "
").prepend(twrap); + $(".treeclick",row).bind("click",function(e){ + var target = e.target || e.srcElement, + ind2 =$(target,$t.rows).closest("tr.jqgrow")[0].id, + pos = $t.p._index[ind2], + isLeaf = $t.p.treeReader.leaf_field, + expanded = $t.p.treeReader.expanded_field; + if(!$t.p.data[pos][isLeaf]){ + if($t.p.data[pos][expanded]){ + $($t).jqGrid("collapseRow",$t.p.data[pos]); + $($t).jqGrid("collapseNode",$t.p.data[pos]); + } else { + $($t).jqGrid("expandRow",$t.p.data[pos]); + $($t).jqGrid("expandNode",$t.p.data[pos]); + } + } + return false; + }); + if($t.p.ExpandColClick === true) { + $("span", row).css("cursor","pointer").bind("click",function(e){ + var target = e.target || e.srcElement, + ind2 =$(target,$t.rows).closest("tr.jqgrow")[0].id, + pos = $t.p._index[ind2], + isLeaf = $t.p.treeReader.leaf_field, + expanded = $t.p.treeReader.expanded_field; + if(!$t.p.data[pos][isLeaf]){ + if($t.p.data[pos][expanded]){ + $($t).jqGrid("collapseRow",$t.p.data[pos]); + $($t).jqGrid("collapseNode",$t.p.data[pos]); + } else { + $($t).jqGrid("expandRow",$t.p.data[pos]); + $($t).jqGrid("expandNode",$t.p.data[pos]); + } + } + $($t).jqGrid("setSelection",ind2); + return false; + }); + } + }); + }, + setTreeGrid : function() { + return this.each(function (){ + var $t = this, i=0, pico; + if(!$t.p.treeGrid) { return; } + if(!$t.p.treedatatype ) { $.extend($t.p,{treedatatype: $t.p.datatype}); } + $t.p.subGrid = false; $t.p.altRows =false; + $t.p.pgbuttons = false; $t.p.pginput = false; + $t.p.multiselect = false; $t.p.rowList = []; + pico = 'ui-icon-triangle-1-' + ($t.p.direction=="rtl" ? 'w' : 'e'); + $t.p.treeIcons = $.extend({plus:pico,minus:'ui-icon-triangle-1-s',leaf:'ui-icon-radio-off'},$t.p.treeIcons || {}); + if($t.p.treeGridModel == 'nested') { + $t.p.treeReader = $.extend({ + level_field: "level", + left_field:"lft", + right_field: "rgt", + leaf_field: "isLeaf", + expanded_field: "expanded", + loaded: "loaded" + },$t.p.treeReader); + } else + if($t.p.treeGridModel == 'adjacency') { + $t.p.treeReader = $.extend({ + level_field: "level", + parent_id_field: "parent", + leaf_field: "isLeaf", + expanded_field: "expanded", + loaded: "loaded" + },$t.p.treeReader ); + } + for (var key in $t.p.colModel){ + if($t.p.colModel.hasOwnProperty(key)) { + if($t.p.colModel[key].name == $t.p.ExpandColumn) { + $t.p.expColInd = i; + break; + } + i++; + } + } + if(!$t.p.expColInd) { $t.p.expColInd = 0; } + $.each($t.p.treeReader,function(i,n){ + if(n){ + $t.p.colNames.push(n); + $t.p.colModel.push({name:n,width:1,hidden:true,sortable:false,resizable:false,hidedlg:true,editable:true,search:false}); + } + }); + }); + }, + expandRow: function (record){ + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + var childern = $($t).jqGrid("getNodeChildren",record), + //if ($($t).jqGrid("isVisibleNode",record)) { + expanded = $t.p.treeReader.expanded_field; + $(childern).each(function(i){ + var id = $.jgrid.getAccessor(this,$t.p.localReader.id); + $("#"+id,$t.grid.bDiv).css("display",""); + if(this[expanded]) { + $($t).jqGrid("expandRow",this); + } + }); + //} + }); + }, + collapseRow : function (record) { + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + var childern = $($t).jqGrid("getNodeChildren",record), + expanded = $t.p.treeReader.expanded_field; + $(childern).each(function(i){ + var id = $.jgrid.getAccessor(this,$t.p.localReader.id); + $("#"+id,$t.grid.bDiv).css("display","none"); + if(this[expanded]){ + $($t).jqGrid("collapseRow",this); + } + }); + }); + }, + // NS ,adjacency models + getRootNodes : function() { + var result = []; + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + switch ($t.p.treeGridModel) { + case 'nested' : + var level = $t.p.treeReader.level_field; + $($t.p.data).each(function(i){ + if(parseInt(this[level],10) === parseInt($t.p.tree_root_level,10)) { + result.push(this); + } + }); + break; + case 'adjacency' : + var parent_id = $t.p.treeReader.parent_id_field; + $($t.p.data).each(function(i){ + if(this[parent_id] === null || String(this[parent_id]).toLowerCase() == "null") { + result.push(this); + } + }); + break; + } + }); + return result; + }, + getNodeDepth : function(rc) { + var ret = null; + this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + var $t = this; + switch ($t.p.treeGridModel) { + case 'nested' : + var level = $t.p.treeReader.level_field; + ret = parseInt(rc[level],10) - parseInt($t.p.tree_root_level,10); + break; + case 'adjacency' : + ret = $($t).jqGrid("getNodeAncestors",rc).length; + break; + } + }); + return ret; + }, + getNodeParent : function(rc) { + var result = null; + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + switch ($t.p.treeGridModel) { + case 'nested' : + var lftc = $t.p.treeReader.left_field, + rgtc = $t.p.treeReader.right_field, + levelc = $t.p.treeReader.level_field, + lft = parseInt(rc[lftc],10), rgt = parseInt(rc[rgtc],10), level = parseInt(rc[levelc],10); + $(this.p.data).each(function(){ + if(parseInt(this[levelc],10) === level-1 && parseInt(this[lftc],10) < lft && parseInt(this[rgtc],10) > rgt) { + result = this; + return false; + } + }); + break; + case 'adjacency' : + var parent_id = $t.p.treeReader.parent_id_field, + dtid = $t.p.localReader.id; + $(this.p.data).each(function(i,val){ + if(this[dtid] == rc[parent_id] ) { + result = this; + return false; + } + }); + break; + } + }); + return result; + }, + getNodeChildren : function(rc) { + var result = []; + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + switch ($t.p.treeGridModel) { + case 'nested' : + var lftc = $t.p.treeReader.left_field, + rgtc = $t.p.treeReader.right_field, + levelc = $t.p.treeReader.level_field, + lft = parseInt(rc[lftc],10), rgt = parseInt(rc[rgtc],10), level = parseInt(rc[levelc],10); + $(this.p.data).each(function(i){ + if(parseInt(this[levelc],10) === level+1 && parseInt(this[lftc],10) > lft && parseInt(this[rgtc],10) < rgt) { + result.push(this); + } + }); + break; + case 'adjacency' : + var parent_id = $t.p.treeReader.parent_id_field, + dtid = $t.p.localReader.id; + $(this.p.data).each(function(i,val){ + if(this[parent_id] == rc[dtid]) { + result.push(this); + } + }); + break; + } + }); + return result; + }, + getFullTreeNode : function(rc) { + var result = []; + this.each(function(){ + var $t = this, len; + if(!$t.grid || !$t.p.treeGrid) { return; } + switch ($t.p.treeGridModel) { + case 'nested' : + var lftc = $t.p.treeReader.left_field, + rgtc = $t.p.treeReader.right_field, + levelc = $t.p.treeReader.level_field, + lft = parseInt(rc[lftc],10), rgt = parseInt(rc[rgtc],10), level = parseInt(rc[levelc],10); + $(this.p.data).each(function(i){ + if(parseInt(this[levelc],10) >= level && parseInt(this[lftc],10) >= lft && parseInt(this[lftc],10) <= rgt) { + result.push(this); + } + }); + break; + case 'adjacency' : + result.push(rc); + var parent_id = $t.p.treeReader.parent_id_field, + dtid = $t.p.localReader.id; + $(this.p.data).each(function(i){ + len = result.length; + for (i = 0; i < len; i++) { + if (result[i][dtid] == this[parent_id]) { + result.push(this); + break; + } + } + }); + break; + } + }); + return result; + }, + // End NS, adjacency Model + getNodeAncestors : function(rc) { + var ancestors = []; + this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + var parent = $(this).jqGrid("getNodeParent",rc); + while (parent) { + ancestors.push(parent); + parent = $(this).jqGrid("getNodeParent",parent); + } + }); + return ancestors; + }, + isVisibleNode : function(rc) { + var result = true; + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + var ancestors = $($t).jqGrid("getNodeAncestors",rc), + expanded = $t.p.treeReader.expanded_field; + $(ancestors).each(function(){ + result = result && this[expanded]; + if(!result) {return false;} + }); + }); + return result; + }, + isNodeLoaded : function(rc) { + var result; + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + var isLeaf = $t.p.treeReader.leaf_field; + if(rc.loaded !== undefined) { + result = rc.loaded; + } else if( rc[isLeaf] || $($t).jqGrid("getNodeChildren",rc).length > 0){ + result = true; + } else { + result = false; + } + }); + return result; + }, + expandNode : function(rc) { + return this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + var expanded = this.p.treeReader.expanded_field; + if(!rc[expanded]) { + var id = $.jgrid.getAccessor(rc,this.p.localReader.id); + var rc1 = $("#"+id,this.grid.bDiv)[0]; + var position = this.p._index[id]; + if( $(this).jqGrid("isNodeLoaded",this.p.data[position]) ) { + rc[expanded] = true; + $("div.treeclick",rc1).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus"); + } else { + rc[expanded] = true; + $("div.treeclick",rc1).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus"); + this.p.treeANode = rc1.rowIndex; + this.p.datatype = this.p.treedatatype; + if(this.p.treeGridModel == 'nested') { + $(this).jqGrid("setGridParam",{postData:{nodeid:id,n_left:rc.lft,n_right:rc.rgt,n_level:rc.level}}); + } else { + $(this).jqGrid("setGridParam",{postData:{nodeid:id,parentid:rc.parent_id,n_level:rc.level}}); + } + $(this).trigger("reloadGrid"); + if(this.p.treeGridModel == 'nested') { + $(this).jqGrid("setGridParam",{postData:{nodeid:'',n_left:'',n_right:'',n_level:''}}); + } else { + $(this).jqGrid("setGridParam",{postData:{nodeid:'',parentid:'',n_level:''}}); + } + } + } + }); + }, + collapseNode : function(rc) { + return this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + if(rc.expanded) { + rc.expanded = false; + var id = $.jgrid.getAccessor(rc,this.p.localReader.id); + var rc1 = $("#"+id,this.grid.bDiv)[0]; + $("div.treeclick",rc1).removeClass(this.p.treeIcons.minus+" tree-minus").addClass(this.p.treeIcons.plus+" tree-plus"); + } + }); + }, + SortTree : function( sortname, newDir, st, datefmt) { + return this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + var i, len, + rec, records = [], $t = this, query, roots, + rt = $(this).jqGrid("getRootNodes"); + // Sorting roots + query = $.jgrid.from(rt); + query.orderBy(sortname,newDir,st, datefmt); + roots = query.select(); + + // Sorting children + for (i = 0, len = roots.length; i < len; i++) { + rec = roots[i]; + records.push(rec); + $(this).jqGrid("collectChildrenSortTree",records, rec, sortname, newDir,st, datefmt); + } + $.each(records, function(index, row) { + var id = $.jgrid.getAccessor(this,$t.p.localReader.id); + $('#'+$t.p.id+ ' tbody tr:eq('+index+')').after($('tr#'+id,$t.grid.bDiv)); + }); + query = null; roots=null;records=null; + }); + }, + collectChildrenSortTree : function(records, rec, sortname, newDir,st, datefmt) { + return this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + var i, len, + child, ch, query, children; + ch = $(this).jqGrid("getNodeChildren",rec); + query = $.jgrid.from(ch); + query.orderBy(sortname, newDir, st, datefmt); + children = query.select(); + for (i = 0, len = children.length; i < len; i++) { + child = children[i]; + records.push(child); + $(this).jqGrid("collectChildrenSortTree",records, child, sortname, newDir, st, datefmt); + } + }); + }, + // experimental + setTreeRow : function(rowid, data) { + var success=false; + this.each(function(){ + var t = this; + if(!t.grid || !t.p.treeGrid) { return; } + success = $(t).jqGrid("setRowData",rowid,data); + }); + return success; + }, + delTreeNode : function (rowid) { + return this.each(function () { + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + var rc = $($t).jqGrid("getInd",rowid,true); + if (rc) { + var dr = $($t).jqGrid("getNodeChildren",rc); + if(dr.length>0){ + for (var i=0;i عدد التسجيلات (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: [ + "الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", + "الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" + ], + monthNames: [ + "جانÙÙŠ", "ÙÙŠÙري", "مارس", "Ø£Ùريل", "ماي", "جوان", "جويلية", "أوت", "سبتمبر", "أكتوبر", "نوÙمبر", "ديسمبر", + "جانÙÙŠ", "ÙÙŠÙري", "مارس", "Ø£Ùريل", "ماي", "جوان", "جويلية", "أوت", "سبتمبر", "أكتوبر", "نوÙمبر", "ديسمبر" + ], + AmPm : ["صباحا","مساءا","صباحا","مساءا"], + S: function (j) {return j == 1 ? 'er' : 'e';}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-bg.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-bg.js new file mode 100644 index 00000000000..15038269091 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-bg.js @@ -0,0 +1,132 @@ +;(function($){ +/** + * jqGrid Bulgarian 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 +**/ +$.jgrid = { + defaults : { + recordtext: "{0} - {1} от {2}", + emptyrecords: "ÐÑма запиÑ(и)", + loadtext: "Зареждам...", + pgtext : "Стр. {0} от {1}" + }, + search : { + caption: "ТърÑене...", + Find: "Ðамери", + Reset: "ИзчиÑти", + odata : ['равно', 'различно', 'по-малко', 'по-малко или=','по-голÑмо','по-голÑмо или =', 'започва Ñ','не започва Ñ','Ñе намира в','не Ñе намира в','завършва Ñ','не завършава Ñ','Ñъдържа', 'не Ñъдържа' ], + groupOps: [ { op: "AND", text: " Ð˜ " }, { op: "OR", text: "ИЛИ" } ], + matchText: " включи", + rulesText: " клауза" + }, + edit : { + addCaption: "Ðов ЗапиÑ", + editCaption: "Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð—Ð°Ð¿Ð¸Ñ", + bSubmit: "Запиши", + bCancel: "Изход", + bClose: "Затвори", + saveData: "Данните Ñа променени! Да ÑÑŠÑ…Ñ€Ð°Ð½Ñ Ð»Ð¸ промените?", + bYes : "Да", + bNo : "Ðе", + bExit : "Отказ", + msg: { + required:"Полето е задължително", + number:"Въведете валидно чиÑло!", + minValue:"ÑтойноÑтта Ñ‚Ñ€Ñбва да е по-голÑма или равна от", + maxValue:"ÑтойноÑтта Ñ‚Ñ€Ñбва да е по-малка или равна от", + email: "не е валиден ел. адреÑ", + integer: "Въведете валидно цÑло чиÑло", + date: "Въведете валидна дата", + url: "e невалиден URL. ИзиÑкава Ñе префикÑ('http://' или 'https://')", + nodefined : " е недефинирана!", + novalue : " изиÑква връщане на ÑтойноÑÑ‚!", + customarray : "Потреб. Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ‚Ñ€Ñбва да върне маÑив!", + customfcheck : "ПотребителÑка Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ðµ задължителна при този тип елемент!" + } + }, + view : { + caption: "Преглед запиÑ", + bClose: "Затвори" + }, + del : { + caption: "Изтриване", + msg: "Да Ð¸Ð·Ñ‚Ñ€Ð¸Ñ Ð»Ð¸ избраниÑÑ‚ запиÑ?", + bSubmit: "Изтрий", + bCancel: "Отказ" + }, + nav : { + edittext: " ", + edittitle: "Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½ запиÑ", + addtext:" ", + addtitle: "ДобавÑне нов запиÑ", + deltext: " ", + deltitle: "Изтриване избран запиÑ", + searchtext: " ", + searchtitle: "ТърÑене запиÑ(и)", + refreshtext: "", + refreshtitle: "Обнови таблица", + alertcap: "Предупреждение", + alerttext: "МолÑ, изберете запиÑ", + viewtext: "", + viewtitle: "Преглед избран запиÑ" + }, + col : { + caption: "Избери колони", + bSubmit: "Ок", + bCancel: "Изход" + }, + errors : { + errcap : "Грешка", + nourl : "ÐÑма поÑочен url адреÑ", + norecords: "ÐÑма Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° обработка", + model : "Модела не ÑъответÑтва на имената!" + }, + 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: [ + "Ðед", "Пон", "Ð’Ñ‚", "Ср", "Чет", "Пет", "Съб", + "ÐеделÑ", "Понеделник", "Вторник", "СрÑда", "Четвъртък", "Петък", "Събота" + ], + monthNames: [ + "Яну", "Фев", "Мар", "Ðпр", "Май", "Юни", "Юли", "Ðвг", "Сеп", "Окт", "Ðов", "Дек", + "Януари", "Февруари", "Март", "Ðприл", "Май", "Юни", "Юли", "ÐвгуÑÑ‚", "Септември", "Октомври", "Ðоември", "Декември" + ], + AmPm : ["","","",""], + S: function (j) { + if(j==7 || j==8 || j== 27 || j== 28) { + return 'ми'; + } + return ['ви', 'ри', 'ти'][Math.min((j - 1) % 10, 2)]; + }, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-bg1251.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-bg1251.js new file mode 100644 index 00000000000..935ce938a21 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-bg1251.js @@ -0,0 +1,132 @@ +;(function($){ +/** + * jqGrid Bulgarian 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 +**/ +$.jgrid = { + defaults : { + recordtext: "{0} - {1} îò {2}", + emptyrecords: "Íÿìà çàïèñ(è)", + loadtext: "Çàðåæäàì...", + pgtext : "Ñòð. {0} îò {1}" + }, + search : { + caption: "Òúðñåíå...", + Find: "Íàìåðè", + Reset: "Èç÷èñòè", + odata : ['ðàâíî', 'ðàçëè÷íî', 'ïî-ìàëêî', 'ïî-ìàëêî èëè=','ïî-ãîëÿìî','ïî-ãîëÿìî èëè =', 'çàïî÷âà ñ','íå çàïî÷âà ñ','ñå íàìèðà â','íå ñå íàìèðà â','çàâúðøâà ñ','íå çàâúðøàâà ñ','ñúäúðæà', 'íå ñúäúðæà' ], + groupOps: [ { op: "AND", text: " È " }, { op: "OR", text: "ÈËÈ" } ], + matchText: " âêëþ÷è", + rulesText: " êëàóçà" + }, + edit : { + addCaption: "Íîâ Çàïèñ", + editCaption: "Ðåäàêöèÿ Çàïèñ", + bSubmit: "Çàïèøè", + bCancel: "Èçõîä", + bClose: "Çàòâîðè", + saveData: "Äàííèòå ñà ïðîìåíåíè! Äà ñúõðàíÿ ëè ïðîìåíèòå?", + bYes : "Äà", + bNo : "Íå", + bExit : "Îòêàç", + msg: { + required:"Ïîëåòî å çàäúëæèòåëíî", + number:"Âúâåäåòå âàëèäíî ÷èñëî!", + minValue:"ñòîéíîñòòà òðÿáâà äà å ïî-ãîëÿìà èëè ðàâíà îò", + maxValue:"ñòîéíîñòòà òðÿáâà äà å ïî-ìàëêà èëè ðàâíà îò", + email: "íå å âàëèäåí åë. àäðåñ", + integer: "Âúâåäåòå âàëèäíî öÿëî ÷èñëî", + date: "Âúâåäåòå âàëèäíà äàòà", + url: "e íåâàëèäåí URL. Èçèñêàâà ñå ïðåôèêñ('http://' èëè 'https://')", + nodefined : " å íåäåôèíèðàíà!", + novalue : " èçèñêâà âðúùàíå íà ñòîéíîñò!", + customarray : "Ïîòðåá. Ôóíêöèÿ òðÿáâà äà âúðíå ìàñèâ!", + customfcheck : "Ïîòðåáèòåëñêà ôóíêöèÿ å çàäúëæèòåëíà ïðè òîçè òèï åëåìåíò!" + } + }, + view : { + caption: "Ïðåãëåä çàïèñ", + bClose: "Çàòâîðè" + }, + del : { + caption: "Èçòðèâàíå", + msg: "Äà èçòðèÿ ëè èçáðàíèÿò çàïèñ?", + bSubmit: "Èçòðèé", + bCancel: "Îòêàç" + }, + nav : { + edittext: " ", + edittitle: "Ðåäàêöèÿ èçáðàí çàïèñ", + addtext:" ", + addtitle: "Äîáàâÿíå íîâ çàïèñ", + deltext: " ", + deltitle: "Èçòðèâàíå èçáðàí çàïèñ", + searchtext: " ", + searchtitle: "Òúðñåíå çàïèñ(è)", + refreshtext: "", + refreshtitle: "Îáíîâè òàáëèöà", + alertcap: "Ïðåäóïðåæäåíèå", + alerttext: "Ìîëÿ, èçáåðåòå çàïèñ", + viewtext: "", + viewtitle: "Ïðåãëåä èçáðàí çàïèñ" + }, + col : { + caption: "Èçáîð êîëîíè", + bSubmit: "Îê", + bCancel: "Èçõîä" + }, + errors : { + errcap : "Ãðåøêà", + nourl : "Íÿìà ïîñî÷åí url àäðåñ", + norecords: "Íÿìà çàïèñ çà îáðàáîòêà", + model : "Ìîäåëà íå ñúîòâåòñòâà íà èìåíàòà!" + }, + 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: [ + "Íåä", "Ïîí", "Âò", "Ñð", "×åò", "Ïåò", "Ñúá", + "Íåäåëÿ", "Ïîíåäåëíèê", "Âòîðíèê", "Ñðÿäà", "×åòâúðòúê", "Ïåòúê", "Ñúáîòà" + ], + monthNames: [ + "ßíó", "Ôåâ", "Ìàð", "Àïð", "Ìàé", "Þíè", "Þëè", "Àâã", "Ñåï", "Îêò", "Íîâ", "Äåê", + "ßíóàðè", "Ôåâðóàðè", "Ìàðò", "Àïðèë", "Ìàé", "Þíè", "Þëè", "Àâãóñò", "Ñåïòåìâðè", "Îêòîìâðè", "Íîåìâðè", "Äåêåìâðè" + ], + AmPm : ["","","",""], + S: function (j) { + if(j==7 || j==8 || j== 27 || j== 28) { + return 'ìè'; + } + return ['âè', 'ðè', 'òè'][Math.min((j - 1) % 10, 2)]; + }, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-cat.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-cat.js new file mode 100644 index 00000000000..a0ea13c69e4 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-cat.js @@ -0,0 +1,128 @@ +;(function($){ +/** + * jqGrid Catalan Translation + * Traducció jqGrid en Catatà per Faserline, S.L. + * http://www.faserline.com + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "Mostrant {0} - {1} de {2}", + emptyrecords: "Sense registres que mostrar", + loadtext: "Carregant...", + pgtext : "Pàgina {0} de {1}" + }, + search : { + caption: "Cerca...", + Find: "Cercar", + Reset: "Buidar", + odata : ['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'], + groupOps: [ { op: "AND", text: "tot" }, { op: "OR", text: "qualsevol" } ], + matchText: " match", + rulesText: " rules" + }, + edit : { + addCaption: "Afegir registre", + editCaption: "Modificar registre", + bSubmit: "Guardar", + bCancel: "Cancelar", + bClose: "Tancar", + saveData: "Les dades han canviat. Guardar canvis?", + bYes : "Yes", + bNo : "No", + bExit : "Cancel", + msg: { + required:"Camp obligatori", + number:"Introdueixi un nombre", + minValue:"El valor ha de ser major o igual que ", + maxValue:"El valor ha de ser menor o igual a ", + email: "no és una direcció de correu vàlida", + integer: "Introdueixi un valor enter", + date: "Introdueixi una data correcta ", + url: "no és una URL vàlida. Prefix requerit ('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: "Veure registre", + bClose: "Tancar" + }, + del : { + caption: "Eliminar", + msg: "¿Desitja eliminar els registres seleccionats?", + bSubmit: "Eliminar", + bCancel: "Cancelar" + }, + nav : { + edittext: " ", + edittitle: "Modificar fila seleccionada", + addtext:" ", + addtitle: "Agregar nova fila", + deltext: " ", + deltitle: "Eliminar fila seleccionada", + searchtext: " ", + searchtitle: "Cercar informació", + refreshtext: "", + refreshtitle: "Refrescar taula", + alertcap: "Avís", + alerttext: "Seleccioni una fila", + viewtext: " ", + viewtitle: "Veure fila seleccionada" + }, +// setcolumns module + col : { + caption: "Mostrar/ocultar columnes", + bSubmit: "Enviar", + bCancel: "Cancelar" + }, + errors : { + errcap : "Error", + nourl : "No s'ha especificat una URL", + norecords: "No hi ha dades per processar", + model : "Les columnes de noms són diferents de les columnes del model" + }, + 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: [ + "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds", + "Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte" + ], + monthNames: [ + "Gen", "Febr", "Març", "Abr", "Maig", "Juny", "Jul", "Ag", "Set", "Oct", "Nov", "Des", + "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre" + ], + 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: 'd-m-Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-cn.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-cn.js new file mode 100644 index 00000000000..d5d2513dbbf --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-cn.js @@ -0,0 +1,132 @@ +;(function($){ +/** + * jqGrid Chinese Translation for v3.6 + * waiting 2010.01.18 + * http://waiting.javaeye.com/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * update 2010.05.04 + * add double u3000 SPACE for search:odata to fix SEARCH box display err when narrow width from only use of eq/ne/cn/in/lt/gt operator under IE6/7 +**/ +$.jgrid = { + defaults : { + recordtext: "{0} - {1}\u3000å…± {2} æ¡", // 共字å‰æ˜¯å…¨è§’空格 + emptyrecords: "æ— æ•°æ®æ˜¾ç¤º", + loadtext: "读å–中...", + pgtext : " {0} å…± {1} 页" + }, + search : { + caption: "æœç´¢...", + Find: "查找", + Reset: "é‡ç½®", + odata : ['等于\u3000\u3000', 'ä¸ç­‰\u3000\u3000', 'å°äºŽ\u3000\u3000', 'å°äºŽç­‰äºŽ','大于\u3000\u3000','大于等于', + '开始于','ä¸å¼€å§‹äºŽ','属于\u3000\u3000','ä¸å±žäºŽ','结æŸäºŽ','ä¸ç»“æŸäºŽ','包å«\u3000\u3000','ä¸åŒ…å«'], + groupOps: [ { op: "AND", text: "所有" }, { op: "OR", text: "任一" } ], + matchText: " 匹é…", + rulesText: " 规则" + }, + edit : { + addCaption: "添加记录", + editCaption: "编辑记录", + bSubmit: "æ交", + bCancel: "å–消", + bClose: "关闭", + saveData: "æ•°æ®å·²æ”¹å˜ï¼Œæ˜¯å¦ä¿å­˜ï¼Ÿ", + bYes : "是", + bNo : "å¦", + bExit : "å–消", + msg: { + required:"此字段必需", + number:"请输入有效数字", + minValue:"输值必须大于等于 ", + maxValue:"输值必须å°äºŽç­‰äºŽ ", + email: "è¿™ä¸æ˜¯æœ‰æ•ˆçš„e-mail地å€", + integer: "请输入有效整数", + date: "请输入有效时间", + url: "无效网å€ã€‚å‰ç¼€å¿…须为 ('http://' 或 'https://')", + nodefined : " 未定义ï¼", + novalue : " 需è¦è¿”回值ï¼", + customarray : "自定义函数需è¦è¿”回数组ï¼", + customfcheck : "Custom function should be present in case of custom checking!" + + } + }, + view : { + caption: "查看记录", + bClose: "关闭" + }, + del : { + caption: "删除", + msg: "删除所选记录?", + bSubmit: "删除", + bCancel: "å–消" + }, + nav : { + edittext: "", + edittitle: "编辑所选记录", + addtext:"", + addtitle: "添加新记录", + deltext: "", + deltitle: "删除所选记录", + searchtext: "", + searchtitle: "查找", + refreshtext: "", + refreshtitle: "刷新表格", + alertcap: "注æ„", + alerttext: "请选择记录", + viewtext: "", + viewtitle: "查看所选记录" + }, + col : { + caption: "选择列", + bSubmit: "确定", + bCancel: "å–消" + }, + errors : { + errcap : "错误", + nourl : "没有设置url", + norecords: "没有è¦å¤„ç†çš„记录", + model : "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: 'm-d-Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "Y/j/n", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-cs.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-cs.js new file mode 100644 index 00000000000..81bf13baf01 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-cs.js @@ -0,0 +1,128 @@ +;(function($){ +/** + * jqGrid Czech Translation + * Pavel Jirak pavel.jirak@jipas.cz + * doplnil Thomas Wagner xwagne01@stud.fit.vutbr.cz + * 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 +**/ +$.jgrid = { + defaults : { + recordtext: "Zobrazeno {0} - {1} z {2} záznamů", + emptyrecords: "Nenalezeny žádné záznamy", + loadtext: "NaÄítám...", + pgtext : "Strana {0} z {1}" + }, + search : { + caption: "Vyhledávám...", + Find: "Hledat", + Reset: "Reset", + odata : ['rovno', 'nerovono', 'menší', 'menší nebo rovno','vÄ›tší', 'vÄ›tší nebo rovno', 'zaÄíná s', 'nezaÄíná s', 'je v', 'není v', 'konÄí s', 'nekonÄí s', 'obahuje', 'neobsahuje'], + groupOps: [ { op: "AND", text: "vÅ¡ech" }, { op: "OR", text: "nÄ›kterého z" } ], + matchText: " hledat podle", + rulesText: " pravidel" + }, + edit : { + addCaption: "PÅ™idat záznam", + editCaption: "Editace záznamu", + bSubmit: "Uložit", + bCancel: "Storno", + bClose: "Zavřít", + saveData: "Data byla zmÄ›nÄ›na! Uložit zmÄ›ny?", + bYes : "Ano", + bNo : "Ne", + bExit : "ZruÅ¡it", + msg: { + required:"Pole je vyžadováno", + number:"Prosím, vložte validní Äíslo", + minValue:"hodnota musí být vÄ›tší než nebo rovná ", + maxValue:"hodnota musí být menší než nebo rovná ", + email: "není validní e-mail", + integer: "Prosím, vložte celé Äíslo", + date: "Prosím, vložte validní datum", + url: "není platnou URL. Vyžadován prefix ('http://' or 'https://')", + nodefined : " není definován!", + novalue : " je vyžadována návratová hodnota!", + customarray : "Custom function mÄ›lá vrátit pole!", + customfcheck : "Custom function by mÄ›la být přítomna v případÄ› custom checking!" + } + }, + view : { + caption: "Zobrazit záznam", + bClose: "Zavřít" + }, + del : { + caption: "Smazat", + msg: "Smazat vybraný(é) záznam(y)?", + bSubmit: "Smazat", + bCancel: "Storno" + }, + nav : { + edittext: " ", + edittitle: "Editovat vybraný řádek", + addtext:" ", + addtitle: "PÅ™idat nový řádek", + deltext: " ", + deltitle: "Smazat vybraný záznam ", + searchtext: " ", + searchtitle: "Najít záznamy", + refreshtext: "", + refreshtitle: "Obnovit tabulku", + alertcap: "Varování", + alerttext: "Prosím, vyberte řádek", + viewtext: "", + viewtitle: "Zobrazit vybraný řádek" + }, + col : { + caption: "Zobrazit/Skrýt sloupce", + bSubmit: "Uložit", + bCancel: "Storno" + }, + errors : { + errcap : "Chyba", + nourl : "Není nastavena url", + norecords: "Žádné záznamy ke zpracování", + model : "Délka 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: [ + "Ne", "Po", "Út", "St", "ÄŒt", "Pá", "So", + "NedÄ›le", "PondÄ›lí", "Úterý", "StÅ™eda", "ÄŒtvrtek", "Pátek", "Sobota" + ], + monthNames: [ + "Led", "Úno", "BÅ™e", "Dub", "KvÄ›", "ÄŒer", "ÄŒvc", "Srp", "Zář", "Říj", "Lis", "Pro", + "Leden", "Únor", "BÅ™ezen", "Duben", "KvÄ›ten", "ÄŒerven", "ÄŒervenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" + ], + AmPm : ["do","od","DO","OD"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-da.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-da.js new file mode 100644 index 00000000000..fba251db849 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-da.js @@ -0,0 +1,128 @@ +;(function($){ +/** + * jqGrid Danish Translation + * Aesiras A/S + * http://www.aesiras.dk + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "Vis {0} - {1} of {2}", + emptyrecords: "Ingen linjer fundet", + loadtext: "Henter...", + pgtext : "Side {0} af {1}" + }, + search : { + caption: "Søg...", + Find: "Find", + Reset: "Nulstil", + odata : ['lig', 'forskellige fra', 'mindre', 'mindre eller lig','større','større eller lig', 'begynder med','begynder ikke med','findes i','findes ikke i','ender med','ender ikke med','indeholder','indeholder ikke'], + groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], + matchText: " lig", + rulesText: " regler" + }, + edit : { + addCaption: "Tilføj", + editCaption: "Ret", + bSubmit: "Send", + bCancel: "Annuller", + bClose: "Luk", + saveData: "Data er ændret. Gem data?", + bYes : "Ja", + bNo : "Nej", + bExit : "Fortryd", + msg: { + required:"Felt er nødvendigt", + number:"Indtast venligst et validt tal", + minValue:"værdi skal være større end eller lig med", + maxValue:"værdi skal være mindre end eller lig med", + email: "er ikke en gyldig email", + integer: "Indtast venligst et gyldigt heltal", + date: "Indtast venligst en gyldig datoværdi", + url: "er ugyldig URL. Prefix mangler ('http://' or 'https://')", + nodefined : " er ikke defineret!", + novalue : " returværdi kræves!", + customarray : "Custom function should return array!", + customfcheck : "Custom function should be present in case of custom checking!" + } + }, + view : { + caption: "Vis linje", + bClose: "Luk" + }, + del : { + caption: "Slet", + msg: "Slet valgte linje(r)?", + bSubmit: "Slet", + bCancel: "Fortryd" + }, + nav : { + edittext: " ", + edittitle: "Rediger valgte linje", + addtext:" ", + addtitle: "Tilføj ny linje", + deltext: " ", + deltitle: "Slet valgte linje", + searchtext: " ", + searchtitle: "Find linjer", + refreshtext: "", + refreshtitle: "Indlæs igen", + alertcap: "Advarsel", + alerttext: "Vælg venligst linje", + viewtext: "", + viewtitle: "Vis valgte linje" + }, + col : { + caption: "Vis/skjul kolonner", + bSubmit: "Opdatere", + bCancel: "Fortryd" + }, + errors : { + errcap : "Fejl", + nourl : "Ingen url valgt", + norecords: "Ingen linjer at behandle", + model : "colNames og colModel har ikke samme længde!" + }, + 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: [ + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", + "Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec", + "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" + ], + AmPm : ["","","",""], + S: function (j) {return '.'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "j/n/Y", + LongDate: "l d. F Y", + FullDateTime: "l d F Y G:i:s", + MonthDay: "d. F", + ShortTime: "G:i", + LongTime: "G:i:s", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +// DA +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-de.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-de.js new file mode 100644 index 00000000000..39474eedc87 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-de.js @@ -0,0 +1,133 @@ +;(function($){ +/** + * jqGrid German Translation + * Version 1.0.0 (developed for jQuery Grid 3.3.1) + * Olaf Klöppel opensource@blue-hit.de + * http://blue-hit.de/ + * + * Updated for jqGrid 3.8 + * Andreas Flack + * http://www.contentcontrol-berlin.de + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "Zeige {0} - {1} von {2}", + emptyrecords: "Keine Datensätze vorhanden", + loadtext: "Lädt...", + pgtext : "Seite {0} von {1}" + }, + search : { + caption: "Suche...", + Find: "Suchen", + Reset: "Zurücksetzen", + odata : ['gleich', 'ungleich', 'kleiner', 'kleiner gleich','größer','größer gleich', 'beginnt mit','beginnt nicht mit','ist in','ist nicht in','endet mit','endet nicht mit','enthält','enthält nicht'], + groupOps: [ { op: "AND", text: "alle" }, { op: "OR", text: "mindestens eine" } ], + matchText: " erfülle", + rulesText: " Bedingung(en)" + }, + edit : { + addCaption: "Datensatz hinzufügen", + editCaption: "Datensatz bearbeiten", + bSubmit: "Speichern", + bCancel: "Abbrechen", + bClose: "Schließen", + saveData: "Daten wurden geändert! Änderungen speichern?", + bYes : "ja", + bNo : "nein", + bExit : "abbrechen", + msg: { + required:"Feld ist erforderlich", + number: "Bitte geben Sie eine Zahl ein", + minValue:"Wert muss größer oder gleich sein, als ", + maxValue:"Wert muss kleiner oder gleich sein, als ", + email: "ist keine gültige E-Mail-Adresse", + integer: "Bitte geben Sie eine Ganzzahl ein", + date: "Bitte geben Sie ein gültiges Datum ein", + url: "ist keine gültige URL. Präfix muss eingegeben werden ('http://' oder 'https://')", + nodefined : " ist nicht definiert!", + novalue : " Rückgabewert ist erforderlich!", + customarray : "Benutzerdefinierte Funktion sollte ein Array zurückgeben!", + customfcheck : "Benutzerdefinierte Funktion sollte im Falle der benutzerdefinierten Ãœberprüfung vorhanden sein!" + } + }, + view : { + caption: "Datensatz anzeigen", + bClose: "Schließen" + }, + del : { + caption: "Löschen", + msg: "Ausgewählte Datensätze löschen?", + bSubmit: "Löschen", + bCancel: "Abbrechen" + }, + nav : { + edittext: " ", + edittitle: "Ausgewählte Zeile editieren", + addtext:" ", + addtitle: "Neue Zeile einfügen", + deltext: " ", + deltitle: "Ausgewählte Zeile löschen", + searchtext: " ", + searchtitle: "Datensatz suchen", + refreshtext: "", + refreshtitle: "Tabelle neu laden", + alertcap: "Warnung", + alerttext: "Bitte Zeile auswählen", + viewtext: "", + viewtitle: "Ausgewählte Zeile anzeigen" + }, + col : { + caption: "Spalten auswählen", + bSubmit: "Speichern", + bCancel: "Abbrechen" + }, + errors : { + errcap : "Fehler", + nourl : "Keine URL angegeben", + norecords: "Keine Datensätze zu bearbeiten", + model : "colNames und colModel sind unterschiedlich lang!" + }, + 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: [ + "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", + "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", + "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return 'ter'}, + srcformat: 'Y-m-d', + newformat: 'd.m.Y', + masks : { + ISO8601Long: "Y-m-d H:i:s", + ISO8601Short: "Y-m-d", + ShortDate: "j.n.Y", + LongDate: "l, j. F Y", + FullDateTime: "l, d. F Y G:i:s", + MonthDay: "d. F", + ShortTime: "G:i", + LongTime: "G:i:s", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-el.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-el.js new file mode 100644 index 00000000000..5e49ddbdb4a --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-el.js @@ -0,0 +1,126 @@ +;(function($){ +/** + * jqGrid Greek (el) Translation + * Alex Cicovic + * http://www.alexcicovic.com + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "View {0} - {1} of {2}", + emptyrecords: "No records to view", + loadtext: "ΦόÏτωση...", + pgtext : "Page {0} of {1}" + }, + search : { + caption: "Αναζήτηση...", + Find: "ΕÏÏεση", + Reset: "ΕπαναφοÏά", + odata : ['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'], + groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], + matchText: " match", + rulesText: " rules" + }, + edit : { + addCaption: "Εισαγωγή ΕγγÏαφής", + editCaption: "ΕπεξεÏγασία ΕγγÏαφής", + bSubmit: "ΚαταχώÏηση", + bCancel: "ΆκυÏο", + bClose: "Κλείσιμο", + saveData: "Data has been changed! Save changes?", + bYes : "Yes", + bNo : "No", + bExit : "Cancel", + msg: { + required:"Το πεδίο είναι απαÏαίτητο", + number:"Το πεδίο δέχεται μόνο αÏιθμοÏÏ‚", + minValue:"Η τιμή Ï€Ïέπει να είναι μεγαλÏτεÏη ή ίση του ", + maxValue:"Η τιμή Ï€Ïέπει να είναι μικÏότεÏη ή ίση του ", + email: "Η διεÏθυνση e-mail δεν είναι έγκυÏη", + integer: "Το πεδίο δέχεται μόνο ακέÏαιους αÏιθμοÏÏ‚", + 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: "ΔιαγÏαφή", + msg: "ΔιαγÏαφή των επιλεγμένων εγγÏαφών;", + bSubmit: "Îαι", + bCancel: "ΆκυÏο" + }, + nav : { + edittext: " ", + edittitle: "ΕπεξεÏγασία επιλεγμένης εγγÏαφής", + addtext:" ", + addtitle: "Εισαγωγή νέας εγγÏαφής", + deltext: " ", + deltitle: "ΔιαγÏαφή επιλεγμένης εγγÏαφής", + searchtext: " ", + searchtitle: "ΕÏÏεση ΕγγÏαφών", + refreshtext: "", + refreshtitle: "Ανανέωση Πίνακα", + alertcap: "ΠÏοσοχή", + alerttext: "Δεν έχετε επιλέξει εγγÏαφή", + viewtext: "", + viewtitle: "View selected row" + }, + col : { + caption: "Εμφάνιση / ΑπόκÏυψη Στηλών", + bSubmit: "ΟΚ", + bCancel: "ΆκυÏο" + }, + errors : { + errcap : "Σφάλμα", + nourl : "Δεν έχει δοθεί διεÏθυνση χειÏÎ¹ÏƒÎ¼Î¿Ï Î³Î¹Î± τη συγκεκÏιμένη ενέÏγεια", + norecords: "Δεν υπάÏχουν εγγÏαφές Ï€Ïος επεξεÏγασία", + model : "Άνισος αÏιθμός πεδίων 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: [ + "ΚυÏ", "Δευ", "ΤÏι", "Τετ", "Πεμ", "ΠαÏ", "Σαβ", + "ΚυÏιακή", "ΔευτέÏα", "ΤÏίτη", "ΤετάÏτη", "Πέμπτη", "ΠαÏασκευή", "Σάββατο" + ], + monthNames: [ + "Ιαν", "Φεβ", "ΜαÏ", "ΑπÏ", "Μαι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Îοε", "Δεκ", + "ΙανουάÏιος", "ΦεβÏουάÏιος", "ΜάÏτιος", "ΑπÏίλιος", "Μάιος", "ΙοÏνιος", "ΙοÏλιος", "ΑÏγουστος", "ΣεπτέμβÏιος", "ΟκτώβÏιος", "ÎοέμβÏιος", "ΔεκέμβÏιος" + ], + AmPm : ["πμ","μμ","ΠΜ","ΜΜ"], + S: function (j) {return j == 1 || j > 1 ? ['η'][Math.min((j - 1) % 10, 3)] : ''}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-en.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-en.js new file mode 100644 index 00000000000..19f50a3207d --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-en.js @@ -0,0 +1,128 @@ +;(function($){ +/** + * 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 +**/ +$.jgrid = { + defaults : { + recordtext: "View {0} - {1} of {2}", + emptyrecords: "No records to view", + loadtext: "Loading...", + pgtext : "Page {0} of {1}" + }, + search : { + caption: "Search...", + Find: "Find", + Reset: "Reset", + odata : ['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'], + groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], + matchText: " match", + rulesText: " rules" + }, + 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" + }, + 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: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-es.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-es.js new file mode 100644 index 00000000000..9cf5753e4fe --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-es.js @@ -0,0 +1,128 @@ +;(function($){ +/** + * jqGrid Spanish Translation + * Traduccion jqGrid en Español por Yamil Bracho + * Traduccion corregida y ampliada por Faserline, S.L. + * http://www.faserline.com + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "Mostrando {0} - {1} de {2}", + emptyrecords: "Sin registros que mostrar", + loadtext: "Cargando...", + pgtext : "Página {0} de {1}" + }, + search : { + caption: "Búsqueda...", + Find: "Buscar", + Reset: "Limpiar", + odata : ['igual ', 'no igual a', 'menor que', 'menor o igual que','mayor que','mayor o igual a', 'empiece por','no empiece por','está en','no está en','termina por','no termina por','contiene','no contiene'], + groupOps: [ { op: "AND", text: "todo" }, { op: "OR", text: "cualquier" } ], + matchText: " match", + rulesText: " reglas" + }, + edit : { + addCaption: "Agregar registro", + editCaption: "Modificar registro", + bSubmit: "Guardar", + bCancel: "Cancelar", + bClose: "Cerrar", + saveData: "Se han modificado los datos, ¿guardar cambios?", + bYes : "Si", + bNo : "No", + bExit : "Cancelar", + msg: { + required:"Campo obligatorio", + number:"Introduzca un número", + minValue:"El valor debe ser mayor o igual a ", + maxValue:"El valor debe ser menor o igual a ", + email: "no es una dirección de correo válida", + integer: "Introduzca un valor entero", + date: "Introduza una fecha correcta ", + url: "no es una URL válida. Prefijo requerido ('http://' or 'https://')", + nodefined : " no está definido.", + novalue : " valor de retorno es requerido.", + customarray : "La función personalizada debe devolver un array.", + customfcheck : "La función personalizada debe estar presente en el caso de validación personalizada." + } + }, + view : { + caption: "Consultar registro", + bClose: "Cerrar" + }, + del : { + caption: "Eliminar", + msg: "¿Desea eliminar los registros seleccionados?", + bSubmit: "Eliminar", + bCancel: "Cancelar" + }, + nav : { + edittext: " ", + edittitle: "Modificar fila seleccionada", + addtext:" ", + addtitle: "Agregar nueva fila", + deltext: " ", + deltitle: "Eliminar fila seleccionada", + searchtext: " ", + searchtitle: "Buscar información", + refreshtext: "", + refreshtitle: "Recargar datos", + alertcap: "Aviso", + alerttext: "Seleccione una fila", + viewtext: "", + viewtitle: "Ver fila seleccionada" + }, + col : { + caption: "Mostrar/ocultar columnas", + bSubmit: "Enviar", + bCancel: "Cancelar" + }, + errors : { + errcap : "Error", + nourl : "No se ha especificado una URL", + norecords: "No hay datos para procesar", + model : "Las columnas de nombres son diferentes de las columnas de modelo" + }, + 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: [ + "Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", + "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado" + ], + monthNames: [ + "Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic", + "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" + ], + 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: 'd-m-Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-fa.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-fa.js new file mode 100644 index 00000000000..3c233de6b31 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-fa.js @@ -0,0 +1,145 @@ +;(function ($) { +/** + * jqGrid Persian Translation + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ + $.jgrid = { + defaults: { + recordtext: "نمابش {0} - {1} از {2}", + emptyrecords: "رکوردی یاÙت نشد", + loadtext: "بارگزاري...", + pgtext: "صÙحه {0} از {1}" + }, + search: { + caption: "جستجو...", + Find: "ياÙته ها", + Reset: "از نو", + odata: ['برابر', 'نا برابر', 'به', 'کوچکتر', 'از', 'بزرگتر', 'شروع با', 'شروع نشود با', 'نباشد', 'عضو این نباشد', 'اتمام با', 'تمام نشود با', 'حاوی', 'نباشد حاوی'], + groupOps: [{ + op: "AND", + text: "Ú©Ù„" + }, + { + op: "OR", + text: "مجموع" + }], + matchText: " حاوی", + rulesText: " اطلاعات" + }, + edit: { + addCaption: "اضاÙÙ‡ کردن رکورد", + editCaption: "ويرايش رکورد", + bSubmit: "ثبت", + bCancel: "انصراÙ", + bClose: "بستن", + saveData: "دیتا تعییر کرد! ذخیره شود؟", + bYes: "بله", + bNo: "خیر", + bExit: "انصراÙ", + msg: { + required: "Ùيلدها بايد ختما پر شوند", + number: "لطÙا عدد وعتبر وارد کنيد", + minValue: "مقدار وارد شده بايد بزرگتر يا مساوي با", + maxValue: "مقدار وارد شده بايد کوچکتر يا مساوي", + email: "پست الکترونيک وارد شده معتبر نيست", + integer: "لطÙا ÙŠÚ© عدد صحيح وارد کنيد", + date: "لطÙا ÙŠÚ© تاريخ معتبر وارد کنيد", + url: "این آدرس صحیح نمی باشد. پیشوند نیاز است ('http://' یا 'https://')", + nodefined: " تعری٠نشده!", + novalue: " مقدار برگشتی اجباری است!", + customarray: "تابع شما باید مقدار آرایه داشته باشد!", + customfcheck: "برای داشتن متد دلخواه شما باید سطون با چکینگ دلخواه داشته باشید!" + } + }, + view: { + caption: "نمایش رکورد", + bClose: "بستن" + }, + del: { + caption: "حذÙ", + msg: "از حذ٠گزينه هاي انتخاب شده مطمئن هستيد؟", + bSubmit: "حذÙ", + bCancel: "ابطال" + }, + nav: { + edittext: " ", + edittitle: "ويرايش ردي٠هاي انتخاب شده", + addtext: " ", + addtitle: "اÙزودن ردي٠جديد", + deltext: " ", + deltitle: "حذ٠ردب٠هاي انتخاب شده", + searchtext: " ", + searchtitle: "جستجوي رديÙ", + refreshtext: "", + refreshtitle: "بازيابي مجدد صÙحه", + alertcap: "اخطار", + alerttext: "لطÙا ÙŠÚ© ردي٠انتخاب کنيد", + viewtext: "", + viewtitle: "نمایش رکورد های انتخاب شده" + }, + col: { + caption: "نمايش/عدم نمايش ستون", + bSubmit: "ثبت", + bCancel: "انصراÙ" + }, + errors: { + errcap: "خطا", + nourl: "هيچ آدرسي تنظيم نشده است", + norecords: "هيچ رکوردي براي پردازش موجود نيست", + model: "طول نام ستون ها محال٠ستون هاي مدل مي باشد!" + }, + formatter: { + integer: { + thousandsSeparator: " ", + defaultValue: "0" + }, + number: { + decimalSeparator: ".", + thousandsSeparator: " ", + decimalPlaces: 2, + defaultValue: "0.00" + }, + currency: { + decimalSeparator: ".", + thousandsSeparator: " ", + decimalPlaces: 2, + prefix: "", + suffix: "", + defaultValue: "0" + }, + date: { + dayNames: ["ÙŠÚ©", "دو", "سه", "چهار", "پنج", "جمع", "شنب", "يکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"], + monthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "ژانويه", "Ùوريه", "مارس", "آوريل", "مه", "ژوئن", "ژوئيه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "December"], + AmPm: ["ب.ظ", "ب.ظ", "Ù‚.ظ", "Ù‚.ظ"], + S: function (b) { + return b < 11 || b > 13 ? ["st", "nd", "rd", "th"][Math.min((b - 1) % 10, 3)] : "th" + }, + srcformat: "Y-m-d", + newformat: "d/m/Y", + masks: { + ISO8601Long: "Y-m-d H:i:s", + ISO8601Short: "Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit: false + }, + baseLinkUrl: "", + showAction: "نمايش", + target: "", + checkbox: { + disabled: true + }, + idName: "id" + } + } +})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-fi.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-fi.js new file mode 100644 index 00000000000..f6d9175e1e4 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-fi.js @@ -0,0 +1,128 @@ +;(function($){ +/** + * jqGrid (fi) Finnish Translation + * Jukka Inkeri awot.fi 2010-05-19 Version + * http://awot.fi + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults: { + recordtext: "Rivit {0} - {1} / {2}", + emptyrecords: "Ei näytettäviä", + loadtext: "Haetaan...", + pgtext: "Sivu {0} / {1}" + }, + search: { + caption: "Etsi...", + Find: "Etsi", + Reset: "Tyhjää", + odata: ['=', '<>', '<', '<=','>','>=', 'alkaa','ei ala','joukossa','ei joukossa','loppuu','ei lopu','sisältää','ei sisällä'], + groupOps: [ { op: "AND", text: "kaikki" }, { op: "OR", text: "mikä tahansa" } ], + matchText: "  täytä ehdot:", + rulesText: "" + }, + edit: { + addCaption: "Uusi rivi", + editCaption: "Muokkaa riviä", + bSubmit: "OK", + bCancel: "Peru", + bClose: "Sulje", + saveData: "Tietoja muutettu! Tallennetaanko?", + bYes: "K", + bNo: "E", + bExit: "Peru", + msg: { + required: "pakollinen", + number: "Anna kelvollinen nro", + minValue: "arvo oltava >= ", + maxValue: "arvo oltava <= ", + email: "virheellinen sposti ", + integer: "Anna kelvollinen kokonaisluku", + date: "Anna kelvollinen pvm", + url: "Ei ole sopiva linkki(URL). Alku oltava ('http://' tai 'https://')", + nodefined: " ei ole määritelty!", + novalue: " paluuarvo vaaditaan!", + customarray: "Custom function should return array!", + customfcheck: "Custom function should be present in case of custom checking!" + } + }, + view: { + caption: "Näytä rivi", + bClose: "Sulje" + }, + del: { + caption: "Poista", + msg: "Poista valitut rivit?", + bSubmit: "Poista", + bCancel: "Peru" + }, + nav: { + edittext: " ", + edittitle: "Muokkaa valittu rivi", + addtext: " ", + addtitle: "Uusi rivi", + deltext: " ", + deltitle: "Poista valittu rivi", + searchtext: " ", + searchtitle: "Etsi tietoja", + refreshtext: "", + refreshtitle: "Lataa uudelleen", + alertcap: "Varoitus", + alerttext: "Valitse rivi", + viewtext: "", + viewtitle: "Näyta valitut rivit" + }, + col: { + caption: "Näyta/Piilota sarakkeet", + bSubmit: "OK", + bCancel: "Peru" + }, + errors : { + errcap: "Virhe", + nourl: "url asettamatta", + norecords: "Ei muokattavia tietoja", + model: "Pituus 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: [ + "Su", "Ma", "Ti", "Ke", "To", "Pe", "La", + "Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai" + ], + monthNames: [ + "Tam", "Hel", "Maa", "Huh", "Tou", "Kes", "Hei", "Elo", "Syy", "Lok", "Mar", "Jou", + "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" + ], + 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: 'd/m/Y', + masks: { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "d.m.Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox: {disabled:true}, + idName: 'id' + } +}; +// FI +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-fr.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-fr.js new file mode 100644 index 00000000000..a7d22abe7fd --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-fr.js @@ -0,0 +1,126 @@ +;(function($){ +/** + * jqGrid French 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 +**/ +$.jgrid = { + defaults : { + recordtext: "Enregistrements {0} - {1} sur {2}", + emptyrecords: "Aucun enregistrement à afficher", + loadtext: "Chargement...", + pgtext : "Page {0} sur {1}" + }, + search : { + caption: "Recherche...", + Find: "Chercher", + Reset: "Annuler", + odata : ['égal', 'différent', 'inférieur', 'inférieur ou égal','supérieur','supérieur ou égal', 'commence par','ne commence pas par','est dans',"n'est pas dans",'finit par','ne finit pas par','contient','ne contient pas'], + groupOps: [ { op: "AND", text: "tous" }, { op: "OR", text: "aucun" } ], + matchText: " correspondance", + rulesText: " règles" + }, + edit : { + addCaption: "Ajouter", + editCaption: "Editer", + bSubmit: "Valider", + bCancel: "Annuler", + bClose: "Fermer", + saveData: "Les données ont changé ! Enregistrer les modifications ?", + bYes: "Oui", + bNo: "Non", + bExit: "Annuler", + msg: { + required: "Champ obligatoire", + number: "Saisissez un nombre correct", + minValue: "La valeur doit être supérieure ou égale à", + maxValue: "La valeur doit être inférieure ou égale à", + email: "n'est pas un email correct", + integer: "Saisissez un entier correct", + url: "n'est pas une adresse correcte. Préfixe requis ('http://' or 'https://')", + nodefined : " n'est pas défini!", + novalue : " la valeur de retour est requise!", + customarray : "Une fonction personnalisée devrait retourner un tableau (array)!", + customfcheck : "Une fonction personnalisée devrait être présente dans le cas d'une vérification personnalisée!" + } + }, + view : { + caption: "Voir les enregistrement", + bClose: "Fermer" + }, + del : { + caption: "Supprimer", + msg: "Supprimer les enregistrements sélectionnés ?", + bSubmit: "Supprimer", + bCancel: "Annuler" + }, + nav : { + edittext: " ", + edittitle: "Editer la ligne sélectionnée", + addtext:" ", + addtitle: "Ajouter une ligne", + deltext: " ", + deltitle: "Supprimer la ligne sélectionnée", + searchtext: " ", + searchtitle: "Chercher un enregistrement", + refreshtext: "", + refreshtitle: "Recharger le tableau", + alertcap: "Avertissement", + alerttext: "Veuillez sélectionner une ligne", + viewtext: "", + viewtitle: "Afficher la ligne sélectionnée" + }, + col : { + caption: "Afficher/Masquer les colonnes", + bSubmit: "Valider", + bCancel: "Annuler" + }, + errors : { + errcap : "Erreur", + nourl : "Aucune adresse n'est paramétrée", + norecords: "Aucun enregistrement à traiter", + model : "Nombre de titres (colNames) <> Nombre de données (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: [ + "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", + "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" + ], + monthNames: [ + "Jan", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc", + "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j == 1 ? 'er' : 'e';}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-gl.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-gl.js new file mode 100644 index 00000000000..7b7f5a666f8 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-gl.js @@ -0,0 +1,126 @@ +;(function($){ +/** + * jqGrid Galician Translation + * Translated by Jorge Barreiro + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "Amosando {0} - {1} de {2}", + emptyrecords: "Sen rexistros que amosar", + loadtext: "Cargando...", + pgtext : "Páxina {0} de {1}" + }, + search : { + caption: "Búsqueda...", + Find: "Buscar", + Reset: "Limpar", + odata : ['igual ', 'diferente a', 'menor que', 'menor ou igual que','maior que','maior ou igual a', 'empece por','non empece por','está en','non está en','termina por','non termina por','contén','non contén'], + groupOps: [ { op: "AND", text: "todo" }, { op: "OR", text: "calquera" } ], + matchText: " match", + rulesText: " regras" + }, + edit : { + addCaption: "Engadir rexistro", + editCaption: "Modificar rexistro", + bSubmit: "Gardar", + bCancel: "Cancelar", + bClose: "Pechar", + saveData: "Modificáronse os datos, quere gardar os cambios?", + bYes : "Si", + bNo : "Non", + bExit : "Cancelar", + msg: { + required:"Campo obrigatorio", + number:"Introduza un número", + minValue:"O valor debe ser maior ou igual a ", + maxValue:"O valor debe ser menor ou igual a ", + email: "non é un enderezo de correo válido", + integer: "Introduza un valor enteiro", + date: "Introduza unha data correcta ", + url: "non é unha URL válida. Prefixo requerido ('http://' ou 'https://')", + nodefined : " non está definido.", + novalue : " o valor de retorno é obrigatorio.", + customarray : "A función persoalizada debe devolver un array.", + customfcheck : "A función persoalizada debe estar presente no caso de ter validación persoalizada." + } + }, + view : { + caption: "Consultar rexistro", + bClose: "Pechar" + }, + del : { + caption: "Eliminar", + msg: "Desexa eliminar os rexistros seleccionados?", + bSubmit: "Eliminar", + bCancel: "Cancelar" + }, + nav : { + edittext: " ", + edittitle: "Modificar a fila seleccionada", + addtext:" ", + addtitle: "Engadir unha nova fila", + deltext: " ", + deltitle: "Eliminar a fila seleccionada", + searchtext: " ", + searchtitle: "Buscar información", + refreshtext: "", + refreshtitle: "Recargar datos", + alertcap: "Aviso", + alerttext: "Seleccione unha fila", + viewtext: "", + viewtitle: "Ver fila seleccionada" + }, + col : { + caption: "Mostrar/ocultar columnas", + bSubmit: "Enviar", + bCancel: "Cancelar" + }, + errors : { + errcap : "Erro", + nourl : "Non especificou unha URL", + norecords: "Non hai datos para procesar", + model : "As columnas de nomes son diferentes das columnas de modelo" + }, + 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: [ + "Do", "Lu", "Ma", "Me", "Xo", "Ve", "Sa", + "Domingo", "Luns", "Martes", "Mércoles", "Xoves", "Vernes", "Sábado" + ], + monthNames: [ + "Xan", "Feb", "Mar", "Abr", "Mai", "Xuñ", "Xul", "Ago", "Set", "Out", "Nov", "Dec", + "Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro" + ], + 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: 'd-m-Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-he.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-he.js new file mode 100644 index 00000000000..677bb802605 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-he.js @@ -0,0 +1,127 @@ +;(function($){ +/** + * jqGrid Hebrew Translation + * Shuki Shukrun shukrun.shuki@gmail.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 +**/ +$.jgrid = { + defaults : { + recordtext: "מציג {0} - {1} מתוך {2}", + emptyrecords: "×ין רשומות להציג", + loadtext: "טוען...", + pgtext : "דף {0} מתוך {1}" + }, + search : { + caption: "מחפש...", + Find: "חפש", + Reset: "התחל", + odata : ['שווה', '×œ× ×©×•×•×”', 'קטן', 'קטן ×ו שווה','גדול','גדול ×ו שווה', 'מתחיל ב','×œ× ×ž×ª×—×™×œ ב','× ×ž×¦× ×‘','×œ× × ×ž×¦× ×‘','×ž×¡×ª×™×™× ×‘','×œ× ×ž×¡×ª×™×™× ×‘','מכיל','×œ× ×ž×›×™×œ'], + groupOps: [ { op: "AND", text: "הכל" }, { op: "OR", text: "×חד מ" } ], + matchText: " תו××", + rulesText: " חוקי×" + }, + edit : { + addCaption: "הוסף רשומה", + editCaption: "ערוך רשומה", + bSubmit: "שלח", + bCancel: "בטל", + bClose: "סגור", + saveData: "× ×ª×•× ×™× ×”×©×ª× ×•! לשמור?", + bYes : "כן", + bNo : "ל×", + bExit : "בטל", + msg: { + required:"שדה חובה", + number:"×× ×, הכנס מספר תקין", + minValue:"ערך צריך להיות גדול ×ו שווה ל ", + maxValue:"ערך צריך להיות קטן ×ו שווה ל ", + email: "×”×™× ×œ× ×›×ª×•×‘×ª ×יימל תקינה", + integer: "×× ×, הכנס מספר של×", + date: "×× ×, הכנס ת×ריך תקין", + url: "הכתובת ××™× ×” תקינה. דרושה תחילית ('http://' ×ו '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: "הצג רשומה", + bClose: "סגור" + }, + del : { + caption: "מחק", + msg: "×”×× ×œ×ž×—×•×§ ×ת הרשומה/ות המסומנות?", + bSubmit: "מחק", + bCancel: "בטל" + }, + nav : { + edittext: "", + edittitle: "ערוך שורה מסומנת", + addtext:"", + addtitle: "הוסף שורה חדשה", + deltext: "", + deltitle: "מחק שורה מסומנת", + searchtext: "", + searchtitle: "חפש רשומות", + refreshtext: "", + refreshtitle: "טען גריד מחדש", + alertcap: "×זהרה", + alerttext: "×× ×, בחר שורה", + viewtext: "", + viewtitle: "הצג שורה מסומנת" + }, + col : { + caption: "הצג/הסתר עמודות", + bSubmit: "שלח", + bCancel: "בטל" + }, + errors : { + errcap : "שגי××”", + nourl : "×œ× ×”×•×’×“×¨×” כתובת url", + norecords: "×ין רשומות לעבד", + model : "×ורך של 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: [ + "×", "ב", "×’", "ד", "×”", "ו", "ש", + "ר×שון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת" + ], + monthNames: [ + "ינו", "פבר", "מרץ", "×פר", "מ××™", "יונ", "יול", "×וג", "ספט", "×וק", "נוב", "דצמ", + "ינו×ר", "פברו×ר", "מרץ", "×פריל", "מ××™", "יוני", "יולי", "×וגוסט", "ספטמבר", "×וקטובר", "נובמבר", "דצמבר" + ], + AmPm : ["לפני הצהרי×","×חר הצהרי×","לפני הצהרי×","×חר הצהרי×"], + S: function (j) {return j < 11 || j > 13 ? ['', '', '', ''][Math.min((j - 1) % 10, 3)] : ''}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-hu.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-hu.js new file mode 100644 index 00000000000..fc5f96a563e --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-hu.js @@ -0,0 +1,129 @@ +;(function($){ +/** + * jqGrid Hungarian Translation + * Årszigety Ãdám udx6bs@freemail.hu + * 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 +**/ + +$.jgrid = { + defaults : { + recordtext: "Oldal {0} - {1} / {2}", + emptyrecords: "Nincs találat", + loadtext: "Betöltés...", + pgtext : "Oldal {0} / {1}" + }, + search : { + caption: "Keresés...", + Find: "Keres", + Reset: "Alapértelmezett", + odata : ['egyenlÅ‘', 'nem egyenlÅ‘', 'kevesebb', 'kevesebb vagy egyenlÅ‘','nagyobb','nagyobb vagy egyenlÅ‘', 'ezzel kezdÅ‘dik','nem ezzel kezdÅ‘dik','tartalmaz','nem tartalmaz','végzÅ‘dik','nem végzÅ‘dik','tartalmaz','nem tartalmaz'], + groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], + matchText: " match", + rulesText: " rules" + }, + edit : { + addCaption: "Új tétel", + editCaption: "Tétel szerkesztése", + bSubmit: "Mentés", + bCancel: "Mégse", + bClose: "Bezárás", + saveData: "A tétel megváltozott! Tétel mentése?", + bYes : "Igen", + bNo : "Nem", + bExit : "Mégse", + msg: { + required:"KötelezÅ‘ mezÅ‘", + number:"Kérjük, adjon meg egy helyes számot", + minValue:"Nagyobb vagy egyenlÅ‘nek kell lenni mint ", + maxValue:"Kisebb vagy egyenlÅ‘nek kell lennie mint", + email: "hibás emailcím", + integer: "Kérjük adjon meg egy helyes egész számot", + date: "Kérjük adjon meg egy helyes dátumot", + url: "nem helyes cím. ElÅ‘tag kötelezÅ‘ ('http://' vagy 'https://')", + nodefined : " nem definiált!", + novalue : " visszatérési érték kötelezÅ‘!!", + customarray : "Custom function should return array!", + customfcheck : "Custom function should be present in case of custom checking!" + + } + }, + view : { + caption: "Tétel megtekintése", + bClose: "Bezárás" + }, + del : { + caption: "Törlés", + msg: "Kiválaztott tétel(ek) törlése?", + bSubmit: "Törlés", + bCancel: "Mégse" + }, + nav : { + edittext: "", + edittitle: "Tétel szerkesztése", + addtext:"", + addtitle: "Új tétel hozzáadása", + deltext: "", + deltitle: "Tétel törlése", + searchtext: "", + searchtitle: "Keresés", + refreshtext: "", + refreshtitle: "Frissítés", + alertcap: "Figyelmeztetés", + alerttext: "Kérem válasszon tételt.", + viewtext: "", + viewtitle: "Tétel megtekintése" + }, + col : { + caption: "Oszlopok kiválasztása", + bSubmit: "Ok", + bCancel: "Mégse" + }, + errors : { + errcap : "Hiba", + nourl : "Nincs URL beállítva", + norecords: "Nincs feldolgozásra váró tétel", + model : "colNames és colModel hossza nem egyenlÅ‘!" + }, + 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: [ + "Va", "Hé", "Ke", "Sze", "Csü", "Pé", "Szo", + "Vasárnap", "HétfÅ‘", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat" + ], + monthNames: [ + "Jan", "Feb", "Már", "Ãpr", "Máj", "Jún", "Júl", "Aug", "Szep", "Okt", "Nov", "Dec", + "Január", "Február", "Március", "Ãprili", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December" + ], + AmPm : ["de","du","DE","DU"], + S: function (j) {return '.-ik';}, + srcformat: 'Y-m-d', + newformat: 'Y/m/d', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "Y/j/n", + LongDate: "Y. F hó d., l", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "a g:i", + LongTime: "a g:i:s", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "Y, F" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-is.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-is.js new file mode 100644 index 00000000000..2f4a8ad96fe --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-is.js @@ -0,0 +1,126 @@ +;(function($){ +/** + * jqGrid Icelandic Translation + * jtm@hi.is Univercity of Iceland + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "View {0} - {1} of {2}", + emptyrecords: "No records to view", + loadtext: "Hleður...", + pgtext : "Page {0} of {1}" + }, + search : { + caption: "Leita...", + Find: "Leita", + Reset: "Endursetja", + odata : ['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'], + groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], + matchText: " match", + rulesText: " rules" + }, + edit : { + addCaption: "Add Record", + editCaption: "Edit Record", + bSubmit: "Vista", + bCancel: "Hætta við", + bClose: "Loka", + saveData: "Data has been changed! Save changes?", + bYes : "Yes", + bNo : "No", + bExit : "Cancel", + msg: { + required:"Reitur er nauðsynlegur", + number:"Vinsamlega settu inn tölu", + minValue:"gildi verður að vera meira en eða jafnt og ", + maxValue:"gildi verður að vera minna en eða jafnt og ", + email: "er ekki löglegt email", + integer: "Vinsamlega settu inn tölu", + 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: "Eyða", + msg: "Eyða völdum færslum ?", + bSubmit: "Eyða", + bCancel: "Hætta við" + }, + nav : { + edittext: " ", + edittitle: "Breyta færslu", + addtext:" ", + addtitle: "Ný færsla", + deltext: " ", + deltitle: "Eyða færslu", + searchtext: " ", + searchtitle: "Leita", + refreshtext: "", + refreshtitle: "Endurhlaða", + alertcap: "Viðvörun", + alerttext: "Vinsamlega veldu færslu", + viewtext: "", + viewtitle: "View selected row" + }, + col : { + caption: "Sýna / fela dálka", + bSubmit: "Vista", + bCancel: "Hætta við" + }, + errors : { + errcap : "Villa", + nourl : "Vantar slóð", + norecords: "Engar færslur valdar", + 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: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-it.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-it.js new file mode 100644 index 00000000000..fec00456e51 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-it.js @@ -0,0 +1 @@ +(function(a){a.jgrid={defaults:{recordtext:"Visualizzati {0} - {1} di {2}",emptyrecords:"Nessun record da visualizzare",loadtext:"Caricamento...",pgtext:"Pagina {0} di {1}"},search:{caption:"Ricerca...",Find:"Cerca",Reset:"Pulisci",odata:["uguale","diverso","minore","minore o uguale","maggiore","maggiore o uguale","inizia con","non inizia con","in","non in","termina con","non termina con","contiene","non contiene"],groupOps:[{op:"AND",text:"tutto"},{op:"OR",text:"almeno uno"}],matchText:" corrisponde",rulesText:" regole"},edit:{addCaption:"Aggiungi Record",editCaption:"Modifica Record",bSubmit:"Invia",bCancel:"Chiudi",bClose:"Chiudi",saveData:"Alcuni dati modificati! Salvare i cambiamenti?",bYes:"Si",bNo:"No",bExit:"Esci",msg:{required:"Campo richiesto",number:"Per favore, inserisci un valore valido",minValue:"il valore deve essere maggiore o uguale a ",maxValue:"il valore deve essere minore o uguale a",email:"e-mail non corretta",integer:"Per favore, inserisci un numero intero valido",date:"Per favore, inserisci una data valida",url:"URL non valido. Prefisso richiesto ('http://' or 'https://')",nodefined:" non è definito!",novalue:" valore di ritorno richiesto!",customarray:"La function custon deve tornare un array!",customfcheck:"La function custom deve esistere per il custom checking!"}},view:{caption:"Visualizzazione Record",bClose:"Chiudi"},del:{caption:"Cancella",msg:"Cancellare record selezionato/i?",bSubmit:"Cancella",bCancel:"Annulla"},nav:{edittext:" ",edittitle:"Modifica record selezionato",addtext:" ",addtitle:"Aggiungi nuovo record",deltext:" ",deltitle:"Cancella record selezionato",searchtext:" ",searchtitle:"Ricerca record",refreshtext:"",refreshtitle:"Aggiorna griglia",alertcap:"Attenzione",alerttext:"Per favore, seleziona un record",viewtext:"",viewtitle:"Visualizza riga selezionata"},col:{caption:"Mostra/Nascondi Colonne",bSubmit:"Invia",bCancel:"Annulla"},errors:{errcap:"Errore",nourl:"Url non settata",norecords:"Nessun record da elaborare",model:"Lunghezza di 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:["Dom","Lun","Mar","Mer","Gio","Ven","Sab","Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],monthNames:["Gen","Feb","Mar","Apr","Mag","Gui","Lug","Ago","Set","Ott","Nov","Dic","Genneio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Movembre","Dicembre"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?["st","nd","rd","th"][Math.min((b-1)%10,3)]:"th"},srcformat:"Y-m-d",newformat:"d/m/Y",masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:"",showAction:"",target:"",checkbox:{disabled:true},idName:"id"}}})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ja.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ja.js new file mode 100644 index 00000000000..8a9961d8ca4 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ja.js @@ -0,0 +1,155 @@ +;(function($){ +/** + * jqGrid Japanese Translation + * OKADA Yoshitada okada.dev@sth.jp + * 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 +**/ +$.jgrid = { + defaults : { + recordtext: "{2} \u4EF6\u4E2D {0} - {1} \u3092\u8868\u793A ", + emptyrecords: "\u8868\u793A\u3059\u308B\u30EC\u30B3\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093", + loadtext: "\u8aad\u307f\u8fbc\u307f\u4e2d...", + pgtext : "{1} \u30DA\u30FC\u30B8\u4E2D {0} \u30DA\u30FC\u30B8\u76EE " + }, + search : { + caption: "\u691c\u7d22...", + Find: "\u691c\u7d22", + Reset: "\u30ea\u30bb\u30c3\u30c8", + odata: ["\u6B21\u306B\u7B49\u3057\u3044", "\u6B21\u306B\u7B49\u3057\u304F\u306A\u3044", + "\u6B21\u3088\u308A\u5C0F\u3055\u3044", "\u6B21\u306B\u7B49\u3057\u3044\u304B\u5C0F\u3055\u3044", + "\u6B21\u3088\u308A\u5927\u304D\u3044", "\u6B21\u306B\u7B49\u3057\u3044\u304B\u5927\u304D\u3044", + "\u6B21\u3067\u59CB\u307E\u308B", "\u6B21\u3067\u59CB\u307E\u3089\u306A\u3044", + "\u6B21\u306B\u542B\u307E\u308C\u308B", "\u6B21\u306B\u542B\u307E\u308C\u306A\u3044", + "\u6B21\u3067\u7D42\u308F\u308B", "\u6B21\u3067\u7D42\u308F\u3089\u306A\u3044", + "\u6B21\u3092\u542B\u3080", "\u6B21\u3092\u542B\u307E\u306A\u3044"], + groupOps: [{ + op: "AND", + text: "\u3059\u3079\u3066\u306E" + }, + { + op: "OR", + text: "\u3044\u305A\u308C\u304B\u306E" + }], + matchText: " \u6B21\u306E", + rulesText: " \u6761\u4EF6\u3092\u6E80\u305F\u3059" + }, + edit : { + addCaption: "\u30ec\u30b3\u30fc\u30c9\u8ffd\u52a0", + editCaption: "\u30ec\u30b3\u30fc\u30c9\u7de8\u96c6", + bSubmit: "\u9001\u4fe1", + bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb", + bClose: "\u9589\u3058\u308b", + saveData: "\u30C7\u30FC\u30BF\u304C\u5909\u66F4\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F", + bYes: "\u306F\u3044", + bNo: "\u3044\u3044\u3048", + bExit: "\u30AD\u30E3\u30F3\u30BB\u30EB", + msg: { + required:"\u3053\u306e\u9805\u76ee\u306f\u5fc5\u9808\u3067\u3059\u3002", + number:"\u6b63\u3057\u3044\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002", + minValue:"\u6b21\u306e\u5024\u4ee5\u4e0a\u3067\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002", + maxValue:"\u6b21\u306e\u5024\u4ee5\u4e0b\u3067\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002", + email: "e-mail\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002", + integer: "\u6b63\u3057\u3044\u6574\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002", + date: "\u6b63\u3057\u3044\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002", + url: "\u306F\u6709\u52B9\u306AURL\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\20\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002 ('http://' \u307E\u305F\u306F 'https://')", + nodefined: " \u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093", + novalue: " \u623B\u308A\u5024\u304C\u5FC5\u8981\u3067\u3059", + customarray: "\u30AB\u30B9\u30BF\u30E0\u95A2\u6570\u306F\u914D\u5217\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059", + customfcheck: "\u30AB\u30B9\u30BF\u30E0\u691C\u8A3C\u306B\u306F\u30AB\u30B9\u30BF\u30E0\u95A2\u6570\u304C\u5FC5\u8981\u3067\u3059" + } + }, + view : { + caption: "\u30EC\u30B3\u30FC\u30C9\u3092\u8868\u793A", + bClose: "\u9589\u3058\u308B" + }, + del : { + caption: "\u524a\u9664", + msg: "\u9078\u629e\u3057\u305f\u30ec\u30b3\u30fc\u30c9\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f", + bSubmit: "\u524a\u9664", + bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb" + }, + nav : { + edittext: " ", + edittitle: "\u9078\u629e\u3057\u305f\u884c\u3092\u7de8\u96c6", + addtext:" ", + addtitle: "\u884c\u3092\u65b0\u898f\u8ffd\u52a0", + deltext: " ", + deltitle: "\u9078\u629e\u3057\u305f\u884c\u3092\u524a\u9664", + searchtext: " ", + searchtitle: "\u30ec\u30b3\u30fc\u30c9\u691c\u7d22", + refreshtext: "", + refreshtitle: "\u30b0\u30ea\u30c3\u30c9\u3092\u30ea\u30ed\u30fc\u30c9", + alertcap: "\u8b66\u544a", + alerttext: "\u884c\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\u3002", + viewtext: "", + viewtitle: "\u9078\u629E\u3057\u305F\u884C\u3092\u8868\u793A" + }, + col : { + caption: "\u5217\u3092\u8868\u793a\uff0f\u96a0\u3059", + bSubmit: "\u9001\u4fe1", + bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb" + }, + errors : { + errcap : "\u30a8\u30e9\u30fc", + nourl : "URL\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002", + norecords: "\u51e6\u7406\u5bfe\u8c61\u306e\u30ec\u30b3\u30fc\u30c9\u304c\u3042\u308a\u307e\u305b\u3093\u3002", + model : "colNames\u306e\u9577\u3055\u304ccolModel\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002" + }, + formatter : { + integer: { + thousandsSeparator: ",", + defaultValue: '0' + }, + number: { + decimalSeparator: ".", + thousandsSeparator: ",", + decimalPlaces: 2, + defaultValue: '0.00' + }, + currency: { + decimalSeparator: ".", + thousandsSeparator: ",", + decimalPlaces: 0, + prefix: "", + suffix: "", + defaultValue: '0' + }, + date : { + dayNames: [ + "\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f", + "\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f" + ], + monthNames: [ + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", + "1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708" + ], + AmPm : ["am","pm","AM","PM"], + S: "\u756a\u76ee", + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-nl.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-nl.js new file mode 100644 index 00000000000..a6227acf5c9 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-nl.js @@ -0,0 +1,149 @@ +(function(a) { + a.jgrid = + { + defaults: + { + recordtext: "regels {0} - {1} van {2}", + emptyrecords: "Geen data gevonden.", + loadtext: "laden...", + pgtext: "pagina {0} van {1}" + }, + search: + { + caption: "Zoeken...", + Find: "Zoek", + Reset: "Herstellen", + odata: ["gelijk aan", "niet gelijk aan", "kleiner dan", "kleiner dan of gelijk aan", "groter dan", "groter dan of gelijk aan", "begint met", "begint niet met", "is in", "is niet in", "eindigd met", "eindigd niet met", "bevat", "bevat niet"], + groupOps: [{ op: "AND", text: "alle" }, { op: "OR", text: "een van de"}], + matchText: " match", + rulesText: " regels" + }, + edit: + { + addCaption: "Nieuw", + editCaption: "Bewerken", + bSubmit: "Opslaan", + bCancel: "Annuleren", + bClose: "Sluiten", + saveData: "Er is data aangepast! Wijzigingen opslaan?", + bYes: "Ja", + bNo: "Nee", + bExit: "Sluiten", + msg: + { + required: "Veld is verplicht", + number: "Voer a.u.b. geldig nummer in", + minValue: "Waarde moet groter of gelijk zijn aan ", + maxValue: "Waarde moet kleiner of gelijks zijn aan", + email: "is geen geldig e-mailadres", + integer: "Voer a.u.b. een geldig getal in", + date: "Voer a.u.b. een geldige waarde in", + url: "is geen geldige URL. Prefix is verplicht ('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: "Tonen", + bClose: "Sluiten" + }, + del: + { + caption: "Verwijderen", + msg: "Verwijder geselecteerde regel(s)?", + bSubmit: "Verwijderen", + bCancel: "Annuleren" + }, + nav: + { + edittext: "", + edittitle: "Bewerken", + addtext: "", + addtitle: "Nieuw", + deltext: "", + deltitle: "Verwijderen", + searchtext: "", + searchtitle: "Zoeken", + refreshtext: "", + refreshtitle: "Vernieuwen", + alertcap: "Waarschuwing", + alerttext: "Selecteer a.u.b. een regel", + viewtext: "", + viewtitle: "Openen" + }, + col: + { + caption: "Tonen/verbergen kolommen", + bSubmit: "OK", + bCancel: "Annuleren" + }, + errors: + { + errcap: "Fout", + nourl: "Er is geen URL gedefinieerd", + norecords: "Geen data om te verwerken", + model: "Lengte van 'colNames' is niet gelijk aan 'colModel'!" + }, + formatter: + { + integer: + { + thousandsSeparator: ".", + defaultValue: "0" + }, + number: + { + decimalSeparator: ",", + thousandsSeparator: ".", + decimalPlaces: 2, + defaultValue: "0.00" + }, + currency: + { + decimalSeparator: ",", + thousandsSeparator: ".", + decimalPlaces: 2, + prefix: "EUR ", + suffix: "", + defaultValue: "0.00" + }, + date: + { + dayNames: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"], + monthNames: ["Jan", "Feb", "Maa", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "October", "November", "December"], + AmPm: ["am", "pm", "AM", "PM"], + S: function(b) { + return b < 11 || b > 13 ? ["st", "nd", "rd", "th"][Math.min((b - 1) % 10, 3)] : "th" + }, + srcformat: "Y-m-d", + newformat: "d/m/Y", + masks: + { + ISO8601Long: "Y-m-d H:i:s", + ISO8601Short: "Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l d F Y G:i:s", + MonthDay: "d F", + ShortTime: "G:i", + LongTime: "G:i:s", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit: false + }, + baseLinkUrl: "", + showAction: "", + target: "", + checkbox: + { + disabled: true + }, + idName: "id" + } + } +})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-no.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-no.js new file mode 100644 index 00000000000..a70ef6d790a --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-no.js @@ -0,0 +1 @@ +(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Rad {0} - {1}, totalt {2}",loadtext:"Laster...",pgtext:"Side {0} av {1}"};a.jgrid.search={caption:"Søk...",Find:"Finn",Reset:"Nullstill",odata:["lik","forskjellig fra","mindre enn","mindre eller lik","større enn"," større eller lik","starter med","slutter med","inneholder"]};a.jgrid.edit={addCaption:"Ny rad",editCaption:"Rediger",bSubmit:"Send",bCancel:"Avbryt",bClose:"Lukk",processData:"Laster...",msg:{required:"Felt er obligatorisk",number:"Legg inn et gyldig tall",minValue:"verdi må være større enn eller lik",maxValue:"verdi må være mindre enn eller lik",email:"er ikke en gyldig e-post adresse",integer:"Legg inn et gyldig heltall",date:"Legg inn en gyldig dato",url:"er ikke en gyldig URL. Prefiks påkrevd ('http://' eller 'https://')",nodefined:" er ikke definert!",novalue:" returverdi er påkrevd!",customarray:"Tilpasset funksjon må returnere en tabell!",customfcheck:"Tilpasset funksjon må eksistere!"}};a.jgrid.view={caption:"Åpne post",bClose:"Lukk"};a.jgrid.del={caption:"Slett",msg:"Slett valgte rad(er)?",bSubmit:"Slett",bCancel:"Avbryt",processData:"Behandler..."};a.jgrid.nav={edittext:" ",edittitle:"Rediger valgte rad(er)",addtext:" ",addtitle:"Legg til ny rad",deltext:" ",deltitle:"Slett valgte rad(er)",searchtext:" ",searchtitle:"Søk",refreshtext:"",refreshtitle:"Oppdater tabell",alertcap:"Advarsel",alerttext:"Velg rad",viewtext:" ",viewtitle:"Åpne valgt rad"};a.jgrid.col={caption:"Vis/skjul kolonner",bSubmit:"Utfør",bCancel:"Avbryt"};a.jgrid.errors={errcap:"Feil",nourl:"Ingen url er satt",norecords:"Ingen poster å behandle",model:"colNames og colModel har forskjellig lengde!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["sø.","ma.","ti.","on.","to.","fr.","lø.","Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],monthNames:["jan.","feb.","mars","april","mai","juni","juli","aug.","sep.","okt.","nov.","des.","januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],AmPm:["","","",""],S:function(b){return"."},srcformat:"Y-m-d H:i:s",newformat:"Y-m-d H:i:s",masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"j.n.Y",LongDate:"l j. F Y",FullDateTime:"l j. F Y kl. G.i.s",MonthDay:"j. F",ShortTime:"H:i",LongTime:"H:i:s",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F Y"},reformatAfterEdit:false},baseLinkUrl:"",showAction:"show",addParam:"",checkbox:{disabled:true}}})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-pl.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-pl.js new file mode 100644 index 00000000000..53757b99c87 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-pl.js @@ -0,0 +1,127 @@ +;(function($){ +/** + * jqGrid Polish Translation + * Åukasz Schab + * http://FreeTree.pl + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "Pokaż {0} - {1} z {2}", + emptyrecords: "Brak rekordów do pokazania", + loadtext: "\u0142adowanie...", + pgtext : "Strona {0} z {1}" + }, + search : { + caption: "Wyszukiwanie...", + Find: "Szukaj", + Reset: "Czyść", + odata : ['dok\u0142adnie', 'różne od', 'mniejsze od', 'mniejsze lub równe','wiÄ™ksze od','wiÄ™ksze lub równe', 'zaczyna siÄ™ od','nie zaczyna siÄ™ od','zawiera','nie zawiera','koÅ„czy siÄ™ na','nie koÅ„czy siÄ™ na','zawiera','nie zawiera'], + groupOps: [ { op: "ORAZ", text: "wszystkie" }, { op: "LUB", text: "każdy" } ], + matchText: " pasuje", + rulesText: " regu\u0142y" + }, + edit : { + addCaption: "Dodaj rekord", + editCaption: "Edytuj rekord", + bSubmit: "Zapisz", + bCancel: "Anuluj", + bClose: "Zamknij", + saveData: "Dane zosta\u0142y zmienione! Zapisać zmiany?", + bYes : "Tak", + bNo : "Nie", + bExit : "Anuluj", + msg: { + required:"Pole jest wymagane", + number:"ProszÄ™ wpisać poprawnÄ… liczbÄ™", + minValue:"wartość musi być wiÄ™ksza lub równa", + maxValue:"wartość musi być mniejsza od", + email: "nie jest adresem e-mail", + integer: "ProszÄ™ wpisać poprawnÄ… liczbÄ™", + date: "ProszÄ™ podaj poprawnÄ… datÄ™", + url: "jest niew\u0142aÅ›ciwym adresem URL. PamiÄ™taj o prefiksie ('http://' lub '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: "Pokaż rekord", + bClose: "Zamknij" + }, + del : { + caption: "Usuwanie", + msg: "Czy usunąć wybrany rekord(y)?", + bSubmit: "UsuÅ„", + bCancel: "Anuluj" + }, + nav : { + edittext: " ", + edittitle: "Edytuj wybrany wiersz", + addtext:" ", + addtitle: "Dodaj nowy wiersz", + deltext: " ", + deltitle: "UsuÅ„ wybrany wiersz", + searchtext: " ", + searchtitle: "Wyszukaj rekord", + refreshtext: "", + refreshtitle: "Prze\u0142aduj", + alertcap: "Uwaga", + alerttext: "ProszÄ™ wybrać wiersz", + viewtext: "", + viewtitle: "View selected row" + }, + col : { + caption: "Pokaż/Ukryj kolumny", + bSubmit: "Zatwierdź", + bCancel: "Anuluj" + }, + errors : { + errcap : "B\u0142Ä…d", + nourl : "Brak adresu url", + norecords: "Brak danych", + model : "D\u0142ugość 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: [ + "Nie", "Pon", "Wt", "Åšr", "Cz", "Pi", "So", + "Niedziela", "Poniedzia\u0142ek", "Wtorek", "Åšroda", "Czwartek", "PiÄ…tek", "Sobota" + ], + monthNames: [ + "Sty", "Lu", "Mar", "Kwie", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru", + "StyczeÅ„", "Luty", "Marzec", "KwiecieÅ„", "Maj", "Czerwiec", "Lipiec", "SierpieÅ„", "WrzesieÅ„", "Październik", "Listopad", "GrudzieÅ„" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['', '', '', ''][Math.min((j - 1) % 10, 3)] : ''}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-pt-br.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-pt-br.js new file mode 100644 index 00000000000..897f5735b08 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-pt-br.js @@ -0,0 +1,127 @@ +;(function($){ +/** + * jqGrid Brazilian-Portuguese Translation + * Sergio Righi sergio.righi@gmail.com + * http://curve.com.br + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "Ver {0} - {1} of {2}", + emptyrecords: "Nenhum registro para visualizar", + loadtext: "Carregando...", + pgtext : "Página {0} de {1}" + }, + search : { + caption: "Procurar...", + Find: "Procurar", + Reset: "Resetar", + odata : ['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'], + groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], + matchText: " iguala", + rulesText: " regras" + }, + edit : { + addCaption: "Incluir", + editCaption: "Alterar", + bSubmit: "Enviar", + bCancel: "Cancelar", + bClose: "Fechar", + saveData: "Os dados foram alterados! Salvar alterações?", + bYes : "Sim", + bNo : "Não", + bExit : "Cancelar", + msg: { + required:"Campo obrigatório", + number:"Por favor, informe um número válido", + minValue:"valor deve ser igual ou maior que ", + maxValue:"valor deve ser menor ou igual a", + email: "este e-mail não é válido", + integer: "Por favor, informe um valor inteiro", + date: "Por favor, informe uma data válida", + url: "não é uma URL válida. Prefixo obrigatório ('http://' or 'https://')", + nodefined : " não está definido!", + novalue : " um valor de retorno é obrigatório!", + customarray : "Função customizada deve retornar um array!", + customfcheck : "Função customizada deve estar presente em caso de validação customizada!" + } + }, + view : { + caption: "Ver Registro", + bClose: "Fechar" + }, + del : { + caption: "Apagar", + msg: "Apagar registros selecionado(s)?", + bSubmit: "Apagar", + bCancel: "Cancelar" + }, + nav : { + edittext: " ", + edittitle: "Alterar registro selecionado", + addtext:" ", + addtitle: "Incluir novo registro", + deltext: " ", + deltitle: "Apagar registro selecionado", + searchtext: " ", + searchtitle: "Procurar registros", + refreshtext: "", + refreshtitle: "Recarrgando Tabela", + alertcap: "Aviso", + alerttext: "Por favor, selecione um registro", + viewtext: "", + viewtitle: "Ver linha selecionada" + }, + col : { + caption: "Mostrar/Esconder Colunas", + bSubmit: "Enviar", + bCancel: "Cancelar" + }, + errors : { + errcap : "Erro", + nourl : "Nenhuma URL defenida", + norecords: "Sem registros para exibir", + model : "Comprimento de colNames <> colModel!" + }, + formatter : { + integer : {thousandsSeparator: " ", defaultValue: '0'}, + number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, + currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "R$ ", suffix:"", defaultValue: '0,00'}, + date : { + dayNames: [ + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", + "Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado" + ], + monthNames: [ + "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez", + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['º', 'º', 'º', 'º'][Math.min((j - 1) % 10, 3)] : 'º'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-pt.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-pt.js new file mode 100644 index 00000000000..c150c228447 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-pt.js @@ -0,0 +1,125 @@ +;(function($){ +/** + * jqGrid Portuguese Translation +* Tradução da jqGrid em Portugues por Frederico Carvalho, http://www.eyeviewdesign.pt + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "View {0} - {1} of {2}", + emptyrecords: "No records to view", + loadtext: "A carregar...", + pgtext : "Page {0} of {1}" + }, + search : { + caption: "Busca...", + Find: "Procurar", + Reset: "Limpar", + odata : ['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'], + groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], + matchText: " match", + rulesText: " rules" + }, + edit : { + addCaption: "Adicionar Registo", + editCaption: "Modificar Registo", + bSubmit: "Submeter", + bCancel: "Cancelar", + bClose: "Fechar", + saveData: "Data has been changed! Save changes?", + bYes : "Yes", + bNo : "No", + bExit : "Cancel", + msg: { + required:"Campo obrigatório", + number:"Por favor, introduza um numero", + minValue:"O valor deve ser maior ou igual que", + maxValue:"O valor deve ser menor ou igual a", + email: "Não é um endereço de email válido", + integer: "Por favor, introduza um numero inteiro", + 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: "Eliminar", + msg: "Deseja eliminar o(s) registo(s) seleccionado(s)?", + bSubmit: "Eliminar", + bCancel: "Cancelar" + }, + nav : { + edittext: " ", + edittitle: "Modificar registo seleccionado", + addtext:" ", + addtitle: "Adicionar novo registo", + deltext: " ", + deltitle: "Eliminar registo seleccionado", + searchtext: " ", + searchtitle: "Procurar", + refreshtext: "", + refreshtitle: "Actualizar", + alertcap: "Aviso", + alerttext: "Por favor, seleccione um registo", + viewtext: "", + viewtitle: "View selected row" + }, + col : { + caption: "Mostrar/Ocultar Colunas", + bSubmit: "Enviar", + bCancel: "Cancelar" + }, + errors : { + errcap : "Erro", + nourl : "Não especificou um url", + norecords: "Não existem dados para processar", + model : "Tamanho do 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: [ + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab", + "Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado" + ], + monthNames: [ + "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez", + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['º', 'º', 'º', 'º'][Math.min((j - 1) % 10, 3)] : 'º'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ro.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ro.js new file mode 100644 index 00000000000..eb5ae836401 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ro.js @@ -0,0 +1,139 @@ +;(function($){ +/** + * jqGrid Romanian Translation + * Alexandru Emil Lupu contact@alecslupu.ro + * http://www.alecslupu.ro/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "Vizualizare {0} - {1} din {2}", + emptyrecords: "Nu există înregistrări de vizualizat", + loadtext: "ÃŽncărcare...", + pgtext : "Pagina {0} din {1}" + }, + search : { + caption: "Caută...", + Find: "Caută", + Reset: "Resetare", + odata : ['egal', 'diferit', 'mai mic', 'mai mic sau egal','mai mare','mai mare sau egal', 'începe cu','nu începe cu','se găseÈ™te în','nu se găseÈ™te în','se termină cu','nu se termină cu','conÈ›ine',''], + groupOps: [ { op: "AND", text: "toate" }, { op: "OR", text: "oricare" } ], + matchText: " găsite", + rulesText: " reguli" + }, + edit : { + addCaption: "Adăugare înregistrare", + editCaption: "Modificare înregistrare", + bSubmit: "Salvează", + bCancel: "Anulare", + bClose: "ÃŽnchide", + saveData: "InformaÈ›iile au fost modificate! SalvaÈ›i modificările?", + bYes : "Da", + bNo : "Nu", + bExit : "Anulare", + msg: { + required:"Câmpul este obligatoriu", + number:"Vă rugăm introduceÈ›i un număr valid", + minValue:"valoarea trebuie sa fie mai mare sau egală cu", + maxValue:"valoarea trebuie sa fie mai mică sau egală cu", + email: "nu este o adresă de e-mail validă", + integer: "Vă rugăm introduceÈ›i un număr valid", + date: "Vă rugăm să introduceÈ›i o dată validă", + url: "Nu este un URL valid. Prefixul este necesar('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: "Vizualizare înregistrare", + bClose: "ÃŽnchidere" + }, + del : { + caption: "Ștegere", + msg: "ȘtergeÈ›i înregistrarea (înregistrările) selectate?", + bSubmit: "Șterge", + bCancel: "Anulare" + }, + nav : { + edittext: "", + edittitle: "Modifică rândul selectat", + addtext:"", + addtitle: "Adaugă rând nou", + deltext: "", + deltitle: "Șterge rândul selectat", + searchtext: "", + searchtitle: "Căutare înregistrări", + refreshtext: "", + refreshtitle: "Reîncarcare Grid", + alertcap: "Avertisment", + alerttext: "Vă rugăm să selectaÈ›i un rând", + viewtext: "", + viewtitle: "Vizualizează rândul selectat" + }, + col : { + caption: "Arată/Ascunde coloanele", + bSubmit: "Salvează", + bCancel: "Anulare" + }, + errors : { + errcap : "Eroare", + nourl : "Niciun url nu este setat", + norecords: "Nu sunt înregistrări de procesat", + model : "Lungimea 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: [ + "Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm", + "Duminică", "Luni", "MarÈ›i", "Miercuri", "Joi", "Vineri", "Sâmbătă" + ], + monthNames: [ + "Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Noi", "Dec", + "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie" + ], + AmPm : ["am","pm","AM","PM"], + /* + Here is a problem in romanian: + M / F + 1st = primul / prima + 2nd = Al doilea / A doua + 3rd = Al treilea / A treia + 4th = Al patrulea/ A patra + 5th = Al cincilea / A cincea + 6th = Al È™aselea / A È™asea + 7th = Al È™aptelea / A È™aptea + .... + */ + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ru.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ru.js new file mode 100644 index 00000000000..357b0ff1aee --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ru.js @@ -0,0 +1,127 @@ +;(function($){ +/** + * jqGrid Russian Translation v1.0 02.07.2009 (based on translation by Alexey Kanaev v1.1 21.01.2009, http://softcore.com.ru) + * Sergey Dyagovchenko + * http://d.sumy.ua + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "ПроÑмотр {0} - {1} из {2}", + emptyrecords: "Ðет запиÑей Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра", + loadtext: "Загрузка...", + pgtext : "Стр. {0} из {1}" + }, + search : { + caption: "ПоиÑк...", + Find: "Ðайти", + Reset: "СброÑ", + odata : ['равно', 'не равно', 'меньше', 'меньше или равно','больше','больше или равно', 'начинаетÑÑ Ñ','не начинаетÑÑ Ñ','находитÑÑ Ð²','не находитÑÑ Ð²','заканчиваетÑÑ Ð½Ð°','не заканчиваетÑÑ Ð½Ð°','Ñодержит','не Ñодержит'], + groupOps: [ { op: "AND", text: "вÑе" }, { op: "OR", text: "любой" } ], + matchText: " Ñовпадает", + rulesText: " правила" + }, + edit : { + addCaption: "Добавить запиÑÑŒ", + editCaption: "Редактировать запиÑÑŒ", + bSubmit: "Сохранить", + bCancel: "Отмена", + bClose: "Закрыть", + saveData: "Данные были измененны! Сохранить изменениÑ?", + bYes : "Да", + bNo : "Ðет", + bExit : "Отмена", + msg: { + required:"Поле ÑвлÑетÑÑ Ð¾Ð±Ñзательным", + number:"ПожалуйÑта, введите правильное чиÑло", + minValue:"значение должно быть больше либо равно", + maxValue:"значение должно быть меньше либо равно", + email: "некорректное значение e-mail", + integer: "ПожалуйÑта, введите целое чиÑло", + date: "ПожалуйÑта, введите правильную дату", + url: "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка. Ðеобходимо ввеÑти Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ ('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: "ПроÑмотр запиÑи", + bClose: "Закрыть" + }, + del : { + caption: "Удалить", + msg: "Удалить выбранную запиÑÑŒ(и)?", + bSubmit: "Удалить", + bCancel: "Отмена" + }, + nav : { + edittext: " ", + edittitle: "Редактировать выбранную запиÑÑŒ", + addtext:" ", + addtitle: "Добавить новую запиÑÑŒ", + deltext: " ", + deltitle: "Удалить выбранную запиÑÑŒ", + searchtext: " ", + searchtitle: "Ðайти запиÑи", + refreshtext: "", + refreshtitle: "Обновить таблицу", + alertcap: "Внимание", + alerttext: "ПожалуйÑта, выберите запиÑÑŒ", + viewtext: "", + viewtitle: "ПроÑмотреть выбранную запиÑÑŒ" + }, + col : { + caption: "Показать/Ñкрыть Ñтолбцы", + bSubmit: "Сохранить", + bCancel: "Отмена" + }, + errors : { + errcap : "Ошибка", + nourl : "URL не уÑтановлен", + norecords: "Ðет запиÑей Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸", + model : "ЧиÑло полей не ÑоответÑтвует чиÑлу Ñтолбцов таблицы!" + }, + 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: [ + "Ð’Ñ", "Пн", "Ð’Ñ‚", "Ср", "Чт", "Пт", "Сб", + "ВоÑкреÑение", "Понедельник", "Вторник", "Среда", "Четверг", "ПÑтница", "Суббота" + ], + monthNames: [ + "Янв", "Фев", "Мар", "Ðпр", "Май", "Июн", "Июл", "Ðвг", "Сен", "Окт", "ÐоÑ", "Дек", + "Январь", "Февраль", "Март", "Ðпрель", "Май", "Июнь", "Июль", "ÐвгуÑÑ‚", "СентÑбрь", "ОктÑбрь", "ÐоÑбрь", "Декабрь" + ], + 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: 'd.m.Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n.j.Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y G:i:s", + MonthDay: "F d", + ShortTime: "G:i", + LongTime: "G:i:s", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-sk.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-sk.js new file mode 100644 index 00000000000..605382b19ef --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-sk.js @@ -0,0 +1,127 @@ +;(function($){ +/** + * jqGrid Slovak Translation + * Milan Cibulka + * 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 +**/ +$.jgrid = { + defaults : { + recordtext: "Zobrazených {0} - {1} z {2} záznamov", + emptyrecords: "Neboli nájdené žiadne záznamy", + loadtext: "NaÄítám...", + pgtext : "Strana {0} z {1}" + }, + search : { + caption: "Vyhľadávam...", + Find: "HľadaÅ¥", + Reset: "Reset", + odata : ['rovná sa', 'nerovná sa', 'menÅ¡ie', 'menÅ¡ie alebo rovnajúce sa','väÄÅ¡ie', 'väÄÅ¡ie alebo rovnajúce sa', 'zaÄína s', 'nezaÄína s', 'je v', 'nie je v', 'konÄí s', 'nekonÄí s', 'obahuje', 'neobsahuje'], + groupOps: [ { op: "AND", text: "vÅ¡etkých" }, { op: "OR", text: "niektorého z" } ], + matchText: " hľadaÅ¥ podla", + rulesText: " pravidiel" + }, + edit : { + addCaption: "PridaÅ¥ záznam", + editCaption: "Editácia záznamov", + bSubmit: "UložiÅ¥", + bCancel: "Storno", + bClose: "ZavrieÅ¥", + saveData: "Údaje boli zmenené! UložiÅ¥ zmeny?", + bYes : "Ano", + bNo : "Nie", + bExit : "ZruÅ¡iÅ¥", + msg: { + required:"Pole je požadované", + number:"Prosím, vložte valídne Äíslo", + minValue:"hodnota musí býť väÄÅ¡ia ako alebo rovná ", + maxValue:"hodnota musí býť menÅ¡ia ako alebo rovná ", + email: "nie je valídny e-mail", + integer: "Prosím, vložte celé Äíslo", + date: "Prosím, vložte valídny dátum", + url: "nie je platnou URL. Požadovaný prefix ('http://' alebo 'https://')", + nodefined : " nie je definovaný!", + novalue : " je vyžadovaná návratová hodnota!", + customarray : "Custom function mala vrátiÅ¥ pole!", + customfcheck : "Custom function by mala byÅ¥ prítomná v prípade custom checking!" + } + }, + view : { + caption: "ZobraziÅ¥ záznam", + bClose: "ZavrieÅ¥" + }, + del : { + caption: "ZmazaÅ¥", + msg: "ZmazaÅ¥ vybraný(é) záznam(y)?", + bSubmit: "ZmazaÅ¥", + bCancel: "Storno" + }, + nav : { + edittext: " ", + edittitle: "EditovaÅ¥ vybraný riadok", + addtext:" ", + addtitle: "PridaÅ¥ nový riadek", + deltext: " ", + deltitle: "ZmazaÅ¥ vybraný záznam ", + searchtext: " ", + searchtitle: "NájsÅ¥ záznamy", + refreshtext: "", + refreshtitle: "ObnoviÅ¥ tabuľku", + alertcap: "Varovanie", + alerttext: "Prosím, vyberte riadok", + viewtext: "", + viewtitle: "ZobraziÅ¥ vybraný riadok" + }, + col : { + caption: "Zobrazit/Skrýť stĺpce", + bSubmit: "UložiÅ¥", + bCancel: "Storno" + }, + errors : { + errcap : "Chyba", + nourl : "Nie je nastavená url", + norecords: "Žiadne záznamy k spracovaniu", + model : "Dĺžka 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: [ + "Ne", "Po", "Ut", "St", "Å t", "Pi", "So", + "Nedela", "Pondelok", "Utorok", "Streda", "Å tvrtok", "Piatek", "Sobota" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec", + "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December" + ], + AmPm : ["do","od","DO","OD"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-sr.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-sr.js new file mode 100644 index 00000000000..305b17e2b53 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-sr.js @@ -0,0 +1,128 @@ +;(function($){ +/** + * jqGrid Serbian Translation + * ÐлекÑандар Миловац(Aleksandar Milovac) aleksandar.milovac@gmail.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 +**/ +$.jgrid = { + defaults : { + recordtext: "Преглед {0} - {1} од {2}", + emptyrecords: "Ðе поÑтоји ниједан запиÑ", + loadtext: "Учитавање...", + pgtext : "Страна {0} од {1}" + }, + search : { + caption: "Тражење...", + Find: "Тражи", + Reset: "РеÑетуј", + odata : ['једнако', 'није једнако', 'мање', 'мање или једнако','веће','веће или једнако', 'почиње Ñа','не почиње Ñа','је у','није у','завршава Ñа','не завршава Ñа','Ñадржи','не Ñадржи'], + groupOps: [ { op: "И", text: "Ñви" }, { op: "ИЛИ", text: "Ñваки" } ], + matchText: " match", + rulesText: " правила" + }, + edit : { + addCaption: "Додај запиÑ", + editCaption: "Измени запиÑ", + bSubmit: "Пошаљи", + bCancel: "ОдуÑтани", + bClose: "Затвори", + saveData: "Податак је измењен! Сачувај измене?", + bYes : "Да", + bNo : "Ðе", + bExit : "ОдуÑтани", + msg: { + required:"Поље је обавезно", + number:"Молим, унеÑите иÑправан број", + minValue:"вредноÑÑ‚ мора бити већа од или једнака Ñа ", + maxValue:"вредноÑÑ‚ мора бити мања од или једнака Ñа", + email: "није иÑправна имејл адреÑа", + integer: "Молим, унеÑите иÑправну целобројну вредноÑÑ‚ ", + date: "Молим, унеÑите иÑправан датум", + url: "није иÑправан УРЛ. Потребан је Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ ('http://' or 'https://')", + nodefined : " није дефиниÑан!", + novalue : " захтевана је повратна вредноÑÑ‚!", + customarray : "Custom function should return array!", + customfcheck : "Custom function should be present in case of custom checking!" + + } + }, + view : { + caption: "Погледај запиÑ", + bClose: "Затвори" + }, + del : { + caption: "Избриши", + msg: "Избриши изабран(е) запиÑ(е)?", + bSubmit: "Ибриши", + bCancel: "Одбаци" + }, + nav : { + edittext: "", + edittitle: "Измени изабрани ред", + addtext:"", + addtitle: "Додај нови ред", + deltext: "", + deltitle: "Избриши изабран ред", + searchtext: "", + searchtitle: "Ðађи запиÑе", + refreshtext: "", + refreshtitle: "Поново учитај податке", + alertcap: "Упозорење", + alerttext: "Молим, изаберите ред", + viewtext: "", + viewtitle: "Погледај изабрани ред" + }, + col : { + caption: "Изабери колоне", + bSubmit: "ОК", + bCancel: "Одбаци" + }, + errors : { + errcap : "Грешка", + nourl : "Ðије поÑтављен URL", + norecords: "Ðема запиÑа за обраду", + model : "Дужина модела 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: [ + "Ðед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб", + "Ðедеља", "Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота" + ], + monthNames: [ + "Јан", "Феб", "Мар", "Ðпр", "Мај", "Јун", "Јул", "Ðвг", "Сеп", "Окт", "Ðов", "Дец", + "Јануар", "Фебруар", "Март", "Ðприл", "Мај", "Јун", "Јул", "ÐвгуÑÑ‚", "Септембар", "Октобар", "Ðовембар", "Децембар" + ], + 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: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-sv.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-sv.js new file mode 100644 index 00000000000..fc9fcf40902 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-sv.js @@ -0,0 +1,127 @@ +;(function($){ +/** + * jqGrid Swedish Translation + * Harald Normann harald.normann@wts.se, harald.normann@gmail.com + * http://www.worldteamsoftware.com + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "Visar {0} - {1} av {2}", + emptyrecords: "Det finns inga poster att visa", + loadtext: "Laddar...", + pgtext : "Sida {0} av {1}" + }, + search : { + caption: "Sök Poster - Ange sökvillkor", + Find: "Sök", + Reset: "Nollställ Villkor", + odata : ['lika', 'ej lika', 'mindre', 'mindre eller lika','större','större eller lika', 'börjar med','börjar inte med','tillhör','tillhör inte','slutar med','slutar inte med','innehÃ¥ller','innehÃ¥ller inte'], + groupOps: [ { op: "AND", text: "alla" }, { op: "OR", text: "eller" } ], + matchText: " träff", + rulesText: " regler" + }, + edit : { + addCaption: "Ny Post", + editCaption: "Redigera Post", + bSubmit: "Spara", + bCancel: "Avbryt", + bClose: "Stäng", + saveData: "Data har ändrats! Spara förändringar?", + bYes : "Ja", + bNo : "Nej", + bExit : "Avbryt", + msg: { + required:"Fältet är obligatoriskt", + number:"Välj korrekt nummer", + minValue:"värdet mÃ¥ste vara större än eller lika med", + maxValue:"värdet mÃ¥ste vara mindre än eller lika med", + email: "är inte korrekt e-post adress", + integer: "Var god ange korrekt heltal", + date: "Var god ange korrekt datum", + url: "är inte en korrekt URL. Prefix mÃ¥ste anges ('http://' or 'https://')", + nodefined : " är inte definierad!", + novalue : " returvärde mÃ¥ste anges!", + customarray : "Custom funktion mÃ¥ste returnera en vektor!", + customfcheck : "Custom funktion mÃ¥ste finnas om Custom kontroll sker!" + } + }, + view : { + caption: "Visa Post", + bClose: "Stäng" + }, + del : { + caption: "Radera", + msg: "Radera markerad(e) post(er)?", + bSubmit: "Radera", + bCancel: "Avbryt" + }, + nav : { + edittext: "", + edittitle: "Redigera markerad rad", + addtext:"", + addtitle: "Skapa ny post", + deltext: "", + deltitle: "Radera markerad rad", + searchtext: "", + searchtitle: "Sök poster", + refreshtext: "", + refreshtitle: "Uppdatera data", + alertcap: "Varning", + alerttext: "Ingen rad är markerad", + viewtext: "", + viewtitle: "Visa markerad rad" + }, + col : { + caption: "Välj Kolumner", + bSubmit: "OK", + bCancel: "Avbryt" + }, + errors : { + errcap : "Fel", + nourl : "URL saknas", + norecords: "Det finns inga poster att bearbeta", + model : "Antal colNames <> colModel!" + }, + formatter : { + integer : {thousandsSeparator: " ", defaultValue: '0'}, + number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, + currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"Kr", defaultValue: '0,00'}, + date : { + dayNames: [ + "Sön", "MÃ¥n", "Tis", "Ons", "Tor", "Fre", "Lör", + "Söndag", "MÃ¥ndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec", + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" + ], + AmPm : ["fm","em","FM","EM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'Y-m-d', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-tr.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-tr.js new file mode 100644 index 00000000000..6ccde274a2b --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-tr.js @@ -0,0 +1,126 @@ +;(function($){ +/** + * jqGrid Turkish Translation + * Erhan GündoÄŸan (erhan@trposta.net) + * http://blog.zakkum.com + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "{0}-{1} listeleniyor. Toplam:{2}", + emptyrecords: "Kayıt bulunamadı", + loadtext: "Yükleniyor...", + pgtext : "{0}/{1}. Sayfa" + }, + search : { + caption: "Arama...", + Find: "Bul", + Reset: "Temizle", + odata : ['eÅŸit', 'eÅŸit deÄŸil', 'daha az', 'daha az veya eÅŸit', 'daha fazla', 'daha fazla veya eÅŸit', 'ile baÅŸlayan', 'ile baÅŸlamayan', 'içinde', 'içinde deÄŸil', 'ile biten', 'ile bitmeyen', 'içeren', 'içermeyen'], + groupOps: [ { op: "VE", text: "tüm" }, { op: "VEYA", text: "herhangi" } ], + matchText: " uyan", + rulesText: " kurallar" + }, + edit : { + addCaption: "Kayıt Ekle", + editCaption: "Kayıt Düzenle", + bSubmit: "Gönder", + bCancel: "Ä°ptal", + bClose: "Kapat", + saveData: "Veriler deÄŸiÅŸti! Kayıt edilsin mi?", + bYes : "Evet", + bNo : "Hayıt", + bExit : "Ä°ptal", + msg: { + required:"Alan gerekli", + number:"Lütfen bir numara giriniz", + minValue:"girilen deÄŸer daha büyük ya da buna eÅŸit olmalıdır", + maxValue:"girilen deÄŸer daha küçük ya da buna eÅŸit olmalıdır", + email: "geçerli bir e-posta adresi deÄŸildir", + integer: "Lütfen bir tamsayı giriniz", + url: "Geçerli bir URL deÄŸil. ('http://' or 'https://') ön eki gerekli.", + 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: "Kayıt Görüntüle", + bClose: "Kapat" + }, + del : { + caption: "Sil", + msg: "Seçilen kayıtlar silinsin mi?", + bSubmit: "Sil", + bCancel: "Ä°ptal" + }, + nav : { + edittext: " ", + edittitle: "Seçili satırı düzenle", + addtext:" ", + addtitle: "Yeni satır ekle", + deltext: " ", + deltitle: "Seçili satırı sil", + searchtext: " ", + searchtitle: "Kayıtları bul", + refreshtext: "", + refreshtitle: "Tabloyu yenile", + alertcap: "Uyarı", + alerttext: "Lütfen bir satır seçiniz", + viewtext: "", + viewtitle: "Seçilen satırı görüntüle" + }, + col : { + caption: "Sütunları göster/gizle", + bSubmit: "Gönder", + bCancel: "Ä°ptal" + }, + errors : { + errcap : "Hata", + nourl : "Bir url yapılandırılmamış", + norecords: "Ä°ÅŸlem yapılacak bir kayıt yok", + model : "colNames uzunluÄŸu <> 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: [ + "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts", + "Pazar", "Pazartesi", "Salı", "ÇarÅŸamba", "PerÅŸembe", "Cuma", "Cumartesi" + ], + monthNames: [ + "Oca", "Åžub", "Mar", "Nis", "May", "Haz", "Tem", "AÄŸu", "Eyl", "Eki", "Kas", "Ara", + "Ocak", "Åžubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "AÄŸustos", "Eylül", "Ekim", "Kasım", "Aralık" + ], + 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: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ua.js b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ua.js new file mode 100644 index 00000000000..ccb085c181d --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/i18n/grid.locale-ua.js @@ -0,0 +1,127 @@ +;(function($){ +/** + * jqGrid Ukrainian Translation v1.0 02.07.2009 + * Sergey Dyagovchenko + * http://d.sumy.ua + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = { + defaults : { + recordtext: "ПереглÑд {0} - {1} з {2}", + emptyrecords: "Ðемає запиÑів Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду", + loadtext: "ЗавантаженнÑ...", + pgtext : "Стор. {0} з {1}" + }, + search : { + caption: "Пошук...", + Find: "Знайти", + Reset: "СкиданнÑ", + odata : ['рівно', 'не рівно', 'менше', 'менше або рівне','більше','більше або рівне', 'починаєтьÑÑ Ð·','не починаєтьÑÑ Ð·','знаходитьÑÑ Ð²','не знаходитьÑÑ Ð²','закінчуєтьÑÑ Ð½Ð°','не закінчуєтьÑÑ Ð½Ð°','міÑтить','не міÑтить'], + groupOps: [ { op: "AND", text: "вÑе" }, { op: "OR", text: "будь-Ñкий" } ], + matchText: " збігаєтьÑÑ", + rulesText: " правила" + }, + edit : { + addCaption: "Додати запиÑ", + editCaption: "Змінити запиÑ", + bSubmit: "Зберегти", + bCancel: "Відміна", + bClose: "Закрити", + saveData: "До данних були внеÑені зміни! Зберегти зміни?", + bYes : "Так", + bNo : "ÐÑ–", + bExit : "Відміна", + msg: { + required:"Поле Ñ” обов'Ñзковим", + number:"Будь лаÑка, введіть правильне чиÑло", + minValue:"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ðµ бути більше або дорівнює", + maxValue:"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð¾ бути менше або дорівнює", + email: "некоректна адреÑа електронної пошти", + integer: "Будь лаÑка, Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ñ–Ð¹Ñне ціле значеннÑ", + date: "Будь лаÑка, Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ñ–Ð¹Ñне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð°Ñ‚Ð¸", + url: "не дійÑний URL. Ðеобхідна приÑтавка ('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: "ПереглÑнути запиÑ", + bClose: "Закрити" + }, + del : { + caption: "Видалити", + msg: "Видалити обраний запиÑ(и)?", + bSubmit: "Видалити", + bCancel: "Відміна" + }, + nav : { + edittext: " ", + edittitle: "Змінити вибраний запиÑ", + addtext:" ", + addtitle: "Додати новий запиÑ", + deltext: " ", + deltitle: "Видалити вибраний запиÑ", + searchtext: " ", + searchtitle: "Знайти запиÑи", + refreshtext: "", + refreshtitle: "Оновити таблицю", + alertcap: "ПопередженнÑ", + alerttext: "Будь лаÑка, виберіть запиÑ", + viewtext: "", + viewtitle: "ПереглÑнути обраний запиÑ" + }, + col : { + caption: "Показати/Приховати Ñтовпці", + bSubmit: "Зберегти", + bCancel: "Відміна" + }, + errors : { + errcap : "Помилка", + nourl : "URL не задан", + norecords: "Ðемає запиÑів Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸", + model : "ЧиÑло полів не відповідає чиÑлу Ñтовпців таблиці!" + }, + 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: [ + "Ðд", "Пн", "Ð’Ñ‚", "Ср", "Чт", "Пт", "Сб", + "ÐеділÑ", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ÑтницÑ", "Субота" + ], + monthNames: [ + "Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "ЛиÑ", "Гру", + "Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "ВереÑень", "Жовтень", "ЛиÑтопад", "Грудень" + ], + 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: 'd.m.Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n.j.Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y G:i:s", + MonthDay: "F d", + ShortTime: "G:i", + LongTime: "G:i:s", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: '', + target: '', + checkbox : {disabled:true}, + idName : 'id' + } +}; +})(jQuery); diff --git a/addons/base/static/lib/jquery.jqGrid/js/jqDnR.js b/addons/base/static/lib/jquery.jqGrid/js/jqDnR.js new file mode 100644 index 00000000000..60fe2a96d0a --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/jqDnR.js @@ -0,0 +1,69 @@ +/* + * jqDnR - Minimalistic Drag'n'Resize for jQuery. + * + * Copyright (c) 2007 Brice Burgess , http://www.iceburg.net + * Licensed under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + * $Version: 2007.08.19 +r2 + */ + +(function($){ +$.fn.jqDrag=function(h){return i(this,h,'d');}; +$.fn.jqResize=function(h,ar){return i(this,h,'r',ar);}; +$.jqDnR={ + dnr:{}, + e:0, + drag:function(v){ + if(M.k == 'd')E.css({left:M.X+v.pageX-M.pX,top:M.Y+v.pageY-M.pY}); + else { + E.css({width:Math.max(v.pageX-M.pX+M.W,0),height:Math.max(v.pageY-M.pY+M.H,0)}); + if(M1){E1.css({width:Math.max(v.pageX-M1.pX+M1.W,0),height:Math.max(v.pageY-M1.pY+M1.H,0)});} + } + return false; + }, + stop:function(){ + //E.css('opacity',M.o); + $(document).unbind('mousemove',J.drag).unbind('mouseup',J.stop); + } +}; +var J=$.jqDnR,M=J.dnr,E=J.e,E1, +i=function(e,h,k,aR){ + return e.each(function(){ + h=(h)?$(h,e):e; + h.bind('mousedown',{e:e,k:k},function(v){ + var d=v.data,p={};E=d.e;E1 = aR ? $(aR) : false; + // attempt utilization of dimensions plugin to fix IE issues + if(E.css('position') != 'relative'){try{E.position(p);}catch(e){}} + M={ + X:p.left||f('left')||0, + Y:p.top||f('top')||0, + W:f('width')||E[0].scrollWidth||0, + H:f('height')||E[0].scrollHeight||0, + pX:v.pageX, + pY:v.pageY, + k:d.k + //o:E.css('opacity') + }; + // also resize + if(E1 && d.k != 'd'){ + M1={ + X:p.left||f1('left')||0, + Y:p.top||f1('top')||0, + W:E1[0].offsetWidth||f1('width')||0, + H:E1[0].offsetHeight||f1('height')||0, + pX:v.pageX, + pY:v.pageY, + k:d.k + }; + } else {M1 = false;} + //E.css({opacity:0.8}); + try {$("input.hasDatepicker",E[0]).datepicker('hide');}catch (dpe){} + $(document).mousemove($.jqDnR.drag).mouseup($.jqDnR.stop); + return false; + }); + }); +}, +f=function(k){return parseInt(E.css(k))||false;}; +f1=function(k){ return parseInt(E1.css(k))||false;}; +})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/jqModal.js b/addons/base/static/lib/jquery.jqGrid/js/jqModal.js new file mode 100644 index 00000000000..d1e7cda78c9 --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/jqModal.js @@ -0,0 +1,69 @@ +/* + * jqModal - Minimalist Modaling with jQuery + * (http://dev.iceburg.net/jquery/jqmodal/) + * + * Copyright (c) 2007,2008 Brice Burgess + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * $Version: 07/06/2008 +r13 + */ +(function($) { +$.fn.jqm=function(o){ +var p={ +overlay: 50, +closeoverlay : true, +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(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s; +H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s}; +if(p.trigger)$(this).jqmAddTrigger(p.trigger); +});}; + +$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');}; +$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');}; +$.fn.jqmShow=function(t){return this.each(function(){$.jqm.open(this._jqm,t);});}; +$.fn.jqmHide=function(t){return this.each(function(){$.jqm.close(this._jqm,t)});}; + +$.jqm = { +hash:{}, +open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index')));z=(z>0)?z:3000;var o=$('
').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z); + if(c.modal) {if(!A[0])setTimeout(function(){L('bind');},1);A.push(s);} + else if(c.overlay > 0) {if(c.closeoverlay) h.w.jqmAddClose(o);} + else o=F; + + h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F; + if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}} + + if(c.ajax) {var r=c.target||h.w,u=c.ajax;r=(typeof r == 'string')?$(r,h.w):$(r);u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u; + r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});} + else if(cc)h.w.jqmAddClose($(cc,h.w)); + + if(c.toTop&&h.o)h.w.before('').insertAfter(h.o); + (c.onShow)?c.onShow(h):h.w.show();e(h);return F; +}, +close:function(s){var h=H[s];if(!h.a)return F;h.a=F; + if(A[0]){A.pop();if(!A[0])L('unbind');} + if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove(); + if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return F; +}, +params:{}}; +var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version == "6.0"),F=false, +e=function(h){var i=$('').css({opacity:0});if(ie6)if(h.o)h.o.html('

').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);}, +f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}}, +L=function(t){$(document)[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);}, +m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r;}, +hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function() { + if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});}; +})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/js/jquery.fmatter.js b/addons/base/static/lib/jquery.jqGrid/js/jquery.fmatter.js new file mode 100644 index 00000000000..38314ce57eb --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/js/jquery.fmatter.js @@ -0,0 +1,568 @@ +/* +** + * 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 + * +**/ + +;(function($) { + $.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); + }, + isNull : function(o) { + return o === null; + }, + isUndefined : function(o) { + return typeof o === 'undefined'; + }, + 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; + }else 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.formatter, opts); + + if ($.fn.fmatter[formatType]){ + v = $.fn.fmatter[formatType](cellval, opts, rwd, act); + } + 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 = nData + ""; + var sDecimalSeparator = (opts.decimalSeparator) ? 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 = 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; + for (var 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; + + } else { + return nData; + } + }, + // Tony Tomov + // PHP implementation. Sorry not all options are supported. + // Feel free to add them if you want + DateFormat : 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, + dateFormat=["i18n"]; + // Internationalization strings + dateFormat.i18n = { + dayNames: opts.dayNames, + monthNames: opts.monthNames + }; + if( format in opts.masks ) { format = opts.masks[format]; } + if(date.constructor === Number) { + //Unix timestamp + if(String(format).toLowerCase() == "u") { + date = date*1000; + } + timestamp = new Date(date); + } 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]) { + var 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 { + date = String(date).split(/[\\\/:_;.,\t\T\s-]/); + format = format.split(/[\\\/:_;.,\t\T\s-]/); + // parsing for month names + for(k=0,hl=format.length;k 11){date[k] = dM+1-12;} + } + if(date[k]) { + 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); + } + + if( newformat in opts.masks ) { + 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: dateFormat.i18n.dayNames[w], + j: j, + l: dateFormat.i18n.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: dateFormat.i18n.monthNames[n - 1 + 12], + m: pad(n), + M: dateFormat.i18n.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 $0 in flags ? flags[$0] : $0.substring(1); + }); + } + }; + $.fn.fmatter.defaultFormat = function(cellval, opts) { + return ($.fmatter.isValue(cellval) && cellval!=="" ) ? cellval : opts.defaultValue ? opts.defaultValue : " "; + }; + $.fn.fmatter.email = function(cellval, opts) { + if(!$.fmatter.isEmpty(cellval)) { + return "" + cellval + ""; + }else { + return $.fn.fmatter.defaultFormat(cellval,opts ); + } + }; + $.fn.fmatter.checkbox =function(cval, opts) { + var op = $.extend({},opts.checkbox), ds; + if(!$.fmatter.isUndefined(opts.colModel.formatoptions)) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(op.disabled===true) {ds = "disabled=\"disabled\"";} else {ds="";} + if($.fmatter.isEmpty(cval) || $.fmatter.isUndefined(cval) ) {cval = $.fn.fmatter.defaultFormat(cval,op);} + cval=cval+"";cval=cval.toLowerCase(); + var bchk = cval.search(/(false|0|no|off)/i)<0 ? " checked='checked' " : ""; + return ""; + }; + $.fn.fmatter.link = function(cellval, opts) { + var op = {target:opts.target}; + var target = ""; + if(!$.fmatter.isUndefined(opts.colModel.formatoptions)) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(op.target) {target = 'target=' + op.target;} + if(!$.fmatter.isEmpty(cellval)) { + return "" + cellval + ""; + }else { + 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(!$.fmatter.isUndefined(opts.colModel.formatoptions)) { + 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 + ""; + }else { + return $.fn.fmatter.defaultFormat(cellval,opts); + } + }; + $.fn.fmatter.integer = function(cellval, opts) { + var op = $.extend({},opts.integer); + if(!$.fmatter.isUndefined(opts.colModel.formatoptions)) { + 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(!$.fmatter.isUndefined(opts.colModel.formatoptions)) { + 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(!$.fmatter.isUndefined(opts.colModel.formatoptions)) { + 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(!$.fmatter.isUndefined(opts.colModel.formatoptions)) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(!op.reformatAfterEdit && act=='edit'){ + return $.fn.fmatter.defaultFormat(cellval, opts); + } else if(!$.fmatter.isEmpty(cellval)) { + return $.fmatter.util.DateFormat(op.srcformat,cellval,op.newformat,op); + } else { + return $.fn.fmatter.defaultFormat(cellval, opts); + } + }; + $.fn.fmatter.select = function (cellval,opts, rwd, act) { + // jqGrid specific + cellval = cellval + ""; + var oSelect = false, ret=[]; + if(!$.fmatter.isUndefined(opts.colModel.formatoptions)){ + oSelect= opts.colModel.formatoptions.value; + } else if(!$.fmatter.isUndefined(opts.colModel.editoptions)){ + oSelect= opts.colModel.editoptions.value; + } + if (oSelect) { + var msl = opts.colModel.editoptions.multiple === 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(";"), j=0; + for(var i=0; i 2 ) { + sv[1] = jQuery.map(sv,function(n,i){if(i>0) {return n;}}).join(":"); + } + if(msl) { + if(jQuery.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 = jQuery.map(scell, function(n, i){ + return oSelect[n]; + }); + } else { + ret[0] = oSelect[cellval] || ""; + } + } + } + cellval = ret.join(", "); + return cellval === "" ? $.fn.fmatter.defaultFormat(cellval,opts) : cellval; + }; + $.fn.fmatter.rowactions = function(rid,gid,act,pos) { + var op ={ + keys:false, + editbutton:true, + delbutton:true, + onEdit : null, + onSuccess: null, + afterSave:null, + onError: null, + afterRestore: null, + extraparam: {oper:'edit'}, + url: null, + delOptions: {} + }, + cm = $('#'+gid)[0].p.colModel[pos]; + if(!$.fmatter.isUndefined(cm.formatoptions)) { + op = $.extend(op,cm.formatoptions); + } + var saverow = function( rowid) { + if(op.afterSave) op.afterSave(rowid); + $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid).show(); + $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid).hide(); + }, + restorerow = function( rowid) { + if(op.afterRestore) op.afterRestore(rowid); + $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid).show(); + $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid).hide(); + }; + + switch(act) + { + case 'edit': + $('#'+gid).jqGrid('editRow',rid, op.keys, op.onEdit, op.onSuccess, op.url, op.extraparam, saverow, op.onError,restorerow); + $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid).hide(); + $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid).show(); + break; + case 'save': + $('#'+gid).jqGrid('saveRow',rid, op.onSuccess,op.url, op.extraparam, saverow, op.onError,restorerow); + $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid).show(); + $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid).hide(); + break; + case 'cancel' : + $('#'+gid).jqGrid('restoreRow',rid, restorerow); + $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid).show(); + $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid).hide(); + break; + case 'del': + $('#'+gid).jqGrid('delGridRow',rid, op.delOptions); + break; + } + }; + $.fn.fmatter.actions = function(cellval,opts, rwd) { + var op ={keys:false, editbutton:true, delbutton:true}; + if(!$.fmatter.isUndefined(opts.colModel.formatoptions)) { + op = $.extend(op,opts.colModel.formatoptions); + } + var rowid = opts.rowId, str="",ocl; + if(typeof(rowid) =='undefined' || $.fmatter.isEmpty(rowid)) {return "";} + if(op.editbutton){ + ocl = "onclick=$.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','edit',"+opts.pos+");"; + str =str+ "

"; + } + if(op.delbutton) { + ocl = "onclick=$.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','del',"+opts.pos+");"; + str = str+"
"; + } + ocl = "onclick=$.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','save',"+opts.pos+");"; + str = str+""; + ocl = "onclick=$.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','cancel',"+opts.pos+");"; + str = 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(typeof unformatFunc !== 'undefined' && $.isFunction(unformatFunc) ) { + ret = unformatFunc($(cellval).text(), options, cellval); + } else if(!$.fmatter.isUndefined(formatType) && $.fmatter.isString(formatType) ) { + var opts = $.jgrid.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().replace(stripTag,'').replace(op.decimalSeparator,'.').replace(op.prefix,'').replace(op.suffix,''); + break; + case 'checkbox': + var cbv = (options.colModel.editoptions) ? options.colModel.editoptions.value.split(":") : ["Yes","No"]; + ret = $('input',cellval).attr("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 ? 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.editoptions); + 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(";"), j=0; + for(var i=0; i 2 ) { + sv[1] = jQuery.map(sv,function(n,i){if(i>0) {return n;}}).join(":"); + } + if(msl) { + if(jQuery.inArray(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 = jQuery.map(scell, function(n){ + var rv; + $.each(oSelect, function(i,val){ + if (val == n) { + rv = i; + return false; + } + }); + if( typeof(rv) != 'undefined' ) {return rv;} + }); + } + return ret.join(", "); + } else { + return cell || ""; + } + }; + $.unformat.date = function (cellval, opts) { + var op = $.jgrid.formatter.date || {}; + if(!$.fmatter.isUndefined(opts.formatoptions)) { + op = $.extend({},op,opts.formatoptions); + } + if(!$.fmatter.isEmpty(cellval)) { + return $.fmatter.util.DateFormat(op.newformat,cellval,op.srcformat,op); + } else { + return $.fn.fmatter.defaultFormat(cellval, opts); + } + }; +})(jQuery); \ No newline at end of file diff --git a/addons/base/static/lib/jquery.jqGrid/plugins/grid.addons.js.js b/addons/base/static/lib/jquery.jqGrid/plugins/grid.addons.js.js new file mode 100644 index 00000000000..ecb3ece98ca --- /dev/null +++ b/addons/base/static/lib/jquery.jqGrid/plugins/grid.addons.js.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