HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavascriptMinor

First "Revealing Module" implementation

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
moduleimplementationfirstrevealing

Problem

I have a little js I call a "jqGrid Factory" to encapsulate common settings and functionality across my web app.

I just want to see what improvements I can make.

```
var jqGridReportFactory = (function () {

var config = {
datatype: 'json',
mtype: 'GET',
height: 'auto',
autowidth: true,
shrinkToFit: true,
gridview: true,
sortable: true,
rowNum: 50,
rowList: [50, 100, 200],
viewrecords: true,
loadonce: false,
sortorder: 'asc',
sortname: 'Affiliate',
subGridSortname: 'SubAffiliate'
},
subGridOptions = {
plusicon: "ui-icon-plus",
minusicon: "ui-icon-minus",
openicon: "ui-icon-carat-1-sw"
};

function createReport(gridOptions, optionalConfig) {
$.extend(config, optionalConfig);
//$.extend(gridOptions, gridOptions);

var jqGridObj = {
url: gridOptions.url,
datatype: config.datatype,
mtype: config.mtype,
postData: gridOptions.postData,
colNames: gridOptions.colNames,
colModel: gridOptions.colModel,
height: config.height,
autowidth: config.autowidth,
shrinkToFit: config.shrinkToFit,
gridview: config.gridview,
sortable: config.sortable,
rowNum: config.rownum,
rowList: config.computeHighlightColorsrowList,
viewrecords: config.viewrecords,
loadonce: config.loadonce,
sortorder: config.sortorder,
sortname: gridOptions.sortname,
pager: gridOptions.pager,
loadError: function (xhr, st, err) {
reportLoadError('onLoadConversionHistory', xhr, st, err);
unblockUI();
},
gridComplete: function () {
unblockUI();
goToScro

Solution

I like your code, good use of the Revealing Module pattern.

I only have the following minor observations:

  • mtype could use a better name ( I know, jqGrid uses it )



  • autowidth -> autoWidth ( lowerCamelCasing )



  • gridview -> gridView



  • rowList: [50, 100, 200] could use a comment as to what it does



  • viewrecords -> viewRecords( lowerCamelCasing ) etc. etc.



  • sortorder -> Could use a comment with the possible values



  • subGridOptions -> could use a comment with this URL : http://api.jqueryui.com/theming/icons/



  • delete uncommented code : //$.extend(gridOptions, gridOptions);



  • You should seriously consider building jqGridObj with $.extend out of gridOptions and config, cutting almost 20 lines.



  • It is considered better to have 1 var statement with comma-separated variables instead of multiple var statements. ( in subGridObj )



  • $subGrid.jqGrid could also probably be built with $.extend

Context

StackExchange Code Review Q#39871, answer score: 4

Revisions (0)

No revisions yet.