@@ -25,25 +25,21 @@ export class TimeEntriesComponent implements OnInit, OnDestroy {
2525 message : string ;
2626 idToDelete : string ;
2727 entriesSubscription : Subscription ;
28+ wasEditingExistingTimeEntry = false ;
2829 canMarkEntryAsWIP = true ;
2930 timeEntriesDataSource$ : Observable < DataSource < Entry > > ;
3031 selectedYearAsText : string ;
3132 selectedMonth : number ;
3233 selectedYear : number ;
3334 selectedMonthAsText : string ;
34- isEdit : boolean ;
35-
3635 constructor ( private store : Store < EntryState > , private toastrService : ToastrService , private actionsSubject$ : ActionsSubject ) {
3736 this . timeEntriesDataSource$ = this . store . pipe ( delay ( 0 ) , select ( getTimeEntriesDataSource ) ) ;
3837 }
39-
4038 ngOnDestroy ( ) : void {
4139 this . entriesSubscription . unsubscribe ( ) ;
4240 }
43-
4441 ngOnInit ( ) : void {
4542 this . loadActiveEntry ( ) ;
46-
4743 this . entriesSubscription = this . actionsSubject$ . pipe (
4844 filter ( ( action : any ) => (
4945 action . type === EntryActionTypes . CREATE_ENTRY_SUCCESS ||
@@ -56,42 +52,39 @@ export class TimeEntriesComponent implements OnInit, OnDestroy {
5652 this . store . dispatch ( new entryActions . LoadEntries ( this . selectedMonth , this . selectedYear ) ) ;
5753 } ) ;
5854 }
59-
6055 newEntry ( ) {
61- this . entry = null ;
56+ if ( this . wasEditingExistingTimeEntry ) {
57+ this . entry = null ;
58+ }
59+ console . log ( 'Esta es' , this . entry ) ;
6260 this . entryId = null ;
6361 this . store . pipe ( select ( getTimeEntriesDataSource ) ) . subscribe ( ds => {
6462 this . canMarkEntryAsWIP = ! this . isThereAnEntryRunning ( ds . data ) ;
6563 } ) ;
6664 }
67-
6865 private getEntryRunning ( entries : Entry [ ] ) {
6966 const runningEntry : Entry = entries . find ( entry => entry . running === true ) ;
7067 return runningEntry ;
7168 }
72-
7369 private isThereAnEntryRunning ( entries : Entry [ ] ) {
7470 return ! ! this . getEntryRunning ( entries ) ;
7571 }
76-
7772 editEntry ( entryId : string ) {
7873 this . entryId = entryId ;
79- this . isEdit = true ;
8074 this . store . pipe ( select ( getTimeEntriesDataSource ) ) . subscribe ( ds => {
8175 this . entry = ds . data . find ( ( entry ) => entry . id === entryId ) ;
8276 this . canMarkEntryAsWIP = this . isEntryRunningEqualsToEntryToEdit ( this . getEntryRunning ( ds . data ) , this . entry )
8377 || this . isTheEntryToEditTheLastOne ( ds . data ) ;
8478 } ) ;
79+ this . wasEditingExistingTimeEntry = true ;
8580 }
86-
8781 private isEntryRunningEqualsToEntryToEdit ( entryRunning : Entry , entryToEdit : Entry ) {
8882 if ( entryRunning && entryToEdit ) {
8983 return entryRunning . id === entryToEdit . id ;
9084 } else {
9185 return false ;
9286 }
9387 }
94-
9588 private isTheEntryToEditTheLastOne ( entries : Entry [ ] ) {
9689 if ( entries && entries . length > 0 ) {
9790 const lastEntry = entries [ 0 ] ;
@@ -100,11 +93,9 @@ export class TimeEntriesComponent implements OnInit, OnDestroy {
10093 return false ;
10194 }
10295 }
103-
10496 private isNewEntry ( ) {
10597 return this . entryId === null ;
10698 }
107-
10899 saveEntry ( event : SaveEntryEvent ) : void {
109100 if ( this . activeTimeEntry ) {
110101 const startDateAsLocalDate = new Date ( event . entry . start_date ) ;
@@ -123,27 +114,25 @@ export class TimeEntriesComponent implements OnInit, OnDestroy {
123114 this . doSave ( event ) ;
124115 }
125116 }
126-
127117 projectSelected ( event : ProjectSelectedEvent ) : void {
128- this . isEdit = false ;
118+ this . wasEditingExistingTimeEntry = false ;
129119 this . store . pipe ( select ( getTimeEntriesDataSource ) ) . subscribe ( ds => {
130120 const dataToUse = ds . data . find ( item => item . project_id === event . projectId ) ;
131121 if ( dataToUse && this . isNewEntry ( ) ) {
132122 const startDate = new Date ( new Date ( ) . setHours ( 0 , 0 , 0 , 0 ) ) ;
133123 const entry = {
134- description : dataToUse . description ? dataToUse . description : '' ,
135- technologies : dataToUse . technologies ? dataToUse . technologies : [ ] ,
136- uri : dataToUse . uri ? dataToUse . uri : '' ,
137- activity_id : dataToUse . activity_id ,
138- project_id : dataToUse . project_id ,
139- start_date : startDate ,
140- end_date : startDate
124+ description : dataToUse . description ? dataToUse . description : '' ,
125+ technologies : dataToUse . technologies ? dataToUse . technologies : [ ] ,
126+ uri : dataToUse . uri ? dataToUse . uri : '' ,
127+ activity_id : dataToUse . activity_id ,
128+ project_id : dataToUse . project_id ,
129+ start_date : startDate ,
130+ end_date : startDate
141131 } ;
142132 this . entry = entry ;
143133 }
144134 } ) ;
145135 }
146-
147136 doSave ( event : SaveEntryEvent ) {
148137 if ( this . entryId ) {
149138 event . entry . id = this . entryId ;
@@ -155,30 +144,26 @@ export class TimeEntriesComponent implements OnInit, OnDestroy {
155144 this . store . dispatch ( new entryActions . CreateEntry ( event . entry ) ) ;
156145 }
157146 }
158-
159147 loadActiveEntry ( ) {
160148 this . store . dispatch ( new entryActions . LoadActiveEntry ( ) ) ;
161149 this . store . pipe ( select ( getActiveTimeEntry ) ) . subscribe ( ( activeTimeEntry ) => {
162150 this . activeTimeEntry = activeTimeEntry ;
163151 } ) ;
164152 }
165-
166153 removeEntry ( ) {
167154 this . store . dispatch ( new entryActions . DeleteEntry ( this . idToDelete ) ) ;
168155 this . showModal = false ;
169156 }
170-
171157 dateSelected ( event : { monthIndex : number ; year : number } ) {
172158 this . selectedYear = event . year ;
173159 this . selectedYearAsText = event . year . toString ( ) ;
174160 this . selectedMonth = event . monthIndex + 1 ;
175161 this . selectedMonthAsText = moment ( ) . month ( event . monthIndex ) . format ( 'MMMM' ) ;
176162 this . store . dispatch ( new entryActions . LoadEntries ( this . selectedMonth , this . selectedYear ) ) ;
177163 }
178-
179164 openModal ( item : any ) {
180165 this . idToDelete = item . id ;
181166 this . message = `Are you sure you want to delete ${ item . activity_name } ?` ;
182167 this . showModal = true ;
183168 }
184- }
169+ }
0 commit comments