File tree 5 files changed +48
-15
lines changed
components/content-feedback
lib/ember-w-pack/addon/components 5 files changed +48
-15
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ export default DS.Model.extend({
13
13
isFeedbackDone : computed ( 'feedbackStatus' , function ( ) {
14
14
return ! ( this . feedbackStatus == null ) ;
15
15
} ) ,
16
+ feedback : DS . attr ( ) ,
16
17
runAttempt : DS . belongsTo ( 'runAttempt' ) ,
17
18
content : DS . belongsTo ( 'content' ) ,
18
19
} )
Original file line number Diff line number Diff line change 7
7
{{!-- render content outlet and doubts and notes --}}
8
8
<div >
9
9
<div >
10
- <ContentFeedback @showFeedback ={{ true }} />
10
+ <WAsync @promise ={{ this.model.progress }} as |progress|>
11
+ <ContentFeedback @progress ={{ progress }} />
12
+ </WAsync >
11
13
{{ outlet }}
12
14
</div >
13
15
{{ #unless (eq model.contentable ' course-recommend' )}}
Original file line number Diff line number Diff line change @@ -18,23 +18,22 @@ export default class ContentFeedbackComponent extends Component {
18
18
expanded = false
19
19
selectedRating = null
20
20
21
- @action
22
- toggleExpandedView ( ) {
23
- // this.expanded && this.set('selectedRating', null)
24
- this . toggleProperty ( 'expanded' )
25
- }
21
+ didReceiveAttrs ( ) {
22
+ this . _super ( ...arguments )
23
+ this . selectedRating = this . progress
24
+ }
26
25
27
26
@computed ( 'selectedRating' )
28
27
get expansionType ( ) {
29
28
const rating = this . selectedRating
30
29
if ( rating === 4 || rating === null )
31
- return 'NONE'
30
+ return 'NONE'
32
31
else if ( rating <= 3 )
33
- return 'BAD'
34
- else
35
- return 'GOOD'
32
+ return 'BAD'
33
+ else
34
+ return 'GOOD'
36
35
}
37
-
36
+
38
37
@computed ( 'expansionType' )
39
38
get expansionText ( ) {
40
39
switch ( this . expansionType ) {
@@ -43,7 +42,7 @@ export default class ContentFeedbackComponent extends Component {
43
42
default : return ''
44
43
}
45
44
}
46
-
45
+
47
46
@computed ( 'expansionType' )
48
47
get expansionReasons ( ) {
49
48
switch ( this . expansionType ) {
@@ -52,5 +51,21 @@ export default class ContentFeedbackComponent extends Component {
52
51
default : return [ ]
53
52
}
54
53
}
55
-
54
+
55
+ @action
56
+ async updateContentFeedback ( reason = '' ) {
57
+ // update everything in progress
58
+ const feedback = {
59
+ rating : this . selectedRating ,
60
+ reason
61
+ }
62
+ this . progress . set ( 'feedback' , feedback )
63
+ await this . progress . save ( )
64
+ }
65
+
66
+ @action
67
+ toggleExpandedView ( ) {
68
+ // this.expanded && this.set('selectedRating', null)
69
+ this . toggleProperty ( 'expanded' )
70
+ }
56
71
}
Original file line number Diff line number Diff line change 24
24
<label class =" radio-container v-align-ma" >
25
25
<input class =" radio" type =" radio" name =" reason"
26
26
checked ={{ eq this.selectedReason reason }}
27
- onclick ={{ fn ( mut this.selectedReason ) reason }} />
27
+ onclick ={{ fn this.updateContentFeedback reason }} />
28
28
<span class =" checkmark t-smaller" ></span >
29
29
<span class =" font-xs" >{{ reason }} </span >
30
30
</label >
Original file line number Diff line number Diff line change @@ -7,7 +7,22 @@ export default class WAsyncComponent extends Component {
7
7
8
8
didReceiveAttrs ( ) {
9
9
this . _super ( ...arguments ) ;
10
- if ( this . autoFire ) this . task . perform ( ) ;
10
+ if ( this . promise ) {
11
+ this . set ( 'task' , {
12
+ isRunning : true ,
13
+ last : { value : null }
14
+ } )
15
+
16
+ this . promise . then ( resolved => {
17
+ this . set ( 'task' , {
18
+ isRunning : false ,
19
+ last : {
20
+ value : resolved
21
+ }
22
+ } )
23
+ } )
24
+ }
25
+ else if ( this . autoFire ) this . task . perform ( ) ;
11
26
}
12
27
13
28
@computed ( 'task.{isRunning,last.value}' )
You can’t perform that action at this time.
0 commit comments