diff --git a/cdb/Data.hx b/cdb/Data.hx index b5aefe2c..e33cda8c 100644 --- a/cdb/Data.hx +++ b/cdb/Data.hx @@ -56,6 +56,7 @@ typedef Column = { var name : String; var type : ColumnType; var typeStr : String; + @:optional var hidden : Bool; @:optional var opt : Bool; @:optional var display : DisplayType; @:optional var kind : ColumnKind; diff --git a/src/Main.hx b/src/Main.hx index 69a8bb6e..1c88999b 100644 --- a/src/Main.hx +++ b/src/Main.hx @@ -742,9 +742,36 @@ class Main extends Model { var nleft = new MenuItem( { label : "Move Left" } ); var nright = new MenuItem( { label : "Move Right" } ); var ndel = new MenuItem( { label : "Delete" } ); + + var nhide = new MenuItem({label: "Hide Column"}); + var nshowcols = new MenuItem({label: "Show Columns"}); + var ncols = new Menu(); + for (col in sheet.columns) { + var ncol = new MenuItem({ + label: col.name, + type: MenuItemType.checkbox + }); + if (col.hidden) + ncol.checked = false; + else + ncol.checked = true; + ncol.click = function() { + col.hidden = !ncol.checked; + refresh(); + save(); + } + ncols.append(ncol); + } + var nsep = new MenuItem({type: MenuItemType.separator}); + ncols.append(nsep); + var nshowall = new MenuItem({label: "Show All"}); + ncols.append(nshowall); + + nshowcols.submenu = ncols; + var ndisp = new MenuItem( { label : "Display Column", type : MenuItemType.checkbox } ); var nicon = new MenuItem( { label : "Display Icon", type : MenuItemType.checkbox } ); - for( m in [nedit, nins, nleft, nright, ndel, ndisp, nicon] ) + for( m in [nedit, nins, nleft, nright, ndel, nhide, nshowcols, ndisp, nicon] ) n.append(m); switch( c.type ) { @@ -860,6 +887,19 @@ class Main extends Model { if( !isProperties || js.Browser.window.confirm("Do you really want to delete this property for all objects?") ) deleteColumn(sheet, c.name); }; + nhide.click = function() { + c.hidden = true; + refresh(); + save(); + } + nshowall.click = function() { + for (col in sheet.columns) { + if (col.hidden) + col.hidden = false; + } + refresh(); + save(); + } ndisp.click = function() { if( sheet.props.displayColumn == c.name ) { sheet.props.displayColumn = null; @@ -1534,8 +1574,20 @@ class Main extends Model { var colCount = sheet.columns.length; if( sheet.isLevel() ) colCount++; + // count hidden columns for( cindex in 0...sheet.columns.length ) { var c = sheet.columns[cindex]; + if (c.hidden) { + colCount--; + } + } + + for( cindex in 0...sheet.columns.length ) { + var c = sheet.columns[cindex]; + if (c.hidden) { + continue; + } + var col = J(""); col.text(c.name); col.addClass( "t_"+c.type.getName().substr(1).toLowerCase() );