libre-jqgrid 4.15.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/.github/workflows/npm.yml +23 -0
  2. package/.jscsrc +13 -0
  3. package/LICENSE +674 -0
  4. package/LICENSE.md +304 -0
  5. package/README.md +2 -0
  6. package/bower.json +53 -0
  7. package/css/ui.jqgrid.css +1618 -0
  8. package/css/ui.jqgrid.min.css +4 -0
  9. package/css/ui.jqgrid.min.css.map +1 -0
  10. package/dist/css/ui.jqgrid.css +1618 -0
  11. package/dist/css/ui.jqgrid.min.css +4 -0
  12. package/dist/css/ui.jqgrid.min.css.map +1 -0
  13. package/dist/i18n/grid.locale-ar.js +198 -0
  14. package/dist/i18n/grid.locale-bg.js +201 -0
  15. package/dist/i18n/grid.locale-bs.js +230 -0
  16. package/dist/i18n/grid.locale-ca.js +204 -0
  17. package/dist/i18n/grid.locale-cn.js +237 -0
  18. package/dist/i18n/grid.locale-cs.js +197 -0
  19. package/dist/i18n/grid.locale-da.js +196 -0
  20. package/dist/i18n/grid.locale-de.js +240 -0
  21. package/dist/i18n/grid.locale-el.js +195 -0
  22. package/dist/i18n/grid.locale-en.js +256 -0
  23. package/dist/i18n/grid.locale-es.js +202 -0
  24. package/dist/i18n/grid.locale-fa.js +211 -0
  25. package/dist/i18n/grid.locale-fi.js +201 -0
  26. package/dist/i18n/grid.locale-fr.js +197 -0
  27. package/dist/i18n/grid.locale-gl.js +197 -0
  28. package/dist/i18n/grid.locale-he.js +198 -0
  29. package/dist/i18n/grid.locale-hr.js +231 -0
  30. package/dist/i18n/grid.locale-hu.js +196 -0
  31. package/dist/i18n/grid.locale-id.js +238 -0
  32. package/dist/i18n/grid.locale-is.js +197 -0
  33. package/dist/i18n/grid.locale-it.js +189 -0
  34. package/dist/i18n/grid.locale-ja.js +203 -0
  35. package/dist/i18n/grid.locale-kr.js +194 -0
  36. package/dist/i18n/grid.locale-lt.js +199 -0
  37. package/dist/i18n/grid.locale-me.js +198 -0
  38. package/dist/i18n/grid.locale-nl.js +208 -0
  39. package/dist/i18n/grid.locale-no.js +180 -0
  40. package/dist/i18n/grid.locale-pl.js +204 -0
  41. package/dist/i18n/grid.locale-pt-br.js +210 -0
  42. package/dist/i18n/grid.locale-pt.js +196 -0
  43. package/dist/i18n/grid.locale-ro.js +210 -0
  44. package/dist/i18n/grid.locale-ru.js +196 -0
  45. package/dist/i18n/grid.locale-sk.js +198 -0
  46. package/dist/i18n/grid.locale-sl.js +230 -0
  47. package/dist/i18n/grid.locale-sr.js +199 -0
  48. package/dist/i18n/grid.locale-sv.js +198 -0
  49. package/dist/i18n/grid.locale-th.js +195 -0
  50. package/dist/i18n/grid.locale-tr.js +197 -0
  51. package/dist/i18n/grid.locale-tw.js +199 -0
  52. package/dist/i18n/grid.locale-ua.js +199 -0
  53. package/dist/i18n/grid.locale-vi.js +238 -0
  54. package/dist/i18n/min/grid.locale-ar.js +10 -0
  55. package/dist/i18n/min/grid.locale-ar.js.map +1 -0
  56. package/dist/i18n/min/grid.locale-bg.js +10 -0
  57. package/dist/i18n/min/grid.locale-bg.js.map +1 -0
  58. package/dist/i18n/min/grid.locale-ca.js +15 -0
  59. package/dist/i18n/min/grid.locale-ca.js.map +1 -0
  60. package/dist/i18n/min/grid.locale-cn.js +10 -0
  61. package/dist/i18n/min/grid.locale-cn.js.map +1 -0
  62. package/dist/i18n/min/grid.locale-cs.js +11 -0
  63. package/dist/i18n/min/grid.locale-cs.js.map +1 -0
  64. package/dist/i18n/min/grid.locale-da.js +10 -0
  65. package/dist/i18n/min/grid.locale-da.js.map +1 -0
  66. package/dist/i18n/min/grid.locale-de.js +21 -0
  67. package/dist/i18n/min/grid.locale-de.js.map +1 -0
  68. package/dist/i18n/min/grid.locale-el.js +10 -0
  69. package/dist/i18n/min/grid.locale-el.js.map +1 -0
  70. package/dist/i18n/min/grid.locale-en.js +11 -0
  71. package/dist/i18n/min/grid.locale-en.js.map +1 -0
  72. package/dist/i18n/min/grid.locale-es.js +16 -0
  73. package/dist/i18n/min/grid.locale-es.js.map +1 -0
  74. package/dist/i18n/min/grid.locale-fa.js +8 -0
  75. package/dist/i18n/min/grid.locale-fa.js.map +1 -0
  76. package/dist/i18n/min/grid.locale-fi.js +11 -0
  77. package/dist/i18n/min/grid.locale-fi.js.map +1 -0
  78. package/dist/i18n/min/grid.locale-fr.js +10 -0
  79. package/dist/i18n/min/grid.locale-fr.js.map +1 -0
  80. package/dist/i18n/min/grid.locale-gl.js +9 -0
  81. package/dist/i18n/min/grid.locale-gl.js.map +1 -0
  82. package/dist/i18n/min/grid.locale-he.js +10 -0
  83. package/dist/i18n/min/grid.locale-he.js.map +1 -0
  84. package/dist/i18n/min/grid.locale-hr.js +11 -0
  85. package/dist/i18n/min/grid.locale-hr.js.map +1 -0
  86. package/dist/i18n/min/grid.locale-hu.js +10 -0
  87. package/dist/i18n/min/grid.locale-hu.js.map +1 -0
  88. package/dist/i18n/min/grid.locale-id.js +10 -0
  89. package/dist/i18n/min/grid.locale-id.js.map +1 -0
  90. package/dist/i18n/min/grid.locale-is.js +9 -0
  91. package/dist/i18n/min/grid.locale-is.js.map +1 -0
  92. package/dist/i18n/min/grid.locale-it.js +2 -0
  93. package/dist/i18n/min/grid.locale-it.js.map +1 -0
  94. package/dist/i18n/min/grid.locale-ja.js +10 -0
  95. package/dist/i18n/min/grid.locale-ja.js.map +1 -0
  96. package/dist/i18n/min/grid.locale-kr.js +2 -0
  97. package/dist/i18n/min/grid.locale-kr.js.map +1 -0
  98. package/dist/i18n/min/grid.locale-lt.js +10 -0
  99. package/dist/i18n/min/grid.locale-lt.js.map +1 -0
  100. package/dist/i18n/min/grid.locale-me.js +10 -0
  101. package/dist/i18n/min/grid.locale-me.js.map +1 -0
  102. package/dist/i18n/min/grid.locale-nl.js +2 -0
  103. package/dist/i18n/min/grid.locale-nl.js.map +1 -0
  104. package/dist/i18n/min/grid.locale-no.js +2 -0
  105. package/dist/i18n/min/grid.locale-no.js.map +1 -0
  106. package/dist/i18n/min/grid.locale-pl.js +18 -0
  107. package/dist/i18n/min/grid.locale-pl.js.map +1 -0
  108. package/dist/i18n/min/grid.locale-pt-br.js +21 -0
  109. package/dist/i18n/min/grid.locale-pt-br.js.map +1 -0
  110. package/dist/i18n/min/grid.locale-pt.js +9 -0
  111. package/dist/i18n/min/grid.locale-pt.js.map +1 -0
  112. package/dist/i18n/min/grid.locale-ro.js +10 -0
  113. package/dist/i18n/min/grid.locale-ro.js.map +1 -0
  114. package/dist/i18n/min/grid.locale-ru.js +10 -0
  115. package/dist/i18n/min/grid.locale-ru.js.map +1 -0
  116. package/dist/i18n/min/grid.locale-sk.js +10 -0
  117. package/dist/i18n/min/grid.locale-sk.js.map +1 -0
  118. package/dist/i18n/min/grid.locale-sr.js +10 -0
  119. package/dist/i18n/min/grid.locale-sr.js.map +1 -0
  120. package/dist/i18n/min/grid.locale-sv.js +10 -0
  121. package/dist/i18n/min/grid.locale-sv.js.map +1 -0
  122. package/dist/i18n/min/grid.locale-th.js +10 -0
  123. package/dist/i18n/min/grid.locale-th.js.map +1 -0
  124. package/dist/i18n/min/grid.locale-tr.js +10 -0
  125. package/dist/i18n/min/grid.locale-tr.js.map +1 -0
  126. package/dist/i18n/min/grid.locale-tw.js +11 -0
  127. package/dist/i18n/min/grid.locale-tw.js.map +1 -0
  128. package/dist/i18n/min/grid.locale-ua.js +10 -0
  129. package/dist/i18n/min/grid.locale-ua.js.map +1 -0
  130. package/dist/i18n/min/grid.locale-vi.js +10 -0
  131. package/dist/i18n/min/grid.locale-vi.js.map +1 -0
  132. package/dist/jquery.jqgrid.min.js +21144 -0
  133. package/dist/jquery.jqgrid.min.js.map +1 -0
  134. package/dist/jquery.jqgrid.src.js +21144 -0
  135. package/dist/modules/grid.base.js +8518 -0
  136. package/dist/modules/grid.celledit.js +673 -0
  137. package/dist/modules/grid.common.js +844 -0
  138. package/dist/modules/grid.custom.js +1795 -0
  139. package/dist/modules/grid.filter.js +897 -0
  140. package/dist/modules/grid.formedit.js +2537 -0
  141. package/dist/modules/grid.grouping.js +737 -0
  142. package/dist/modules/grid.import.js +251 -0
  143. package/dist/modules/grid.inlinedit.js +784 -0
  144. package/dist/modules/grid.jqueryui.js +965 -0
  145. package/dist/modules/grid.pivot.js +862 -0
  146. package/dist/modules/grid.subgrid.js +379 -0
  147. package/dist/modules/grid.tbltogrid.js +141 -0
  148. package/dist/modules/grid.treegrid.js +683 -0
  149. package/dist/modules/jqdnr.js +188 -0
  150. package/dist/modules/jqmodal.js +292 -0
  151. package/dist/modules/jquery.fmatter.js +1061 -0
  152. package/dist/modules/jsonxml.js +343 -0
  153. package/dist/modules/min/grid.base.js +11 -0
  154. package/dist/modules/min/grid.base.js.map +1 -0
  155. package/dist/modules/min/grid.celledit.js +2 -0
  156. package/dist/modules/min/grid.celledit.js.map +1 -0
  157. package/dist/modules/min/grid.common.js +2 -0
  158. package/dist/modules/min/grid.common.js.map +1 -0
  159. package/dist/modules/min/grid.custom.js +2 -0
  160. package/dist/modules/min/grid.custom.js.map +1 -0
  161. package/dist/modules/min/grid.filter.js +2 -0
  162. package/dist/modules/min/grid.filter.js.map +1 -0
  163. package/dist/modules/min/grid.formedit.js +2 -0
  164. package/dist/modules/min/grid.formedit.js.map +1 -0
  165. package/dist/modules/min/grid.grouping.js +2 -0
  166. package/dist/modules/min/grid.grouping.js.map +1 -0
  167. package/dist/modules/min/grid.import.js +2 -0
  168. package/dist/modules/min/grid.import.js.map +1 -0
  169. package/dist/modules/min/grid.inlinedit.js +2 -0
  170. package/dist/modules/min/grid.inlinedit.js.map +1 -0
  171. package/dist/modules/min/grid.jqueryui.js +2 -0
  172. package/dist/modules/min/grid.jqueryui.js.map +1 -0
  173. package/dist/modules/min/grid.pivot.js +2 -0
  174. package/dist/modules/min/grid.pivot.js.map +1 -0
  175. package/dist/modules/min/grid.subgrid.js +2 -0
  176. package/dist/modules/min/grid.subgrid.js.map +1 -0
  177. package/dist/modules/min/grid.tbltogrid.js +2 -0
  178. package/dist/modules/min/grid.tbltogrid.js.map +1 -0
  179. package/dist/modules/min/grid.treegrid.js +2 -0
  180. package/dist/modules/min/grid.treegrid.js.map +1 -0
  181. package/dist/modules/min/jqdnr.js +2 -0
  182. package/dist/modules/min/jqdnr.js.map +1 -0
  183. package/dist/modules/min/jqmodal.js +2 -0
  184. package/dist/modules/min/jqmodal.js.map +1 -0
  185. package/dist/modules/min/jquery.fmatter.js +2 -0
  186. package/dist/modules/min/jquery.fmatter.js.map +1 -0
  187. package/dist/modules/min/jsonxml.js +2 -0
  188. package/dist/modules/min/jsonxml.js.map +1 -0
  189. package/dist/plugins/css/ui.multiselect.css +30 -0
  190. package/dist/plugins/css/ui.multiselect.min.css +2 -0
  191. package/dist/plugins/css/ui.multiselect.min.css.map +1 -0
  192. package/dist/plugins/grid.odata.js +1313 -0
  193. package/dist/plugins/jqgrid_download.js +109 -0
  194. package/dist/plugins/jquery.contextmenu-ui.js +304 -0
  195. package/dist/plugins/jquery.contextmenu.js +174 -0
  196. package/dist/plugins/jquery.createcontexmenufromnavigatorbuttons.js +172 -0
  197. package/dist/plugins/jquery.jqgrid.showhidecolumnmenu.js +201 -0
  198. package/dist/plugins/min/grid.odata.js +11 -0
  199. package/dist/plugins/min/grid.odata.js.map +1 -0
  200. package/dist/plugins/min/jquery.contextmenu-ui.js +26 -0
  201. package/dist/plugins/min/jquery.contextmenu-ui.js.map +1 -0
  202. package/dist/plugins/min/jquery.contextmenu.js +19 -0
  203. package/dist/plugins/min/jquery.contextmenu.js.map +1 -0
  204. package/dist/plugins/min/jquery.createcontexmenufromnavigatorbuttons.js +12 -0
  205. package/dist/plugins/min/jquery.createcontexmenufromnavigatorbuttons.js.map +1 -0
  206. package/dist/plugins/min/jquery.jqgrid.showhidecolumnmenu.js +10 -0
  207. package/dist/plugins/min/jquery.jqgrid.showhidecolumnmenu.js.map +1 -0
  208. package/dist/plugins/min/ui.multiselect.js +30 -0
  209. package/dist/plugins/min/ui.multiselect.js.map +1 -0
  210. package/dist/plugins/ui.multiselect.js +389 -0
  211. package/dist/ts/free-jqgrid.d.ts +2132 -0
  212. package/github /workflows/npm.yml +23 -0
  213. package/gruntfile.js +397 -0
  214. package/js/grid.base.js +8518 -0
  215. package/js/grid.celledit.js +673 -0
  216. package/js/grid.common.js +844 -0
  217. package/js/grid.custom.js +1795 -0
  218. package/js/grid.filter.js +897 -0
  219. package/js/grid.formedit.js +2537 -0
  220. package/js/grid.grouping.js +737 -0
  221. package/js/grid.import.js +251 -0
  222. package/js/grid.inlinedit.js +784 -0
  223. package/js/grid.jqueryui.js +965 -0
  224. package/js/grid.pivot.js +862 -0
  225. package/js/grid.subgrid.js +379 -0
  226. package/js/grid.tbltogrid.js +141 -0
  227. package/js/grid.treegrid.js +683 -0
  228. package/js/i18n/grid.locale-ar.js +198 -0
  229. package/js/i18n/grid.locale-bg.js +201 -0
  230. package/js/i18n/grid.locale-bs.js +230 -0
  231. package/js/i18n/grid.locale-ca.js +204 -0
  232. package/js/i18n/grid.locale-cn.js +237 -0
  233. package/js/i18n/grid.locale-cs.js +197 -0
  234. package/js/i18n/grid.locale-da.js +196 -0
  235. package/js/i18n/grid.locale-de.js +240 -0
  236. package/js/i18n/grid.locale-el.js +195 -0
  237. package/js/i18n/grid.locale-en.js +256 -0
  238. package/js/i18n/grid.locale-es.js +202 -0
  239. package/js/i18n/grid.locale-fa.js +211 -0
  240. package/js/i18n/grid.locale-fi.js +201 -0
  241. package/js/i18n/grid.locale-fr.js +197 -0
  242. package/js/i18n/grid.locale-gl.js +197 -0
  243. package/js/i18n/grid.locale-he.js +198 -0
  244. package/js/i18n/grid.locale-hr.js +231 -0
  245. package/js/i18n/grid.locale-hu.js +196 -0
  246. package/js/i18n/grid.locale-id.js +238 -0
  247. package/js/i18n/grid.locale-is.js +197 -0
  248. package/js/i18n/grid.locale-it.js +189 -0
  249. package/js/i18n/grid.locale-ja.js +203 -0
  250. package/js/i18n/grid.locale-kr.js +194 -0
  251. package/js/i18n/grid.locale-lt.js +199 -0
  252. package/js/i18n/grid.locale-me.js +198 -0
  253. package/js/i18n/grid.locale-nl.js +208 -0
  254. package/js/i18n/grid.locale-no.js +180 -0
  255. package/js/i18n/grid.locale-pl.js +204 -0
  256. package/js/i18n/grid.locale-pt-br.js +210 -0
  257. package/js/i18n/grid.locale-pt.js +196 -0
  258. package/js/i18n/grid.locale-ro.js +210 -0
  259. package/js/i18n/grid.locale-ru.js +196 -0
  260. package/js/i18n/grid.locale-sk.js +198 -0
  261. package/js/i18n/grid.locale-sl.js +230 -0
  262. package/js/i18n/grid.locale-sr.js +199 -0
  263. package/js/i18n/grid.locale-sv.js +198 -0
  264. package/js/i18n/grid.locale-th.js +195 -0
  265. package/js/i18n/grid.locale-tr.js +197 -0
  266. package/js/i18n/grid.locale-tw.js +199 -0
  267. package/js/i18n/grid.locale-ua.js +199 -0
  268. package/js/i18n/grid.locale-vi.js +238 -0
  269. package/js/i18n/min/grid.locale-ar.js +10 -0
  270. package/js/i18n/min/grid.locale-ar.js.map +1 -0
  271. package/js/i18n/min/grid.locale-bg.js +10 -0
  272. package/js/i18n/min/grid.locale-bg.js.map +1 -0
  273. package/js/i18n/min/grid.locale-ca.js +15 -0
  274. package/js/i18n/min/grid.locale-ca.js.map +1 -0
  275. package/js/i18n/min/grid.locale-cn.js +10 -0
  276. package/js/i18n/min/grid.locale-cn.js.map +1 -0
  277. package/js/i18n/min/grid.locale-cs.js +11 -0
  278. package/js/i18n/min/grid.locale-cs.js.map +1 -0
  279. package/js/i18n/min/grid.locale-da.js +10 -0
  280. package/js/i18n/min/grid.locale-da.js.map +1 -0
  281. package/js/i18n/min/grid.locale-de.js +21 -0
  282. package/js/i18n/min/grid.locale-de.js.map +1 -0
  283. package/js/i18n/min/grid.locale-el.js +10 -0
  284. package/js/i18n/min/grid.locale-el.js.map +1 -0
  285. package/js/i18n/min/grid.locale-en.js +11 -0
  286. package/js/i18n/min/grid.locale-en.js.map +1 -0
  287. package/js/i18n/min/grid.locale-es.js +16 -0
  288. package/js/i18n/min/grid.locale-es.js.map +1 -0
  289. package/js/i18n/min/grid.locale-fa.js +8 -0
  290. package/js/i18n/min/grid.locale-fa.js.map +1 -0
  291. package/js/i18n/min/grid.locale-fi.js +11 -0
  292. package/js/i18n/min/grid.locale-fi.js.map +1 -0
  293. package/js/i18n/min/grid.locale-fr.js +10 -0
  294. package/js/i18n/min/grid.locale-fr.js.map +1 -0
  295. package/js/i18n/min/grid.locale-gl.js +9 -0
  296. package/js/i18n/min/grid.locale-gl.js.map +1 -0
  297. package/js/i18n/min/grid.locale-he.js +10 -0
  298. package/js/i18n/min/grid.locale-he.js.map +1 -0
  299. package/js/i18n/min/grid.locale-hr.js +11 -0
  300. package/js/i18n/min/grid.locale-hr.js.map +1 -0
  301. package/js/i18n/min/grid.locale-hu.js +10 -0
  302. package/js/i18n/min/grid.locale-hu.js.map +1 -0
  303. package/js/i18n/min/grid.locale-id.js +10 -0
  304. package/js/i18n/min/grid.locale-id.js.map +1 -0
  305. package/js/i18n/min/grid.locale-is.js +9 -0
  306. package/js/i18n/min/grid.locale-is.js.map +1 -0
  307. package/js/i18n/min/grid.locale-it.js +2 -0
  308. package/js/i18n/min/grid.locale-it.js.map +1 -0
  309. package/js/i18n/min/grid.locale-ja.js +10 -0
  310. package/js/i18n/min/grid.locale-ja.js.map +1 -0
  311. package/js/i18n/min/grid.locale-kr.js +2 -0
  312. package/js/i18n/min/grid.locale-kr.js.map +1 -0
  313. package/js/i18n/min/grid.locale-lt.js +10 -0
  314. package/js/i18n/min/grid.locale-lt.js.map +1 -0
  315. package/js/i18n/min/grid.locale-me.js +10 -0
  316. package/js/i18n/min/grid.locale-me.js.map +1 -0
  317. package/js/i18n/min/grid.locale-nl.js +2 -0
  318. package/js/i18n/min/grid.locale-nl.js.map +1 -0
  319. package/js/i18n/min/grid.locale-no.js +2 -0
  320. package/js/i18n/min/grid.locale-no.js.map +1 -0
  321. package/js/i18n/min/grid.locale-pl.js +18 -0
  322. package/js/i18n/min/grid.locale-pl.js.map +1 -0
  323. package/js/i18n/min/grid.locale-pt-br.js +21 -0
  324. package/js/i18n/min/grid.locale-pt-br.js.map +1 -0
  325. package/js/i18n/min/grid.locale-pt.js +9 -0
  326. package/js/i18n/min/grid.locale-pt.js.map +1 -0
  327. package/js/i18n/min/grid.locale-ro.js +10 -0
  328. package/js/i18n/min/grid.locale-ro.js.map +1 -0
  329. package/js/i18n/min/grid.locale-ru.js +10 -0
  330. package/js/i18n/min/grid.locale-ru.js.map +1 -0
  331. package/js/i18n/min/grid.locale-sk.js +10 -0
  332. package/js/i18n/min/grid.locale-sk.js.map +1 -0
  333. package/js/i18n/min/grid.locale-sr.js +10 -0
  334. package/js/i18n/min/grid.locale-sr.js.map +1 -0
  335. package/js/i18n/min/grid.locale-sv.js +10 -0
  336. package/js/i18n/min/grid.locale-sv.js.map +1 -0
  337. package/js/i18n/min/grid.locale-th.js +10 -0
  338. package/js/i18n/min/grid.locale-th.js.map +1 -0
  339. package/js/i18n/min/grid.locale-tr.js +10 -0
  340. package/js/i18n/min/grid.locale-tr.js.map +1 -0
  341. package/js/i18n/min/grid.locale-tw.js +11 -0
  342. package/js/i18n/min/grid.locale-tw.js.map +1 -0
  343. package/js/i18n/min/grid.locale-ua.js +10 -0
  344. package/js/i18n/min/grid.locale-ua.js.map +1 -0
  345. package/js/i18n/min/grid.locale-vi.js +10 -0
  346. package/js/i18n/min/grid.locale-vi.js.map +1 -0
  347. package/js/jqdnr.js +188 -0
  348. package/js/jqmodal.js +292 -0
  349. package/js/jquery.fmatter.js +1061 -0
  350. package/js/jquery.jqgrid.min.js +11 -0
  351. package/js/jquery.jqgrid.min.js.map +1 -0
  352. package/js/jquery.jqgrid.src.js +21144 -0
  353. package/js/jsonxml.js +343 -0
  354. package/js/min/grid.base.js +11 -0
  355. package/js/min/grid.base.js.map +1 -0
  356. package/js/min/grid.celledit.js +2 -0
  357. package/js/min/grid.celledit.js.map +1 -0
  358. package/js/min/grid.common.js +2 -0
  359. package/js/min/grid.common.js.map +1 -0
  360. package/js/min/grid.custom.js +2 -0
  361. package/js/min/grid.custom.js.map +1 -0
  362. package/js/min/grid.filter.js +2 -0
  363. package/js/min/grid.filter.js.map +1 -0
  364. package/js/min/grid.formedit.js +2 -0
  365. package/js/min/grid.formedit.js.map +1 -0
  366. package/js/min/grid.grouping.js +2 -0
  367. package/js/min/grid.grouping.js.map +1 -0
  368. package/js/min/grid.import.js +2 -0
  369. package/js/min/grid.import.js.map +1 -0
  370. package/js/min/grid.inlinedit.js +2 -0
  371. package/js/min/grid.inlinedit.js.map +1 -0
  372. package/js/min/grid.jqueryui.js +2 -0
  373. package/js/min/grid.jqueryui.js.map +1 -0
  374. package/js/min/grid.pivot.js +2 -0
  375. package/js/min/grid.pivot.js.map +1 -0
  376. package/js/min/grid.subgrid.js +2 -0
  377. package/js/min/grid.subgrid.js.map +1 -0
  378. package/js/min/grid.tbltogrid.js +2 -0
  379. package/js/min/grid.tbltogrid.js.map +1 -0
  380. package/js/min/grid.treegrid.js +2 -0
  381. package/js/min/grid.treegrid.js.map +1 -0
  382. package/js/min/jqdnr.js +2 -0
  383. package/js/min/jqdnr.js.map +1 -0
  384. package/js/min/jqmodal.js +2 -0
  385. package/js/min/jqmodal.js.map +1 -0
  386. package/js/min/jquery.fmatter.js +2 -0
  387. package/js/min/jquery.fmatter.js.map +1 -0
  388. package/js/min/jsonxml.js +2 -0
  389. package/js/min/jsonxml.js.map +1 -0
  390. package/package.json +79 -0
  391. package/plugins/css/ui.multiselect.css +30 -0
  392. package/plugins/css/ui.multiselect.min.css +2 -0
  393. package/plugins/css/ui.multiselect.min.css.map +1 -0
  394. package/plugins/grid.odata.js +1313 -0
  395. package/plugins/jqgrid_download.js +109 -0
  396. package/plugins/jquery.contextmenu-ui.js +304 -0
  397. package/plugins/jquery.contextmenu.js +174 -0
  398. package/plugins/jquery.createcontexmenufromnavigatorbuttons.js +172 -0
  399. package/plugins/jquery.jqgrid.showhidecolumnmenu.js +201 -0
  400. package/plugins/min/grid.odata.js +11 -0
  401. package/plugins/min/grid.odata.js.map +1 -0
  402. package/plugins/min/jquery.contextmenu-ui.js +26 -0
  403. package/plugins/min/jquery.contextmenu-ui.js.map +1 -0
  404. package/plugins/min/jquery.contextmenu.js +19 -0
  405. package/plugins/min/jquery.contextmenu.js.map +1 -0
  406. package/plugins/min/jquery.createcontexmenufromnavigatorbuttons.js +12 -0
  407. package/plugins/min/jquery.createcontexmenufromnavigatorbuttons.js.map +1 -0
  408. package/plugins/min/jquery.jqgrid.showhidecolumnmenu.js +10 -0
  409. package/plugins/min/jquery.jqgrid.showhidecolumnmenu.js.map +1 -0
  410. package/plugins/min/ui.multiselect.js +30 -0
  411. package/plugins/min/ui.multiselect.js.map +1 -0
  412. package/plugins/ui.multiselect.js +389 -0
  413. package/tests/fillingTest.htm +210 -0
  414. package/ts/free-jqgrid.d.ts +2132 -0
  415. package/ts/tests/README.txt +4 -0
  416. package/ts/tests/test.html +50 -0
  417. package/ts/tests/test.js +55 -0
  418. package/ts/tests/test.js.map +1 -0
  419. package/ts/tests/test.ts +149 -0
  420. package/ts/tests/tsconfig.json +7 -0
  421. package/tslint.json +20 -0
@@ -0,0 +1,737 @@
1
+ /*jshint eqeqeq:false, eqnull:true */
2
+ /*global jQuery, define, exports, module, require */
3
+ /*jslint plusplus: true, unparam: true, eqeq: true, nomen: true, todo: true, continue: true */
4
+ // Grouping module
5
+ (function (factory) {
6
+ "use strict";
7
+ if (typeof define === "function" && define.amd) {
8
+ // AMD. Register as an anonymous module.
9
+ define([
10
+ "jquery",
11
+ "./grid.base"
12
+ ], factory);
13
+ } else if (typeof module === "object" && module.exports) {
14
+ // Node/CommonJS
15
+ module.exports = function (root, $) {
16
+ if (!root) {
17
+ root = window;
18
+ }
19
+ if ($ === undefined) {
20
+ // require("jquery") returns a factory that requires window to
21
+ // build a jQuery instance, we normalize how we use modules
22
+ // that require this pattern but the window provided is a noop
23
+ // if it's defined (how jquery works)
24
+ $ = typeof window !== "undefined" ?
25
+ require("jquery") :
26
+ require("jquery")(root);
27
+ }
28
+ require("./grid.base");
29
+ factory($);
30
+ return $;
31
+ };
32
+ } else {
33
+ // Browser globals
34
+ factory(jQuery);
35
+ }
36
+ }(function ($) {
37
+ "use strict";
38
+ var jgrid = $.jgrid, base = $.fn.jqGrid;
39
+ // begin module grid.grouping
40
+ jgrid.extend({
41
+ groupingSetup: function () {
42
+ return this.each(function () {
43
+ var $t = this, i, j, cml, p = $t.p, colModel = p.colModel, grp = p.groupingView, cm, summary,
44
+ emptyFormatter = function () {
45
+ return "";
46
+ };
47
+ if (grp !== null && ((typeof grp === "object") || $.jgrid.isFunction(grp))) {
48
+ if (!grp.groupField.length) {
49
+ p.grouping = false;
50
+ } else {
51
+ if (grp.visibiltyOnNextGrouping === undefined) {
52
+ grp.visibiltyOnNextGrouping = [];
53
+ }
54
+
55
+ grp.lastvalues = [];
56
+ if (!grp._locgr) {
57
+ grp.groups = [];
58
+ }
59
+ grp.counters = [];
60
+ for (i = 0; i < grp.groupField.length; i++) {
61
+ if (!grp.groupOrder[i]) {
62
+ grp.groupOrder[i] = "asc";
63
+ }
64
+ if (!grp.groupText[i]) {
65
+ grp.groupText[i] = "{0}";
66
+ }
67
+ if (typeof grp.groupColumnShow[i] !== "boolean") {
68
+ grp.groupColumnShow[i] = true;
69
+ }
70
+ if (typeof grp.groupSummary[i] !== "boolean") {
71
+ grp.groupSummary[i] = false;
72
+ }
73
+ if (!grp.groupSummaryPos[i]) {
74
+ grp.groupSummaryPos[i] = "footer";
75
+ }
76
+ // TODO: allow groupField be from additionalProperties
77
+ // and not only from colModel
78
+ cm = colModel[p.iColByName[grp.groupField[i]]];
79
+ if (grp.groupColumnShow[i] === true) {
80
+ grp.visibiltyOnNextGrouping[i] = true;
81
+ if (cm != null && cm.hidden === true) {
82
+ base.showCol.call($($t), grp.groupField[i]);
83
+ }
84
+ } else {
85
+ grp.visibiltyOnNextGrouping[i] = $("#" + jgrid.jqID(p.id + "_" + grp.groupField[i])).is(":visible");
86
+ if (cm != null && cm.hidden !== true) {
87
+ base.hideCol.call($($t), grp.groupField[i]);
88
+ }
89
+ }
90
+ }
91
+ grp.summary = [];
92
+ if (grp.hideFirstGroupCol) {
93
+ grp.formatDisplayField[0] = function (v) {
94
+ return v;
95
+ };
96
+ }
97
+ for (j = 0, cml = colModel.length; j < cml; j++) {
98
+ cm = colModel[j];
99
+ if (grp.hideFirstGroupCol) {
100
+ if (!cm.hidden && grp.groupField[0] === cm.name) {
101
+ cm.formatter = emptyFormatter;
102
+ }
103
+ }
104
+ if (cm.summaryType) {
105
+ summary = {
106
+ nm: cm.name,
107
+ st: cm.summaryType,
108
+ v: "",
109
+ sr: cm.summaryRound,
110
+ srt: cm.summaryRoundType || "round"
111
+ };
112
+ if (cm.summaryDivider) {
113
+ summary.sd = cm.summaryDivider;
114
+ summary.vd = "";
115
+ }
116
+ grp.summary.push(summary);
117
+ }
118
+ }
119
+ }
120
+ } else {
121
+ p.grouping = false;
122
+ }
123
+ });
124
+ },
125
+ groupingPrepare: function (record, irow) {
126
+ this.each(function () {
127
+ var $t = this, p = $t.p, grp = p.groupingView, groups = grp.groups, counters = grp.counters,
128
+ lastvalues = grp.lastvalues, isInTheSameGroup = grp.isInTheSameGroup, groupLength = grp.groupField.length,
129
+ i, j, keys, newGroup, counter, fieldName, v, displayName, displayValue, changed = false,
130
+ groupingCalculationsHandler = base.groupingCalculations.handler, key,
131
+ buildSummary = function () {
132
+ var iSummary, summary, st;
133
+ for (iSummary = 0; iSummary < counter.summary.length; iSummary++) {
134
+ summary = counter.summary[iSummary];
135
+ st = Array.isArray(summary.st) ? summary.st[newGroup.idx] : summary.st;
136
+ if ($.jgrid.isFunction(st)) {
137
+ summary.v = st.call($t, summary.v, summary.nm, record, newGroup);
138
+ } else {
139
+ summary.v = groupingCalculationsHandler.call($($t), st, summary.v, summary.nm, summary.sr, summary.srt, record);
140
+ if (st.toLowerCase() === "avg" && summary.sd) {
141
+ summary.vd = groupingCalculationsHandler.call($($t), st, summary.vd, summary.sd, summary.sr, summary.srt, record);
142
+ }
143
+ }
144
+ }
145
+ return counter.summary;
146
+ },
147
+ normilizeValue = function (value, cmOrPropName) {
148
+ if (value == null && grp.useDefaultValuesOnGrouping) {
149
+ var cm = p.iColByName[cmOrPropName] !== undefined ?
150
+ p.colModel[p.iColByName[cmOrPropName]] :
151
+ p.additionalProperties[p.iPropByName[cmOrPropName]],
152
+ defaultValue;
153
+
154
+ if (cm != null && cm.formatter != null) {
155
+ if (cm.formatoptions != null && cm.formatoptions.defaultValue !== undefined) {
156
+ value = cm.formatoptions.defaultValue;
157
+ } else if (typeof cm.formatter === "string") {
158
+ defaultValue = $($t).jqGrid("getGridRes", "formatter." + cm.formatter + ".defaultValue");
159
+ if (defaultValue !== undefined) {
160
+ value = defaultValue;
161
+ }
162
+ }
163
+ }
164
+ }
165
+ return value;
166
+ };
167
+
168
+ for (i = 0; i < groupLength; i++) {
169
+ fieldName = grp.groupField[i];
170
+ v = normilizeValue(record[fieldName], fieldName);
171
+ key = v;
172
+ displayName = grp.displayField[i];
173
+ displayValue = displayName == null ?
174
+ null :
175
+ normilizeValue(record[displayName], displayName);
176
+
177
+ if (displayValue == null) {
178
+ displayValue = v;
179
+ }
180
+ if (v !== undefined) {
181
+ keys = [];
182
+ for (j = 0; j <= i; j++) {
183
+ keys.push(record[grp.groupField[j]]);
184
+ }
185
+ newGroup = {
186
+ idx: i, // index in grp.groupField array
187
+ dataIndex: fieldName,
188
+ value: v,
189
+ displayValue: displayValue,
190
+ startRow: irow,
191
+ cnt: 1,
192
+ keys: keys,
193
+ summary: []
194
+ };
195
+ counter = {
196
+ cnt: 1,
197
+ pos: groups.length,
198
+ summary: $.extend(true, [], grp.summary)
199
+ };
200
+ if (irow === 0) {
201
+ // First record always starts a new group
202
+ groups.push(newGroup);
203
+ lastvalues[i] = v;
204
+ counters[i] = counter;
205
+ } else {
206
+ if (typeof v !== "object" && (Array.isArray(isInTheSameGroup) && $.jgrid.isFunction(isInTheSameGroup[i]) ? !isInTheSameGroup[i].call($t, lastvalues[i], v, i, grp) : lastvalues[i] !== v)) {
207
+ // This record is not in same group as previous one
208
+ groups.push(newGroup);
209
+ lastvalues[i] = v;
210
+ changed = true;
211
+ counters[i] = counter;
212
+ } else {
213
+ if (changed) {
214
+ // This group has changed because an earlier group changed.
215
+ groups.push(newGroup);
216
+ lastvalues[i] = v;
217
+ counters[i] = counter;
218
+ } else {
219
+ counter = counters[i];
220
+ counter.cnt += 1;
221
+ groups[counter.pos].cnt = counter.cnt;
222
+ }
223
+ }
224
+ }
225
+ groups[counter.pos].summary = buildSummary();
226
+ for (j = counter.pos - 1; j >= 0; j--) {
227
+ // find the parent group (the grouping header)
228
+ if (groups[j].idx < groups[counter.pos].idx) {
229
+ groups[counter.pos].parentGroupIndex = j;
230
+ groups[counter.pos].parentGroup = groups[j];
231
+ break;
232
+ }
233
+ }
234
+ }
235
+ }
236
+ //gdata.push( rData );
237
+ });
238
+ return this;
239
+ },
240
+ getGroupHeaderIndex: function (hid, clickedElem) {
241
+ var $self = this, self = $self[0], p = self.p,
242
+ $tr = clickedElem ?
243
+ $(clickedElem).closest("tr.jqgroup") :
244
+ $("#" + jgrid.jqID(hid)),
245
+ groupLevel = parseInt($tr.data("jqgrouplevel"), 10),
246
+ hPrefix = p.id + "ghead_" + groupLevel + "_";
247
+ if (isNaN(groupLevel) || !$tr.hasClass("jqgroup") || hid.length <= hPrefix.length) {
248
+ return -1;
249
+ }
250
+ return parseInt(hid.substring(hPrefix.length), 10);
251
+ },
252
+ groupingToggle: function (hid, clickedElem) {
253
+ this.each(function () {
254
+ var $t = this, p = $t.p, grp = p.groupingView,
255
+ minusClasses = grp.minusicon, plusClasses = grp.plusicon,
256
+ $tr = clickedElem ?
257
+ $(clickedElem).closest("tr.jqgroup") :
258
+ $("#" + jgrid.jqID(hid)),
259
+ getGroupHeaderIcon = function ($trElem) {
260
+ return $trElem.find(">td>span." + "tree-wrap");
261
+ },
262
+ itemGroupingLevel, iRowStart, showDataRowsOnExpending = true,
263
+ $groupIcon, collapsed = false, rowsToHideOrShow = [],
264
+ addToHideOrShow = function ($elem) {
265
+ var i, l = $elem.length;
266
+ for (i = 0; i < l; i++) {
267
+ rowsToHideOrShow.push($elem[i]);
268
+ }
269
+ },
270
+ num = parseInt($tr.data("jqgrouplevel"), 10);
271
+
272
+ if (p.frozenColumns && $tr.length > 0) {
273
+ // always get row from non-frozen column
274
+ iRowStart = $tr[0].rowIndex;
275
+ $tr = $($t.rows[iRowStart]);
276
+ $tr = $tr.add($t.grid.fbRows[iRowStart]);
277
+ }
278
+ $groupIcon = getGroupHeaderIcon($tr);
279
+
280
+ if (jgrid.hasAllClasses($groupIcon, minusClasses)) {
281
+ $groupIcon.removeClass(minusClasses).addClass(plusClasses);
282
+ collapsed = true;
283
+ } else {
284
+ $groupIcon.removeClass(plusClasses).addClass(minusClasses);
285
+ }
286
+ for ($tr = $tr.next(); $tr.length; $tr = $tr.next()) {
287
+ if ($tr.hasClass("jqfoot")) {
288
+ itemGroupingLevel = parseInt($tr.data("jqfootlevel"), 10);
289
+ if (collapsed) {
290
+ // hide all till the summary row of the same level.
291
+ // don't hide the summary row if grp.showSummaryOnHide === true
292
+ itemGroupingLevel = parseInt($tr.data("jqfootlevel"), 10);
293
+ if ((!grp.showSummaryOnHide && itemGroupingLevel === num) || itemGroupingLevel > num) {
294
+ addToHideOrShow($tr);
295
+ }
296
+ // stop hiding of rows if the footer of parent group are found
297
+ if (itemGroupingLevel < num) { break; }
298
+ } else {
299
+ if (itemGroupingLevel === num || (grp.showSummaryOnHide && itemGroupingLevel === num + 1)) {
300
+ addToHideOrShow($tr);
301
+ }
302
+ if (itemGroupingLevel <= num) { break; }
303
+ }
304
+ } else if ($tr.hasClass("jqgroup")) {
305
+ itemGroupingLevel = parseInt($tr.data("jqgrouplevel"), 10);
306
+ if (collapsed) {
307
+ // stop hiding of rows if the grouping header of the next group
308
+ // of the same (or higher) level are found
309
+ if (itemGroupingLevel <= num) { break; }
310
+
311
+ addToHideOrShow($tr);
312
+ } else {
313
+ // stop next grouping header of the same lever are found
314
+ if (itemGroupingLevel <= num) { break; }
315
+ if (itemGroupingLevel === num + 1) {
316
+ // one should display subgroupes in collaped form
317
+ getGroupHeaderIcon($tr).removeClass(minusClasses).addClass(plusClasses);
318
+ addToHideOrShow($tr);
319
+ }
320
+ // one need hide all data if subgroup is found
321
+ showDataRowsOnExpending = false;
322
+ }
323
+ } else { // data
324
+ // we set currently no information about the level of data
325
+ // se we use showDataRowsOnExpending variable which will be
326
+ // used during expanding of data
327
+ if (collapsed || showDataRowsOnExpending) {
328
+ // grouping data need be displayed only
329
+ // if the last level group with data (no subgroups)
330
+ // is expanded
331
+ addToHideOrShow($tr);
332
+ }
333
+ }
334
+ }
335
+ //$(rowsToHideOrShow)[collapsed ? "hide" : "show"]();
336
+ $(rowsToHideOrShow).css("display", collapsed ? "none" : "");
337
+ // fix position of elements of frozen divs
338
+ if (p.frozenColumns) {
339
+ $($t).triggerHandler("jqGridResetFrozenHeights", [{
340
+ header: {
341
+ resizeDiv: false,
342
+ resizedRows: {
343
+ iRowStart: -1, // -1 means don't recalculate heights or rows
344
+ iRowEnd: -1
345
+ }
346
+ },
347
+ resizeFooter: false,
348
+ body: {
349
+ resizeDiv: true,
350
+ resizedRows: {
351
+ iRowStart: iRowStart,
352
+ iRowEnd: ($tr.length ? $tr[0].rowIndex - 1 : -1)
353
+ }
354
+ }
355
+ }]);
356
+ }
357
+
358
+ // recalculate the width because vertical scrollbar can
359
+ // appears/disappears after expanding/collapsing
360
+ $t.fixScrollOffsetAndhBoxPadding();
361
+ $($t).triggerHandler("jqGridGroupingClickGroup", [hid, collapsed]);
362
+ if ($.jgrid.isFunction(p.onClickGroup)) {
363
+ p.onClickGroup.call($t, hid, collapsed);
364
+ }
365
+ });
366
+ return false;
367
+ },
368
+ groupingRender: function (grdata, rn) {
369
+ // input parameter grdata is array of strings, which are either opening <tr> element
370
+ // or full HTML fragment (outer HTML) of <td> element, inclusive the closing tag </td>
371
+ // or it contains the closing </tr> tag. The array grdata contains HTML fragments
372
+ // of all rows from the current group.
373
+ // The exact contain of the grdata is the following:
374
+ // "<tr ...>" - the opening tag of the first row of the group
375
+ // "<td>...</td>" - the irst cell of the first row
376
+ // "<td>...</td>" - the second cell of the first row
377
+ // ...
378
+ // "<td>...</td>" - the last cell of the first row
379
+ // "</tr>" - closing tag of the first row of the group
380
+ // "<tr ...>" - the opening tag of the second row of the group
381
+ // ... - all <td> elements of the second row
382
+ // "</tr>" - closing tag of the second row of the group
383
+ // ...
384
+ // "<tr ...>" - the opening tag of the last row of the group
385
+ // ... - all <td> elements of the last row
386
+ // "</tr>" - closing tag of the last row of the group
387
+ // The input parameter rn corresponds to p.rowNum in the most cases.
388
+ var str = "", $t = this[0], p = $t.p, toEnd = 0, cp = [],
389
+ grp = p.groupingView, sumreverse = $.makeArray(grp.groupSummary),
390
+ groupLength = grp.groupField.length, groups = grp.groups, colModel = p.colModel,
391
+ cmLength = colModel.length, page = p.page,
392
+ eventNames = "jqGridShowHideCol.groupingRender",
393
+ getGridRowStyles = function (classes) {
394
+ return base.getGuiStyles.call($t, "gridRow", classes);
395
+ },
396
+ jqgroupClass = getGridRowStyles("jqgroup ui-row-" + p.direction),
397
+ jqfootClass = getGridRowStyles("jqfoot ui-row-" + p.direction);
398
+
399
+ function buildSummaryTd(iEndGroup, offset, g, foffset, iconHtml) {
400
+ var fdata = groups[iEndGroup], i, groupCount, strTd = "", tmpdata, colSpan, align, vv,
401
+ madeHidden, nMakeHidden = 0, iSummary, summary, cm, iCol, summaryType, summaryTpl,
402
+ isColumnForIconNotFound = true;
403
+
404
+ if (offset !== 0 && groups[iEndGroup].idx !== 0) {
405
+ for (i = iEndGroup; i >= 0; i--) {
406
+ if (groups[i].idx === groups[iEndGroup].idx - offset) {
407
+ fdata = groups[i];
408
+ break;
409
+ }
410
+ }
411
+ }
412
+ groupCount = fdata.cnt;
413
+
414
+ for (iCol = (iconHtml === undefined ? foffset : 0); iCol < cmLength; iCol++) {
415
+ tmpdata = "&#160;";
416
+ cm = colModel[iCol];
417
+ for (iSummary = 0; iSummary < fdata.summary.length; iSummary++) {
418
+ summary = fdata.summary[iSummary];
419
+ summaryType = Array.isArray(summary.st) ? summary.st[g.idx] : summary.st;
420
+ summaryTpl = Array.isArray(cm.summaryTpl) ? cm.summaryTpl[g.idx] : (cm.summaryTpl || "{0}");
421
+ if (summary.nm === cm.name) {
422
+ if (typeof summaryType === "string" && summaryType.toLowerCase() === "avg") {
423
+ if (summary.sd && summary.vd) {
424
+ summary.v = (summary.v / summary.vd);
425
+ } else if (summary.v && groupCount > 0) {
426
+ summary.v = (summary.v / groupCount);
427
+ }
428
+ }
429
+ try {
430
+ summary.groupCount = fdata.cnt;
431
+ summary.groupIndex = fdata.dataIndex;
432
+ summary.groupValue = fdata.value;
433
+ vv = $t.formatter("", summary.v, iCol, summary);
434
+ } catch (ef) {
435
+ vv = summary.v;
436
+ }
437
+ tmpdata = jgrid.format(summaryTpl, vv);
438
+ if (cm.summaryFormat) {
439
+ tmpdata = cm.summaryFormat.call($t, g, tmpdata, vv, cm, summary);
440
+ }
441
+ break;
442
+ }
443
+ }
444
+ colSpan = false;
445
+ align = false;
446
+ if (iconHtml !== undefined && isColumnForIconNotFound) {
447
+ if (!cm.hidden) {
448
+ // the icon need be placed in the first non-hidden column
449
+ tmpdata = iconHtml;
450
+ isColumnForIconNotFound = false;
451
+ if (foffset > 1) {
452
+ colSpan = true;
453
+ // if foffset > 1 then the next foffset-1 non-hidden columns
454
+ // must be displayed hidden.
455
+ nMakeHidden = foffset - 1;
456
+ }
457
+ // the icon in the column header must be left aligned
458
+ align = cm.align; // save the original align value
459
+ cm.align = p.direction === "rtl" ? "right" : "left";
460
+ grp.iconColumnName = cm.name;
461
+ }
462
+ }
463
+ madeHidden = false;
464
+ if (nMakeHidden > 0 && !cm.hidden && tmpdata === "&#160;") {
465
+ madeHidden = true;
466
+ if (align) {
467
+ cm.align = align; // restore the original align value
468
+ }
469
+ nMakeHidden--;
470
+ continue;
471
+ }
472
+ strTd += "<td role='gridcell' " + $t.formatCol(iCol, 1, "") +
473
+ (colSpan ? "colspan='" + foffset + "'" : "") + ">" + tmpdata + "</td>";
474
+ colSpan = false;
475
+ if (align) {
476
+ cm.align = align; // restore the original align value
477
+ }
478
+ if (madeHidden) {
479
+ cm.hidden = false;
480
+ nMakeHidden--;
481
+ }
482
+ }
483
+ return strTd;
484
+ }
485
+
486
+ // TODO: allow groupField be from additionalProperties
487
+ // and not only from colModel
488
+ $.each(colModel, function (i, n) {
489
+ var iGroup;
490
+ for (iGroup = 0; iGroup < groupLength; iGroup++) {
491
+ if (grp.groupField[iGroup] === n.name) {
492
+ cp[iGroup] = i;
493
+ break;
494
+ }
495
+ }
496
+ });
497
+
498
+ sumreverse.reverse();
499
+ $.each(groups, function (i, n) {
500
+ var gv, clid = p.id + "ghead_" + n.idx, hid = clid + "_" + i,
501
+ groupCollapse = $.jgrid.isFunction(grp.groupCollapse) ?
502
+ grp.groupCollapse.call($t, { group: n, rowid: hid }) :
503
+ grp.groupCollapse,
504
+ jj, kk, ik, colspan = 1, offset = 0, sgr, gg, end, grpTextStr,
505
+ leaf = groupLength - 1 === n.idx,
506
+ parentGroupCollapse = n.parentGroup != null ?
507
+ n.parentGroup.collapsed :
508
+ false,
509
+ icon = "<span style='cursor:pointer;margin-" +
510
+ (p.direction === "rtl" ? "right:" : "left:") + (n.idx * 12) +
511
+ "px;' class='" + grp.commonIconClass + " " +
512
+ (groupCollapse ? grp.plusicon : grp.minusicon) + " tree-wrap'></span>";
513
+ if (grp._locgr) {
514
+ if (!(n.startRow + n.cnt > (page - 1) * rn && n.startRow < page * rn)) {
515
+ return true;
516
+ }
517
+ }
518
+ if (parentGroupCollapse) {
519
+ groupCollapse = true;
520
+ }
521
+ if (groupCollapse !== undefined) {
522
+ n.collapsed = groupCollapse;
523
+ }
524
+ toEnd++;
525
+ try {
526
+ if (Array.isArray(grp.formatDisplayField) && $.jgrid.isFunction(grp.formatDisplayField[n.idx])) {
527
+ n.displayValue = grp.formatDisplayField[n.idx].call($t, n.displayValue, n.value, colModel[cp[n.idx]], n.idx, n, i);
528
+ gv = n.displayValue;
529
+ } else {
530
+ gv = $t.formatter(hid, n.displayValue, cp[n.idx], n.value, n);
531
+ }
532
+ } catch (egv) {
533
+ gv = n.displayValue;
534
+ }
535
+ str += "<tr id='" + hid + "' data-jqgrouplevel='" + n.idx + "' " +
536
+ (groupCollapse && parentGroupCollapse ? "style='display:none;' " : "") +
537
+ "role='row' class='" + jqgroupClass + " " + clid + "'>";
538
+ grpTextStr = $.jgrid.isFunction(grp.groupText[n.idx]) ?
539
+ grp.groupText[n.idx].call($t, gv, n.cnt, n.summary) :
540
+ jgrid.template(grp.groupText[n.idx], gv, n.cnt, n.summary);
541
+ if (typeof grpTextStr !== "string" && typeof grpTextStr !== "number") {
542
+ grpTextStr = gv;
543
+ }
544
+ if (grp.groupSummaryPos[n.idx] === "header") {
545
+ colspan = 1;
546
+ if (colModel[0].name === "cb" || colModel[1].name === "cb") {
547
+ colspan++;
548
+ }
549
+ if (colModel[0].name === "subgrid" || colModel[1].name === "subgrid") {
550
+ colspan++;
551
+ }
552
+ str += buildSummaryTd(i, 0, n, colspan, icon + "<span class='cell-wrapper'>" + grpTextStr + "</span>");
553
+ } else {
554
+ str += "<td role='gridcell' style='padding-left:" + (n.idx * 12) + "px;'" +
555
+ " colspan='" + cmLength + "'>" + icon + grpTextStr + "</td>";
556
+ }
557
+ str += "</tr>";
558
+ if (leaf) {
559
+ gg = groups[i + 1];
560
+ sgr = n.startRow;
561
+ end = gg !== undefined ? gg.startRow : groups[i].startRow + groups[i].cnt;
562
+ if (grp._locgr) {
563
+ offset = (page - 1) * rn;
564
+ if (offset > n.startRow) {
565
+ sgr = offset;
566
+ }
567
+ }
568
+ for (kk = sgr; kk < end; kk++) {
569
+ if (!grdata[kk - offset]) {
570
+ break;
571
+ }
572
+ str += grdata[kk - offset].join("");
573
+ }
574
+ if (grp.groupSummaryPos[n.idx] !== "header") {
575
+ if (gg !== undefined) {
576
+ for (jj = 0; jj < grp.groupField.length; jj++) {
577
+ if (gg.dataIndex === grp.groupField[jj]) {
578
+ break;
579
+ }
580
+ }
581
+ toEnd = grp.groupField.length - jj;
582
+ }
583
+ for (ik = 0; ik < toEnd; ik++) {
584
+ if (!sumreverse[ik]) {
585
+ continue;
586
+ }
587
+ str += "<tr data-jqfootlevel='" + (n.idx - ik) +
588
+ (groupCollapse && ((n.idx - ik) > 0 || !grp.showSummaryOnHide) ? "' style='display:none;'" : "'") +
589
+ " role='row' class='" + jqfootClass + "'>";
590
+ str += buildSummaryTd(i, ik, groups[n.idx - ik], 0);
591
+ str += "</tr>";
592
+ }
593
+ toEnd = jj;
594
+ }
595
+ }
596
+ });
597
+ this.off(eventNames)
598
+ .on(eventNames, function () { //e, show, cmName, iColShow) {
599
+ // TODO fix the code after resorting columns
600
+ var iCol = p.iColByName[grp.iconColumnName], iRow, row, iColNew, i; //$cellData;
601
+ if ($.inArray("header", grp.groupSummaryPos) >= 0) {
602
+ for (i = 0; i < colModel.length; i++) {
603
+ if (!colModel[i].hidden) {
604
+ iColNew = i;
605
+ break;
606
+ }
607
+ }
608
+ if (iColNew === undefined || iCol === iColNew) { return; }
609
+
610
+ for (iRow = 0; iRow < $t.rows.length; iRow++) {
611
+ row = $t.rows[iRow];
612
+ if ($(row).hasClass("jqgroup")) {
613
+ /*$cellData = $(row.cells[iCol]).children(".cell-wrapper").detach();
614
+ $.wrapInner(row.cells[iColNew], function () {//"<span class='cell-wrapper'></span>");
615
+ return "<span class='cell-wrapper'>" + this.nodeValue + "</span>";
616
+ });
617
+ row.cells[iColNew]
618
+ $cellData = $(row.cells[iCol]).children(".cell-wrapper").detach();
619
+ $(row.cells[iCol]).html($(row.cells[iCol]).children("").html());*/
620
+ $(row.cells[iColNew]).html(row.cells[iCol].innerHTML);
621
+ $(row.cells[iCol]).html("&nbsp;");
622
+ }
623
+ }
624
+ grp.iconColumnName = colModel[iColNew].name;
625
+ }
626
+ });
627
+ return str;
628
+ },
629
+ groupingGroupBy: function (name, options) {
630
+ return this.each(function () {
631
+ var $t = this, p = $t.p, grp = p.groupingView, i, cm;
632
+ if (typeof name === "string") {
633
+ name = [name];
634
+ }
635
+ p.grouping = true;
636
+ grp._locgr = false;
637
+ //Set default, in case visibilityOnNextGrouping is undefined
638
+ if (grp.visibiltyOnNextGrouping === undefined) {
639
+ grp.visibiltyOnNextGrouping = [];
640
+ }
641
+ // show previous hidden groups if they are hidden and weren't removed yet
642
+ for (i = 0; i < grp.groupField.length; i++) {
643
+ cm = p.colModel[p.iColByName[grp.groupField[i]]];
644
+ if (!grp.groupColumnShow[i] && grp.visibiltyOnNextGrouping[i] && cm != null && cm.hidden === true) {
645
+ base.showCol.call($($t), grp.groupField[i]);
646
+ }
647
+ }
648
+ // set visibility status of current group columns on next grouping
649
+ for (i = 0; i < name.length; i++) {
650
+ grp.visibiltyOnNextGrouping[i] = $(p.idSel + "_" + jgrid.jqID(name[i])).is(":visible");
651
+ }
652
+ p.groupingView = $.extend(p.groupingView, options || {});
653
+ grp.groupField = name;
654
+ $($t).trigger("reloadGrid");
655
+ });
656
+ },
657
+ groupingRemove: function (current) {
658
+ return this.each(function () {
659
+ var $t = this, p = $t.p, tbody = $t.tBodies[0], grp = p.groupingView, i;
660
+ if (current === undefined) {
661
+ current = true;
662
+ }
663
+ p.grouping = false;
664
+ if (current === true) {
665
+ // show previous hidden groups if they are hidden and weren't removed yet
666
+ for (i = 0; i < grp.groupField.length; i++) {
667
+ if (!grp.groupColumnShow[i] && grp.visibiltyOnNextGrouping[i]) {
668
+ base.showCol.call($($t), grp.groupField);
669
+ }
670
+ }
671
+ $("tr.jqgroup, tr.jqfoot", tbody).remove();
672
+ $("tr.jqgrow", tbody).filter(":hidden").show();
673
+ } else {
674
+ $($t).trigger("reloadGrid");
675
+ }
676
+ });
677
+ },
678
+ groupingCalculations: {
679
+ handler: function (fn, v, field, round, roundType, rc) {
680
+ var funcs = {
681
+ sum: function () {
682
+ return parseFloat(v || 0) + parseFloat((rc[field] || 0));
683
+ },
684
+
685
+ min: function () {
686
+ if (v === "") {
687
+ return parseFloat(rc[field] || 0);
688
+ }
689
+ return Math.min(parseFloat(v), parseFloat(rc[field] || 0));
690
+ },
691
+
692
+ max: function () {
693
+ if (v === "") {
694
+ return parseFloat(rc[field] || 0);
695
+ }
696
+ return Math.max(parseFloat(v), parseFloat(rc[field] || 0));
697
+ },
698
+
699
+ count: function () {
700
+ if (v === "") {
701
+ v = 0;
702
+ }
703
+ if (rc.hasOwnProperty(field)) {
704
+ return v + 1;
705
+ }
706
+ return 0;
707
+ },
708
+
709
+ avg: function () {
710
+ // the same as sum, but at end we divide it
711
+ // so use sum instead of duplicating the code (?)
712
+ return funcs.sum();
713
+ }
714
+ },
715
+ res,
716
+ mul;
717
+
718
+ if (!funcs[fn]) {
719
+ throw ("jqGrid Grouping No such method: " + fn);
720
+ }
721
+ res = funcs[fn]();
722
+
723
+ if (round != null) {
724
+ if (roundType === "fixed") {
725
+ res = res.toFixed(round);
726
+ } else {
727
+ mul = Math.pow(10, round);
728
+ res = Math.round(res * mul) / mul;
729
+ }
730
+ }
731
+
732
+ return res;
733
+ }
734
+ }
735
+ });
736
+ // end module grid.grouping
737
+ }));