@@ -520,6 +520,7 @@ class GitGraphView {
520
520
showRemoteBranches : repoState . showRemoteBranches ,
521
521
includeCommitsMentionedByReflogs : getIncludeCommitsMentionedByReflogs ( repoState . includeCommitsMentionedByReflogs ) ,
522
522
onlyFollowFirstParent : getOnlyFollowFirstParent ( repoState . onlyFollowFirstParent ) ,
523
+ commitOrdering : getCommitOrdering ( repoState . commitOrdering ) ,
523
524
remotes : this . gitRemotes ,
524
525
hideRemotes : repoState . hideRemotes ,
525
526
stashes : this . gitStashes
@@ -651,6 +652,13 @@ class GitGraphView {
651
652
this . saveState ( ) ;
652
653
}
653
654
655
+ public saveCommitOrdering ( repo : string , commitOrdering : GG . RepoCommitOrdering ) {
656
+ if ( repo === this . currentRepo ) {
657
+ this . gitRepos [ this . currentRepo ] . commitOrdering = commitOrdering ;
658
+ this . saveRepoState ( ) ;
659
+ }
660
+ }
661
+
654
662
public saveHiddenRemotes ( repo : string , hideRemotes : string [ ] ) {
655
663
if ( repo === this . currentRepo ) {
656
664
this . gitRepos [ this . currentRepo ] . hideRemotes = hideRemotes ;
@@ -1585,32 +1593,61 @@ class GitGraphView {
1585
1593
1586
1594
colHeadersElem . addEventListener ( 'contextmenu' , ( e : MouseEvent ) => {
1587
1595
e . stopPropagation ( ) ;
1596
+
1588
1597
const toggleColumnState = ( col : number , defaultWidth : number ) => {
1589
1598
columnWidths [ col ] = columnWidths [ col ] !== COLUMN_HIDDEN ? COLUMN_HIDDEN : columnWidths [ 0 ] === COLUMN_AUTO ? COLUMN_AUTO : defaultWidth - COLUMN_LEFT_RIGHT_PADDING ;
1590
1599
this . saveColumnWidths ( columnWidths ) ;
1591
- contextMenu . close ( ) ;
1592
1600
this . render ( ) ;
1593
1601
} ;
1594
- contextMenu . show ( [ [
1595
- {
1596
- title : 'Date' ,
1597
- visible : true ,
1598
- checked : columnWidths [ 2 ] !== COLUMN_HIDDEN ,
1599
- onClick : ( ) => toggleColumnState ( 2 , 128 )
1600
- } ,
1601
- {
1602
- title : 'Author' ,
1603
- visible : true ,
1604
- checked : columnWidths [ 3 ] !== COLUMN_HIDDEN ,
1605
- onClick : ( ) => toggleColumnState ( 3 , 128 )
1606
- } ,
1607
- {
1608
- title : 'Commit' ,
1609
- visible : true ,
1610
- checked : columnWidths [ 4 ] !== COLUMN_HIDDEN ,
1611
- onClick : ( ) => toggleColumnState ( 4 , 80 )
1612
- }
1613
- ] ] , true , null , e ) ;
1602
+
1603
+ const commitOrdering = getCommitOrdering ( this . gitRepos [ this . currentRepo ] . commitOrdering ) ;
1604
+ const changeCommitOrdering = ( repoCommitOrdering : GG . RepoCommitOrdering ) => {
1605
+ this . saveCommitOrdering ( this . currentRepo , repoCommitOrdering ) ;
1606
+ this . refresh ( true ) ;
1607
+ } ;
1608
+
1609
+ contextMenu . show ( [
1610
+ [
1611
+ {
1612
+ title : 'Date' ,
1613
+ visible : true ,
1614
+ checked : columnWidths [ 2 ] !== COLUMN_HIDDEN ,
1615
+ onClick : ( ) => toggleColumnState ( 2 , 128 )
1616
+ } ,
1617
+ {
1618
+ title : 'Author' ,
1619
+ visible : true ,
1620
+ checked : columnWidths [ 3 ] !== COLUMN_HIDDEN ,
1621
+ onClick : ( ) => toggleColumnState ( 3 , 128 )
1622
+ } ,
1623
+ {
1624
+ title : 'Commit' ,
1625
+ visible : true ,
1626
+ checked : columnWidths [ 4 ] !== COLUMN_HIDDEN ,
1627
+ onClick : ( ) => toggleColumnState ( 4 , 80 )
1628
+ }
1629
+ ] ,
1630
+ [
1631
+ {
1632
+ title : 'Commit Timestamp Order' ,
1633
+ visible : true ,
1634
+ checked : commitOrdering === GG . CommitOrdering . Date ,
1635
+ onClick : ( ) => changeCommitOrdering ( GG . RepoCommitOrdering . Date )
1636
+ } ,
1637
+ {
1638
+ title : 'Author Timestamp Order' ,
1639
+ visible : true ,
1640
+ checked : commitOrdering === GG . CommitOrdering . AuthorDate ,
1641
+ onClick : ( ) => changeCommitOrdering ( GG . RepoCommitOrdering . AuthorDate )
1642
+ } ,
1643
+ {
1644
+ title : 'Topological Order' ,
1645
+ visible : true ,
1646
+ checked : commitOrdering === GG . CommitOrdering . Topological ,
1647
+ onClick : ( ) => changeCommitOrdering ( GG . RepoCommitOrdering . Topological )
1648
+ }
1649
+ ]
1650
+ ] , true , null , e ) ;
1614
1651
} ) ;
1615
1652
}
1616
1653
@@ -3070,6 +3107,19 @@ function getChildByPathSegment(folder: FileTreeFolder, pathSeg: string) {
3070
3107
3071
3108
/* Repository State Helpers */
3072
3109
3110
+ function getCommitOrdering ( repoValue : GG . RepoCommitOrdering ) : GG . CommitOrdering {
3111
+ switch ( repoValue ) {
3112
+ case GG . RepoCommitOrdering . Default :
3113
+ return initialState . config . commitOrdering ;
3114
+ case GG . RepoCommitOrdering . Date :
3115
+ return GG . CommitOrdering . Date ;
3116
+ case GG . RepoCommitOrdering . AuthorDate :
3117
+ return GG . CommitOrdering . AuthorDate ;
3118
+ case GG . RepoCommitOrdering . Topological :
3119
+ return GG . CommitOrdering . Topological ;
3120
+ }
3121
+ }
3122
+
3073
3123
function getShowTags ( repoValue : GG . ShowTags ) {
3074
3124
return repoValue === GG . ShowTags . Default
3075
3125
? initialState . config . showTags
0 commit comments