patternjavascriptMinor
First "Revealing Module" implementation
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
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:
I only have the following minor observations:
mtypecould 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
jqGridObjwith$.extendout ofgridOptionsandconfig, cutting almost 20 lines.
- It is considered better to have 1
varstatement with comma-separated variables instead of multiplevarstatements. ( insubGridObj)
$subGrid.jqGridcould also probably be built with$.extend
Context
StackExchange Code Review Q#39871, answer score: 4
Revisions (0)
No revisions yet.