From 7e2b527976238fba1c1d4d3d15b4e7c0c51d56ed Mon Sep 17 00:00:00 2001
From: tux091 <renaud.legac@free.fr>
Date: Mon, 30 Jan 2012 20:50:05 +0100
Subject: [PATCH] Add a the possibility to activate row numbering in grid via
 the GridModifier.

---
 models/widgets.py                   |  1 +
 modules/plugin_dbui/cvtsvc.py       |  4 ++++
 modules/plugin_dbui/gridmodifier.py | 10 ++++++++++
 static/plugin_dbui/src/appgrid.js   | 19 +++++++++++++++++++
 4 files changed, 34 insertions(+)

diff --git a/models/widgets.py b/models/widgets.py
index 0e79ab54..723fd7e2 100755
--- a/models/widgets.py
+++ b/models/widgets.py
@@ -109,6 +109,7 @@ formModifier.configure(buttonAlign='right',
 #
 gridModifier = dbui.GridModifier('categories')
 gridModifier.configure_column('code', width=10)
+gridModifier.set_rownumbering()
 
 #
 # Define a column template for the publications grid
diff --git a/modules/plugin_dbui/cvtsvc.py b/modules/plugin_dbui/cvtsvc.py
index 310a82c0..6b78fdaf 100644
--- a/modules/plugin_dbui/cvtsvc.py
+++ b/modules/plugin_dbui/cvtsvc.py
@@ -117,6 +117,10 @@ class CvtSvc(BaseSvc):
             delete_columns = grid_modifiers[tablename].delete_columns
             template_columns = grid_modifiers[tablename].template_columns
         
+        # row numbering in the first colum,
+        if grid_modifiers[tablename].row_numbering:
+            models.append({'xtype': 'rownumberer'})
+            
         # standard column
         for field in table:
             fieldname = field.name
diff --git a/modules/plugin_dbui/gridmodifier.py b/modules/plugin_dbui/gridmodifier.py
index 46dc7f1b..2f0425d7 100644
--- a/modules/plugin_dbui/gridmodifier.py
+++ b/modules/plugin_dbui/gridmodifier.py
@@ -52,7 +52,9 @@ class GridModifier(Modifier):
         self.data.delete_columns = []
         self.data.grid_filters = []
         self.data.hidden_columns = []
+        self.data.row_numbering = False
         self.data.template_columns = []
+        
 
                    
     def add_column(self, ktable, kfield, position=0, extjs={}):
@@ -167,3 +169,11 @@ class GridModifier(Modifier):
 
         """
         self.data.grid_filters = Storage(filters=filters, extjs=kwargs)
+
+
+    def set_rownumbering(self):
+        """Activate the row numbering.
+        Row number is displayed in the first column of the grid.
+        
+        """
+        self.data.row_numbering = True
diff --git a/static/plugin_dbui/src/appgrid.js b/static/plugin_dbui/src/appgrid.js
index afb540cf..85616bd6 100644
--- a/static/plugin_dbui/src/appgrid.js
+++ b/static/plugin_dbui/src/appgrid.js
@@ -19,6 +19,25 @@ App.grid.Grid = Ext.extend(Ext.grid.GridPanel, {
      */
     rowEditor: null,   
 
+    /**
+     * Constructor
+     * 
+     * NOTE:
+     * Required in ExtJS 3.4 convert rownumberer xtype
+     * into an Ext.grid.RowNumberer. Not needed in ExtJS 4
+     * 
+     */
+    constructor: function (config) {
+
+      var first_column = config.columns[0];
+      
+      if ('xtype' in first_column && first_column.xtype === 'rownumberer') {
+        config.columns[0] = new Ext.grid.RowNumberer();    
+      }
+      
+      Ext.apply(this, config);
+      App.grid.Grid.superclass.constructor.call(this); 
+    },
     /**
      * private method requests by the component model of ExtJS
      */
-- 
GitLab