<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>jQuery Grid Plugin - jqGrid - Topic: more bug fixes and other suggestions found with respect of JSLint tool</title>
	<link>http://www.trirand.com/blog/?page_id=393/bugs/more-bug-fixes-and-other-suggestions-found-with-respect-of-jslint-tool</link>
	<description><![CDATA[Grid plugin]]></description>
	<generator>Simple:Press Version 5.7.5.3</generator>
	<atom:link href="http://www.trirand.com/blog/?page_id=393/bugs/more-bug-fixes-and-other-suggestions-found-with-respect-of-jslint-tool/rss" rel="self" type="application/rss+xml" />
        <item>
        	<title>OlegK on more bug fixes and other suggestions found with respect of JSLint tool</title>
        	<link>http://www.trirand.com/blog/?page_id=393/bugs/more-bug-fixes-and-other-suggestions-found-with-respect-of-jslint-tool#p16234</link>
        	<category>Bugs</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/bugs/more-bug-fixes-and-other-suggestions-found-with-respect-of-jslint-tool#p16234</guid>
        	        	<description><![CDATA[<p><!--  /* Font Definitions */  @font-face 	{font-family:"MS Mincho"; 	panose-1:2 2 6 9 4 2 5 8 3 4;} @font-face 	{font-family:"MS Mincho"; 	panose-1:2 2 6 9 4 2 5 8 3 4;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4;} @font-face 	{font-family:"\@MS Mincho"; 	panose-1:2 2 6 9 4 2 5 8 3 4;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif";} .MsoChpDefault 	{font-family:"Calibri","sans-serif";} .MsoPapDefault 	{margin-bottom:10.0pt; 	line-height:115%;} @page WordSection1 	{size:595.3pt 841.9pt; 	margin:70.85pt 70.85pt 2.0cm 70.85pt;} div.WordSection1 	{page:WordSection1;} --></p>
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hello Tonny,</span></p>
<p class="MsoNormal"><span lang="EN-US">because jqGrid is the main and most important control in my last project I decide to spend more time in the analyze of JSLint suggestions to jqGrid code.</span></p>
<p class="MsoNormal"><span lang="EN-US">Now I place without any comments different suggestions unsorted. Important real bug fixes are mixed below with less important performance improvements and style changes. I bag pardon of all who read my bad English below.</span></p>
<p class="MsoNormal"><span lang="EN-US">But, before all, one general remark: JSLint suggest to use &#8216;</span><span style="font-size:10.0pt;line-height: 115%;font-family:" lang="EN-US">!==</span><span lang="EN-US">&#8217; instead of &#8216;!=&#8217; and &#8216;===&#8217; instead of &#8216;!=&#8217; to suppress possible type conversion during compare values and to have strange effects with undefined variables. Another general suggestion is the usage of {...} block in all &#8216;if&#8217; statements. It seems to me, that you hold the role currently, but in some most old places there is no {...} block. What do you think about inserting {...} block everywhere in the code.</span></p>
<p class="MsoNormal"><span lang="EN-US">----------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 267 of <strong>grid.celledit.js</strong>:</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">window.setTimeout(<span style="color:blue">function</span>() { info_dialog($.jgrid.errors.errcap, v + <span style="color:#A31515">" "</span> + cv[1], $.jgrid.edit.bClose) }, 100);</span></p>
<p class="MsoNormal"><span lang="EN-US">hat missing semicolon and should be replaced to</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">window.setTimeout(<span style="color:blue">function</span>() { info_dialog($.jgrid.errors.errcap, v + <span style="color:#A31515">" "</span> + cv[1], $.jgrid.edit.bClose); }, 100);</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 290</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> ($.isFunction($.fn[<span style="color:#A31515">&#39;datepicker&#39;</span>])) {</span></p>
<p class="MsoNormal"><span lang="EN-US">Should be better rewritten as</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> ($.isFunction($.fn.datepicker)) {</span></p>
<p class="MsoNormal"><span lang="EN-US">Line 420 and 442 has unnecessary semicolon at the end of line.</span></p>
<p class="MsoNormal"><span lang="EN-US">Line 474</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">res[<span style="color:#A31515">"id"</span>] = <span style="color:blue">this</span>.id;</span></p>
<p class="MsoNormal"><span lang="EN-US">can be better rewritten as</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">res.id = <span style="color:blue">this</span>.id;</span></p>
<p class="MsoNormal"><span lang="EN-US">-------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">File <strong>grid.common.js</strong></span></p>
<p class="MsoNormal"><span lang="EN-US">Function </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">DaysArray</span><span lang="EN-US"> define in the line 591 and used in the line 557 should be better renamed to </span><span style="font-size:10.0pt;line-height:115%; font-family:" lang="EN-US">daysArray</span><span lang="EN-US"> to hold the name conversion.</span></p>
<p class="MsoNormal"><span lang="EN-US">Line 602</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> (val.match(/^s+$/) &#124;&#124; val === <span style="color:#A31515">""</span>) {</span></p>
<p class="MsoNormal"><span lang="EN-US">of the function </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">isEmpty</span><span lang="EN-US"> should better fixed to </span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> (val !== <span style="color: blue;">null</span> &#124;&#124; val.match(/^s+$/) &#124;&#124; val === <span style="color: #a31515;">""</span>) {</span></p>
<p class="MsoNormal"><span lang="EN-US">Function </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">isArray</span><span lang="EN-US"> from the lines 244-250 are used only in the line 1308 of grid.formedit.js. In grid.formedit.js </span><span style="font-size:10.0pt;line-height: 115%;font-family:" lang="EN-US">isArray</span><span lang="EN-US"> should be replaced to </span><span style="font-size:10.0pt;line-height:115%; font-family:" lang="EN-US">jQuery.isArray</span><span lang="EN-US"> like in all other places of jqGrid and the function </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">isArray</span><span lang="EN-US"> removed from the lines 244-250 of grid.common.js. If you decide to hold </span><span style="font-size:10.0pt;line-height:115%; font-family:" lang="EN-US">isArray</span><span lang="EN-US"> in grid.common.js, it should be better fixed in the line 245 from</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> (obj.constructor.toString().indexOf(<span style="color:#A31515">"Array"</span>) == -1) {</span></p>
<p class="MsoNormal"><span lang="EN-US">To</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> (obj &#38;&#38; obj.constructor.toString().indexOf(<span style="color:#A31515">"Array"</span>) == -1) {</span></p>
<p class="MsoNormal"><span lang="EN-US">-------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">The lines 79-80 of the file <strong>grid.custom.js</strong></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">$(newtable).attr({id:defgrid[<span style="color: #A31515">&#39;id&#39;</span>]});<br /> newtable.className = defgrid[<span style="color:#A31515">&#39;cl&#39;</span>];</span></p>
<p class="MsoNormal"><span lang="EN-US">could be rewritten to</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">$(newtable).attr({id:defgrid.id});<br /> newtable.className = defgrid.cl;</span></p>
<p class="MsoNormal"><span lang="EN-US">In the line 95 </span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">$t = <span style="color:blue">this</span>;</span></p>
<p class="MsoNormal"><span lang="EN-US">Would be better to insert &#8220;var&#8221;:</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">var</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> $t = <span style="color: blue;">this</span>;</span></p>
<p class="MsoNormal"><strong><span lang="EN-US">In the line 106</span></strong></p>
<p class="MsoNormal"><strong><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span></strong><strong><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">($t.p.footerrow) {$(<span style="color:#A31515">".ui-jqgrid-sdiv"</span>,<span style="color: #a31515;">"#gbox_"</span>+$s.p.id).slideUp(<span style="color: #a31515;">"fast"</span>);}</span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US">there is a bug with using undefined variable $s. It should be fixed to $t.</span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US">The line 112</span></strong></p>
<p class="MsoNormal"><strong><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span></strong><strong><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">(ts.p.toppager) {$(ts.p.toppager).slideDown(<span style="color:#A31515">"fast"</span>);}</span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US">Should be changed to</span></strong></p>
<p class="MsoNormal"><strong><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span></strong><strong><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">($t.p.toppager) {$($t.p.toppager).slideDown(<span style="color:#A31515">"fast"</span>);}</span></strong></p>
<p class="MsoNormal"><span lang="EN-US">switch from the line 263</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">switch</span><span style="font-size:8.0pt; font-family:" lang="EN-US"> (<span style="color:blue">this</span>.stype) {</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;&#160;&#160; case</span><span style="font-size: 8.0pt;font-family:" lang="EN-US"> <span style="color:#A31515">&#39;select&#39;</span> :</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;&#160;&#160;&#160;&#160;&#160; ...</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;&#160;&#160; default</span><span style="font-size: 8.0pt;font-family:" lang="EN-US">:</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;&#160;&#160;&#160;&#160;&#160; ...</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;</span></p>
<p class="MsoNormal"><span lang="EN-US">can be better rewritten to </span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> (<span style="color: blue;">this</span>.stype === <span style="color:#A31515">&#39;select&#39;</span>) {<br /> &#160;&#160;&#160; ...<br /> } <span style="color:blue">else</span> {<br /> &#160;&#160;&#160; ...<br /> }</span></p>
<p class="MsoNormal"><span lang="EN-US">In the line 422: the body of a &#8216;for&#8217; in should be wrapped in an &#8216;if&#8217; statement to filter unwanted properties from the prototype. All body or for could be placed inside of body of following &#8216;if&#8217; statement:</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> (oSv.hasOwnProperty(key)) {<br /> &#160;&#160;&#160; ...<br /> }</span></p>
<p class="MsoNormal"><span lang="EN-US">The same problem exists in the &#8216;for&#8217; loop in the line 740.</span></p>
<p class="MsoNormal"><span lang="EN-US">Variable <em>ov</em> in the line 424 and later are used out of scope of declaration. So it would be better to move declaration of <em>ov</em> variable from the line 413 to the line 409 or 410. (To be exact, it is not a real bug in JavaScript code. It is known, that a variable declared in a block is visible everywhere in the function containing the block. But to be more close to classical computer languages and to make the code more readable it would be much better to hold role of scope visibility nevertheless.)</span></p>
<p class="MsoNormal"><span lang="EN-US">The same problem exists in the line 741. Declaration of <em>ov</em> variable could be moved from the line 732 to the line 728.</span></p>
<p class="MsoNormal"><span lang="EN-US">The variable td1 defined in the line 377 are not used.</span></p>
<p class="MsoNormal"><span lang="EN-US">----------------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">In the file <strong>grid.formedit.js</strong> there is also some problems.</span></p>
<p class="MsoNormal"><span lang="EN-US">First of all, the line 102-105 looks like a little strange. To fix the problem one should remove declaration of variable </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">searchable</span><span lang="EN-US"> from the line 100 and insert &#8220;var &#8221; at the beginning of the line 102. Then lines</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">searchable = (<span style="color:blue">typeof</span> v.search === <span style="color:#A31515">&#39;undefined&#39;</span>) ?&#160; <span style="color:blue">true</span>: v.search ,</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">hidden = (v.hidden === <span style="color:blue">true</span>),</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">soptions = $.extend({}, {text: colNames[i], itemval: v.index &#124;&#124; v.name}, <span style="color:blue">this</span>.searchoptions),</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">ignoreHiding = (soptions.searchhidden === <span style="color: blue;">true</span>);</span></p>
<p class="MsoNormal"><span lang="EN-US">Will be look like</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">var</span><span style="font-size:8.0pt; font-family:" lang="EN-US"> searchable = (<span style="color:blue">typeof</span> v.search === <span style="color:#A31515">&#39;undefined&#39;</span>) ?&#160; <span style="color: blue;">true</span>: v.search ,</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;&#160;&#160; hidden = (v.hidden === <span style="color:blue">true</span>),</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;&#160;&#160; soptions = $.extend({}, {text: colNames[i], itemval: v.index &#124;&#124; v.name}, <span style="color:blue">this</span>.searchoptions),</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">&#160;&#160;&#160; ignoreHiding = (soptions.searchhidden === <span style="color: blue;">true</span>);</span></p>
<p class="MsoNormal"><span lang="EN-US">A close problem exist in lines 681-684</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">var</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> opt = $.extend({}, <span style="color:blue">this</span>.editoptions &#124;&#124; {} ,{id:nm,name:nm});<br /> frmopt = $.extend({}, {elmprefix:<span style="color:#A31515">&#39;&#39;</span>,elmsuffix:<span style="color: #a31515;">&#39;&#39;</span>,rowabove:<span style="color:blue">false</span>,rowcontent:<span style="color: #a31515;">&#39;&#39;</span>}, <span style="color:blue">this</span>.formoptions &#124;&#124; {}),<br /> rp = parseInt(frmopt.rowpos) &#124;&#124; cnt+1,<br /> cp = parseInt((parseInt(frmopt.colpos) &#124;&#124; 1)*2);</span></p>
<p class="MsoNormal"><span lang="EN-US">Which can be fixed with replacing &#8216;;&#8217; to &#8216;,&#8217; at the end of line 681:</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">var</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> opt = $.extend({}, <span style="color:blue">this</span>.editoptions &#124;&#124; {} ,{id:nm,name:nm}),<br /> &#160;&#160;&#160; frmopt = $.extend({}, {elmprefix:<span style="color:#A31515">&#39;&#39;</span>,elmsuffix:<span style="color: #a31515;">&#39;&#39;</span>,rowabove:<span style="color:blue">false</span>,rowcontent:<span style="color: #a31515;">&#39;&#39;</span>}, <span style="color:blue">this</span>.formoptions &#124;&#124; {}),<br /> &#160;&#160;&#160; rp = parseInt(frmopt.rowpos) &#124;&#124; cnt+1,<br /> &#160;&#160;&#160; cp = parseInt((parseInt(frmopt.colpos) &#124;&#124; 1)*2);</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 1467-1468</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">vwidth = window.innerWidth,<br /> vheight = window.innerHeight</span></p>
<p class="MsoNormal"><span lang="EN-US">Should be replaced to</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">vwidth = window.innerWidth;<br /> vheight = window.innerHeight;</span></p>
<p class="MsoNormal"><span lang="EN-US">The same problem in the lines 1470-1471</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">vwidth = document.documentElement.clientWidth,<br /> vheight = document.documentElement.clientHeight</span></p>
<p class="MsoNormal"><span lang="EN-US">could be fixed to</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">vwidth = document.documentElement.clientWidth;<br /> vheight = document.documentElement.clientHeight;</span></p>
<p class="MsoNormal"><span lang="EN-US">Line 42 has following error: &#8220;Function statements cannot be placed in blocks. Use a function expression or move the statement to the top of the outer function.&#8221; Function applyDefaultFilters declared in the lines 42-75 are used only in 170. Either one should move declaration of function applyDefaultFilters in the other place or insert body of this function in the line 170.</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 53, 57, 58, 60, 62, 63, 65 should be better rewritten in dot notation. For example</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">filterSettings[<span style="color:#A31515">&#39;sFilter&#39;</span>]</span></p>
<p class="MsoNormal"><span lang="EN-US">Should be replaced to</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">filterSettings.sFilter</span></p>
<p class="MsoNormal"><span lang="EN-US">In the lines 63, 69, 792, 1147, 1328, 1399 and 1436 have missing semicolon.</span></p>
<p class="MsoNormal"><span lang="EN-US">The scope of visibility of the variable </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">fid</span><span lang="EN-US"> defined in the line 77 ended in the line 185 und it&#8217;s usage in the lines 199, 212, 225, 226,228 and 230 are illegal. To fix this problem, the line 77 could be moved for example in the line after line 39.</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 80, 172, 173, 297, 544, 561, 711, 1123, 1140, 1144, 1232, 1240, 1267 and 1420 have unnecessary semicolon.</span></p>
<p class="MsoNormal"><span lang="EN-US">The &#8216;for&#8217; loop from the line 136 should be modified so, that it&#8217;s body be wrapped in an if statement to filter unwanted properties from the prototype. I mean to insert an additional if like</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> (eov.hasOwnProperty(key)) {<br /> &#160;&#160;&#160; ...<br /> }</span></p>
<p class="MsoNormal"><span lang="EN-US">The same problem exists in the loop from the line 851.</span></p>
<p class="MsoNormal"><span lang="EN-US">----------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">In the file <strong>grid.import.js</strong>.</span></p>
<p class="MsoNormal"><span lang="EN-US">Declaration of variable </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">jstr</span><span lang="EN-US"> in the line 35 should be removed, because it is already defined in the previous line.</span></p>
<p class="MsoNormal"><span lang="EN-US">Variable </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">jstr1</span><span lang="EN-US"> used out of scope in lines 42, 44, 46. To fix the problem one can move declaration of from the line 36 in the line 34.</span></p>
<p class="MsoNormal"><span lang="EN-US">The body of a &#8216;for&#8217; loop from the line 36 should be wrapped in an &#8216;if&#8217; statement to filter unwanted properties from the prototype.</span></p>
<p class="MsoNormal"><span lang="EN-US">After all these changes lines 34-36</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">var</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> jstr = xmlJsonClass.xml2json(cnfg,<span style="color:#A31515">" "</span>);<br /> <span style="color:blue">var</span> jstr = $.jgrid.parse(jstr);<br /> <span style="color:blue">for</span>(<span style="color:blue">var</span> key <span style="color: blue;">in</span> jstr) { <span style="color:blue">var</span> jstr1=jstr[key];}</span></p>
<p class="MsoNormal"><span lang="EN-US">Will be looks so:</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">var</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> jstr1, jstr = xmlJsonClass.xml2json(cnfg, <span style="color:#A31515">" "</span>);<br /> jstr = $.jgrid.parse(jstr);<br /> <span style="color:blue">for</span> (<span style="color:blue">var</span> key <span style="color: blue;">in</span> jstr) { <span style="color:blue">if</span> (jstr.hasOwnProperty(key)) { jstr1 = jstr[key]; }}</span></p>
<p class="MsoNormal"><span lang="EN-US">The body of &#8216;for&#8217; loop from the line 153 has the same problem and the loop body could be placed inside of the &#8216;if&#8217; body</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> (gprm.treeReader.hasOwnProperty(key)) {<br /> &#160;&#160;&#160; ...<br /> }</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 166</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">ret=ret.replace(/}]}<span style="color:#A31515">"/,&#39;}]}&#39;);</span></span></p>
<p class="MsoNormal"><span lang="EN-US">contained unescaped character &#39;]&#39; and two unescaped characters &#39;}&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 182</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">$t = <span style="color:blue">this</span>;</span></p>
<p class="MsoNormal"><span lang="EN-US">Should be fixed to</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">var</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> $t = <span style="color: blue;">this</span>;</span></p>
<p class="MsoNormal"><span lang="EN-US">------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">File <strong>grid.inlinedit.js</strong>:</span></p>
<p class="MsoNormal"><span lang="EN-US">In the line 54 </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">svr[<span style="color: #a31515;">&#39;id&#39;</span>]</span><span lang="EN-US"> should be better rewritten as </span><span style="font-size:10.0pt;line-height:115%; font-family:" lang="EN-US">svr.id</span><span lang="EN-US">. In the line 226 </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">$.fn[<span style="color: #a31515;">&#39;datepicker&#39;</span>]</span><span lang="EN-US"> should be rewritten as </span><span style="font-size:10.0pt;line-height:115%; font-family:" lang="EN-US">$.fn.datepicker</span><span lang="EN-US">.</span></p>
<p class="MsoNormal"><span lang="EN-US">Line 196 contains unnecessary semicolon.</span></p>
<p class="MsoNormal"><span lang="EN-US">-----------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">File <strong>grid.jqueryui.js</strong>:</span></p>
<p class="MsoNormal"><span lang="EN-US">There are missing semicolon in the lines 15, 31, 42, 74, 87, 100, 120, 174, 175, 291, 303 and 448 and unnecessary semicolon in the lines 51 and 450.</span></p>
<p class="MsoNormal"><span lang="EN-US">The body of a &#8216;for&#8217; from the line 384 should be wrapped in an &#8216;if&#8217; statement to filter unwanted properties from the prototype.</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 476</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">var</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> optstest = <span style="color: #a31515;">"{&#39;\#gview_"</span>+$t.p.id+<span style="color: #a31515;">" .ui-jqgrid-bdiv\&#39;:true,&#39;"</span> +opts._alsoResize_+<span style="color:#A31515">"&#39;:true}"</span>;</span></p>
<p class="MsoNormal"><span lang="EN-US">contains bad escapement.</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 262, 314, 456 should be better rewritten in dot notation.</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 201-204</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> (opts.classname) {<br /> &#160;&#160;&#160; selector.addClass(classname);<br /> &#160;&#160;&#160; select.addClass(classname);<br /> }</span></p>
<p class="MsoNormal"><span lang="EN-US">Should be fixed to</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">if</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> (opts.classname) {<br /> &#160;&#160;&#160; selector.addClass(opts.classname);<br /> &#160;&#160;&#160; select.addClass(opts.classname);<br /> }</span></p>
<p class="MsoNormal"><span lang="EN-US">In the line 477 it would be probably better replace </span><span style="font-size:10.0pt;line-height:115%; font-family:" lang="EN-US">eval</span><span lang="EN-US"> function to safer version.</span></p>
<p class="MsoNormal"><span lang="EN-US">--------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">File <strong>grid.loader.js</strong>:</span></p>
<p class="MsoNormal"><span lang="EN-US">In the lines 45 and 46 unnecessary semicolon should be removed.</span></p>
<p class="MsoNormal"><span lang="EN-US">-------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">File <strong>grid.setcolumns.js</strong>:</span></p>
<p class="MsoNormal"><span lang="EN-US">In the lines 54 and 76 one should replace</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">for</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">(i=0;...</span></p>
<p class="MsoNormal"><span lang="EN-US">with</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">for</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">(<span style="color: blue;">var</span> i=0;...</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 60 has missing semicolon.</span></p>
<p class="MsoNormal"><span lang="EN-US">-------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">File <strong>grid.subgrid.js</strong>:</span></p>
<p class="MsoNormal"><span lang="EN-US">In the line 19 one should replace</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">for</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">(i=0;...</span></p>
<p class="MsoNormal"><span lang="EN-US">with</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">for</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">(<span style="color: blue;">var</span> i=0;...</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 82</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">dp[ts.p.prmNames[<span style="color:#A31515">&#39;subgridid&#39;</span>]]=sid;</span></p>
<p class="MsoNormal"><span lang="EN-US">should be better rewritten to</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">dp[ts.p.prmNames.subgridid]=sid;</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 70 contain unnecessary semicolon.</span></p>
<p class="MsoNormal"><span lang="EN-US">-------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">File <strong>grid.tbltogrid.js</strong>:</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 101 contains definition of &#39;a&#39; which is already defined in the line 84. It would be better to move declaration of &#39;a&#39; from the line 84 to a line before &#39;for&#39; loop (before line 84).</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 105 contain unnecessary semicolon.</span></p>
<p class="MsoNormal"><span lang="EN-US">-------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">File <strong>grid.treegrid.js</strong>:</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 277</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">len = result.length;</span></p>
<p class="MsoNormal"><span lang="EN-US">Should be replaced with the line</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">var</span><span style="font-size: 8pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US"> len = result.length;</span></p>
<p class="MsoNormal"><span lang="EN-US">The body of a &#8216;for&#8217; from the line 123 should be wrapped in an &#8216;if&#8217; statement to filter unwanted properties from the prototype.</span></p>
<p class="MsoNormal"><span lang="EN-US">-------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">File <strong>jquery.fmatter.js</strong>:</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 100</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">dateFormat=[<span style="color:#A31515">"i18n"</span>];</span></p>
<p class="MsoNormal"><span lang="EN-US">declare and initialize variable </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">dateFormat</span><span lang="EN-US"> as an array object. The only place where </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">dateFormat</span><span lang="EN-US"> used as an array in the next statement (lines 102-105):</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">dateFormat[<span style="color:#A31515">"i18n"</span>] = {<br /> &#160;&#160;&#160; dayNames:&#160;&#160; opts.dayNames,<br /> &#160;&#160;&#160; monthNames: opts.monthNames<br /> };</span></p>
<p class="MsoNormal"><span lang="EN-US">Later in the code only </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">dateFormat.i18n</span><span lang="EN-US"> is used. So it would be a little effective replace array with the only element </span><span style="font-size:10.0pt;line-height:115%; font-family:" lang="EN-US">dateFormat[<span style="color:#A31515">"i18n"</span>]</span><span lang="EN-US"> to an object like </span><span style="font-size:10.0pt; line-height:115%;font-family:" lang="EN-US">dateFormat_i18n</span><span lang="EN-US">. Then lines 100-105</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">dateFormat = [<span style="color:#A31515">"i18n"</span>];</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">// Internationalization strings</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">dateFormat[<span style="color:#A31515">"i18n"</span>] = {</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;&#160;&#160; dayNames:&#160;&#160; opts.dayNames,</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;&#160;&#160; monthNames: opts.monthNames</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">};</span></p>
<p class="MsoNormal"><span lang="EN-US">can be replaced to</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">dateFormat = {</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;&#160;&#160; dayNames:&#160;&#160; opts.dayNames,</span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: normal;text-autospace:none"><span style="font-size:8.0pt;font-family:" lang="EN-US">&#160;&#160;&#160; monthNames: opts.monthNames</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">};</span></p>
<p class="MsoNormal"><span lang="EN-US">And later in the code all </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">dateFormat.i18n</span><span lang="EN-US"> should be replaced to </span><span style="font-size: 10.0pt;line-height:115%;font-family:" lang="EN-US">dateFormat</span><span lang="EN-US">.</span></p>
<p class="MsoNormal"><span lang="EN-US">In the line 215 &#39;,&#39; should be replaced to &#39;;&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 236 should be started with &#39;</span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;; color: blue;" lang="EN-US">var</span><span style="font-size:10.0pt;line-height: 115%;font-family:" lang="EN-US"> </span><span lang="EN-US">&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 296, 336, 361, 365, 368, 370 and 429 contains missing &#39;;&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 90, 91, 107 and 108 contains unescaped &#39;-&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 470 and 474 contain unnecessary semicolon.</span></p>
<p class="MsoNormal"><span lang="EN-US">-------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">File <strong>jquery.fmatter.js</strong>:</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 331: &#39;custom_data&#39; is already defined.</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 507</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">o = $.trim(o).replace(/\&#38;nbsp\;/ig,<span style="color: #a31515;">&#39;&#39;</span>).replace(/\&#38;#160\;/ig,<span style="color: #a31515;">&#39;&#39;</span>);</span></p>
<p class="MsoNormal"><span lang="EN-US">inside of </span><span style="font-size: 10pt; line-height: 115%; font-family: &#34;Courier New&#34;;" lang="EN-US">isEmpty</span><span lang="EN-US"> function is not absolute correct. For example, string with blanks between </span><span style="font-size:10.0pt;line-height:115%; font-family:" lang="EN-US">&#38;nbsp;</span><span lang="EN-US"> will be interpret as not empty. It seems to me the line should be better fixed to something like</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">o = o.replace(/(\s&#124;&#38;nbsp;&#124;&#38;\#160;)+/gi, <span style="color: #a31515;">&#39;&#39;</span>);</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 525: &#39;i&#39; is already defined.</span></p>
<p class="MsoNormal"><span lang="EN-US">The line 535: &#39;j&#39; is already defined and &#39;lj&#39; is already defined.</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 512, 529, 534, 536, 543, 544, 546, 547, 548, 551 should be better written in dot notation of [&#39;data&#39;] etc.</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 166, 171, 176, 180, 184, 190 has following error &#8220;Function statements cannot be placed in blocks. Use a function expression or move the statement to the top of the outer function&#8221;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Lines 490, 566, 598 and 605 have missing semicolon.</span></p>
<p class="MsoNormal"><span lang="EN-US">-------------------------------------------------------------------</span></p>
<p class="MsoNormal"><strong><span lang="EN-US">All files from the i18n directory</span></strong><span lang="EN-US"> contains line like</span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;line-height:115%; font-family:" lang="EN-US">S: <span style="color:blue">function</span> (j) {<span style="color: blue;">return</span> j &#60; 11 &#124;&#124; j &#62; 13 ? [<span style="color: #a31515;">&#39;st&#39;</span>, <span style="color:#A31515">&#39;nd&#39;</span>, <span style="color: #a31515;">&#39;rd&#39;</span>, <span style="color:#A31515">&#39;th&#39;</span>][Math.min((j - 1) % 10, 3)] : <span style="color:#A31515">&#39;th&#39;</span>},</span></p>
<p class="MsoNormal"><span lang="EN-US">have missing semicolon.</span></p>
<p class="MsoNormal">&#160;</p>
<p class="MsoNormal"><span lang="EN-US">Best regards<br />Oleg<br /></span></p>
</div>
]]></description>
        	        	<pubDate>Mon, 05 Apr 2010 12:21:30 +0300</pubDate>
        </item>
</channel>
</rss>