@@ -472,8 +472,8 @@ class QgridWidget(widgets.DOMWidget):
472472 _model_name = Unicode ('QgridModel' ).tag (sync = True )
473473 _view_module = Unicode ('qgrid' ).tag (sync = True )
474474 _model_module = Unicode ('qgrid' ).tag (sync = True )
475- _view_module_version = Unicode ('1.0.5 ' ).tag (sync = True )
476- _model_module_version = Unicode ('1.0.5 ' ).tag (sync = True )
475+ _view_module_version = Unicode ('1.0.6-beta.3 ' ).tag (sync = True )
476+ _model_module_version = Unicode ('1.0.6-beta.3 ' ).tag (sync = True )
477477
478478 _df = Instance (pd .DataFrame )
479479 _df_json = Unicode ('' , sync = True )
@@ -493,7 +493,7 @@ class QgridWidget(widgets.DOMWidget):
493493 _unfiltered_df = Instance (pd .DataFrame )
494494 _index_col_name = Unicode ('qgrid_unfiltered_index' , sync = True )
495495 _sort_col_suffix = Unicode ('_qgrid_sort_column' )
496- _multi_index = Bool (False )
496+ _multi_index = Bool (False , sync = True )
497497 _edited = Bool (False )
498498 _selected_rows = List ([])
499499 _viewport_range = Tuple (Integer (), Integer (), default_value = (0 , 100 ))
@@ -766,7 +766,8 @@ def _update_table(self,
766766
767767 def should_be_stringified (col_series ):
768768 return col_series .dtype == np .dtype ('O' ) or \
769- hasattr (col_series , 'cat' )
769+ hasattr (col_series , 'cat' ) or \
770+ isinstance (col_series , pd .PeriodIndex )
770771
771772 if type (df .index ) == pd .core .index .MultiIndex :
772773 self ._multi_index = True
@@ -809,10 +810,9 @@ def should_be_stringified(col_series):
809810 not self ._disable_grouping :
810811 previous_value = None
811812 row_styles = {}
812- row_styles_idx = 0
813+ row_loc = from_index
813814 for index , row in df .iterrows ():
814815 row_style = {}
815- row_loc = self ._df .index .get_loc (index )
816816 last_row = row_loc == (len (self ._df ) - 1 )
817817 prev_idx = row_loc - 1
818818 for idx , index_val in enumerate (index ):
@@ -844,7 +844,7 @@ def should_be_stringified(col_series):
844844 row_styles [prev_idx ][col_name ] = 'group-single'
845845 previous_value = index
846846 row_styles [row_loc ] = row_style
847- row_styles_idx += 1
847+ row_loc += 1
848848
849849 self ._row_styles = row_styles
850850 else :
@@ -865,17 +865,6 @@ def should_be_stringified(col_series):
865865 parsed_json = json .loads (df_json )
866866 df_schema = parsed_json ['schema' ]
867867
868- if ('primaryKey' in df_schema ):
869- self ._primary_key = df_schema ['primaryKey' ]
870- else :
871- # for some reason, 'primaryKey' isn't set in certain cases,
872- # like when we have an interval index. that's why this case
873- # is here.
874- if df .index .name is not None :
875- self ._primary_key = [df .index .name ]
876- else :
877- self ._primary_key = ['index' ]
878-
879868 columns = {}
880869 for i , cur_column in enumerate (df_schema ['fields' ]):
881870 col_name = cur_column ['name' ]
@@ -896,7 +885,7 @@ def should_be_stringified(col_series):
896885 level = self ._primary_key .index (col_name )
897886 if level == 0 :
898887 cur_column ['first_index' ] = True
899- if level == (len (self ._primary_key ) - 1 ):
888+ if self . _multi_index and level == (len (self ._primary_key ) - 1 ):
900889 cur_column ['last_index' ] = True
901890
902891 cur_column ['position' ] = i
@@ -965,12 +954,9 @@ def _update_sort(self):
965954 inplace = True
966955 )
967956 else :
968- level_id = self ._sort_field
969- level_index = self ._primary_key .index (level_id )
970- if self ._sort_field .startswith ('level_' ):
971- level_id = int (self ._sort_field [6 :])
957+ level_index = self ._primary_key .index (self ._sort_field )
972958 self ._df .sort_index (
973- level = level_id ,
959+ level = level_index ,
974960 ascending = self ._sort_ascending ,
975961 inplace = True
976962 )
@@ -1215,11 +1201,13 @@ def _set_col_series_on_df(self, col_name, df, col_series):
12151201 if col_name in self ._primary_key :
12161202 if len (self ._primary_key ) > 1 :
12171203 key_index = self ._primary_key .index (col_name )
1218- col_series . name = df .index .levels [key_index ].name
1204+ prev_name = df .index .levels [key_index ].name
12191205 df .index .set_levels (col_series , level = key_index , inplace = True )
1206+ df .index .rename (prev_name , level = key_index , inplace = True )
12201207 else :
1221- col_series . name = df .index .name
1208+ prev_name = df .index .name
12221209 df .set_index (col_series , inplace = True )
1210+ df .index .rename (prev_name )
12231211 else :
12241212 df [col_name ] = col_series
12251213
0 commit comments