### Eclipse Workspace Patch 1.0 #P fluid-infusion Index: src/webapp/components/pager/js/Pager.js =================================================================== --- src/webapp/components/pager/js/Pager.js (revision 7204) +++ src/webapp/components/pager/js/Pager.js (working copy) @@ -283,8 +283,13 @@ return fluid.model.getBeanValue(dataModel, path); }; + function isSortable(overallThat, model) { + var columnDefs = getColumnDefs(overallThat); + var columnDef = fluid.pager.findColumnDef(columnDefs, model.sortKey); + return columnDef.sortable; + }; - fluid.pager.basicSorter = function (overallThat, model) { + fluid.pager.basicSorter = function (overallThat, model) { var dataModel = overallThat.options.dataModel; var roots = {}; var columnDefs = getColumnDefs(overallThat); @@ -436,9 +441,10 @@ } } - function setModelSortHeaderClass(newModel, opts) { + function setModelSortHeaderClass(that, newModel, opts) { var styles = opts.overallOptions.styles; - setSortHeaderClass(styles, bigHeaderForKey(newModel.sortKey, opts), newModel.sortDir); + var sort = isSortable(that, newModel) ? newModel.sortDir : 0; + setSortHeaderClass(styles, bigHeaderForKey(newModel.sortKey, opts), sort); } function fireModelChange(that, newModel, forceUpdate) { @@ -448,7 +454,8 @@ } if (forceUpdate || newModel.pageIndex !== that.model.pageIndex || newModel.pageSize !== that.model.pageSize || newModel.sortKey !== that.model.sortKey || newModel.sortDir !== that.model.sortDir) { - var sorted = newModel.sortKey? that.options.sorter(that, newModel) : null; + var sorted = (newModel.sortKey && isSortable(that, newModel)) ? + that.options.sorter(that, newModel) : null; that.permutation = sorted; that.events.onModelChange.fire(newModel, that.model, that); fluid.model.copyModel(that.model, newModel); @@ -475,7 +482,7 @@ else {return false; } newModel.pageIndex = 0; fireModelChange(overallThat, newModel, true); - setModelSortHeaderClass(newModel, opts); + setModelSortHeaderClass(overallThat, newModel, opts); return false; }; } @@ -533,7 +540,7 @@ options.renderOptions = options.renderOptions || {}; options.renderOptions.model = expOpts.dataModel; fluid.reRender(template, root, fullTree, options.renderOptions); - setModelSortHeaderClass(newModel, expOpts); // TODO, should this not be actually renderable? + setModelSortHeaderClass(overallThat, newModel, expOpts); // TODO, should this not be actually renderable? } } }