Skip to content
GitLab
Explore
Sign in
Commits on Source (2)
POC show reviews
· 8f84acb5
Tuan Tuan LE
authored
Apr 17, 2018
8f84acb5
Merge branch 'POC' into 'master'
· 71c65600
Tuan Tuan LE
authored
Apr 17, 2018
POC show reviews See merge request
!20
71c65600
Hide whitespace changes
Inline
Side-by-side
backend/lib/proposal/index.js
View file @
71c65600
...
...
@@ -18,8 +18,14 @@ module.exports = function(dependencies) {
return
Proposal
.
create
(
proposal
);
}
function
getById
(
id
)
{
return
Proposal
.
findOne
({
_id
:
id
});
function
getById
(
id
,
options
)
{
const
query
=
Proposal
.
findOne
({
_id
:
id
});
if
(
options
.
populations
)
{
query
.
populate
(
options
.
populations
);
}
return
query
.
exec
();
}
function
list
(
options
=
{})
{
...
...
backend/lib/review/index.js
View file @
71c65600
...
...
@@ -25,22 +25,27 @@ module.exports = function(dependencies) {
}
function
list
(
options
=
{})
{
const
q
uery
=
{};
const
findQ
uery
=
{};
if
(
options
.
creator
)
{
query
.
creator
=
options
.
creator
;
if
(
options
.
proposal
)
{
findQuery
.
proposal
=
options
.
proposal
;
}
if
(
options
.
status
)
{
q
uery
.
status
=
options
.
status
;
findQ
uery
.
status
=
options
.
status
;
}
return
Review
.
find
(
q
uery
)
const
query
=
Review
.
find
(
findQ
uery
)
.
skip
(
+
options
.
offset
||
DEFAULT_OFFSET
)
.
limit
(
+
options
.
limit
||
DEFAULT_LIMIT
)
.
sort
({
_id
:
-
1
})
.
exec
();
.
sort
({
_id
:
-
1
});
if
(
options
.
populations
)
{
query
.
populate
(
options
.
populations
);
}
return
query
.
exec
();
}
function
updateById
(
proposalId
,
modified
)
{
...
...
backend/webserver/api/proposals/middleware.js
View file @
71c65600
module
.
exports
=
function
(
dependencies
,
lib
)
{
const
logger
=
dependencies
(
'
logger
'
);
const
coreUser
=
dependencies
(
'
coreUser
'
);
return
{
load
};
function
load
(
req
,
res
,
next
)
{
lib
.
proposal
.
getById
(
req
.
params
.
proposalId
)
const
populations
=
[{
path
:
'
reviewers
'
}];
lib
.
proposal
.
getById
(
req
.
params
.
proposalId
,
{
populations
})
.
then
(
proposal
=>
{
if
(
proposal
)
{
proposal
.
reviewers
=
proposal
.
reviewers
.
map
(
reviewer
=>
coreUser
.
denormalize
.
denormalize
(
reviewer
)
);
req
.
proposal
=
proposal
;
next
();
}
else
{
...
...
backend/webserver/api/reviews/controller.js
View file @
71c65600
module
.
exports
=
function
(
dependencies
,
lib
)
{
const
logger
=
dependencies
(
'
logger
'
);
const
coreUser
=
dependencies
(
'
coreUser
'
);
return
{
createReview
,
...
...
@@ -37,15 +38,26 @@ module.exports = function(dependencies, lib) {
function
getReviews
(
req
,
res
)
{
var
listOptions
=
{
creator
:
req
.
user
.
id
,
proposal
:
req
.
query
.
proposal
,
status
:
req
.
query
.
status
,
limit
:
Number
(
req
.
query
.
limit
),
offset
:
Number
(
req
.
query
.
offset
)
offset
:
Number
(
req
.
query
.
offset
),
populations
:
[{
path
:
'
creator
'
}]
};
lib
.
review
.
list
(
listOptions
)
.
then
(
reviews
=>
reviews
.
map
(
lib
.
review
.
denormalize
))
.
then
(
denormalizedReviews
=>
res
.
status
(
200
).
json
(
denormalizedReviews
))
.
then
(
denormalizedReviews
=>
{
const
result
=
denormalizedReviews
.
map
(
review
=>
{
review
.
creator
=
coreUser
.
denormalize
.
denormalize
(
review
.
creator
);
return
review
;
});
return
res
.
status
(
200
).
json
(
result
);
})
.
catch
(
err
=>
{
const
details
=
'
Error while gettings review
'
;
...
...
frontend/app/proposal/detail/most-proposal-detail.pug
View file @
71c65600
...
...
@@ -7,6 +7,15 @@ sub-header
on-accept-btn-click="$ctrl.onAcceptBtnClick()",
on-review-btn-click="$ctrl.onReviewBtnClick()"
)
.card(ng-if="$ctrl.proposal && $ctrl.userRole==='moderator'")
.card-body.p-30
.row
h3 Ý kiến từ chuyên gia
.row
most-review-list(
proposal-id="$ctrl.proposal.id",
reviewers="$ctrl.proposal.reviewers"
)
.card
.card-body.p-20
.form-container(ng-switch="$ctrl.proposal.type")
...
...
frontend/app/review/list/most-review-list.component.js
0 → 100644
View file @
71c65600
(
function
(
angular
)
{
'
use strict
'
;
angular
.
module
(
'
linagora.esn.most
'
)
.
component
(
'
mostReviewList
'
,
{
templateUrl
:
'
/linagora.esn.most/app/review/list/most-review-list.html
'
,
controller
:
'
MostReviewListController
'
,
bindings
:
{
proposalId
:
'
<
'
,
reviewers
:
'
<
'
}
});
})(
angular
);
frontend/app/review/list/most-review-list.controller.js
0 → 100644
View file @
71c65600
(
function
(
angular
)
{
'
use strict
'
;
angular
.
module
(
'
linagora.esn.most
'
)
.
controller
(
'
MostReviewListController
'
,
MostReviewListController
);
function
MostReviewListController
(
mostReviewApiClient
)
{
var
self
=
this
;
self
.
$onInit
=
$onInit
;
function
$onInit
()
{
mostReviewApiClient
.
getReviews
({
proposal
:
self
.
proposalId
})
.
then
(
function
(
reviews
)
{
self
.
reviews
=
reviews
;
self
.
pendingReviewers
=
buildPendingReviewers
(
reviews
);
});
}
function
buildPendingReviewers
(
reviews
)
{
var
reviewedExperts
=
reviews
.
map
(
function
(
review
)
{
return
review
.
creator
.
_id
;
});
return
self
.
reviewers
.
map
(
function
(
reviewer
)
{
if
(
reviewedExperts
.
indexOf
(
reviewer
.
_id
))
{
return
reviewer
;
}
}).
filter
(
Boolean
);
}
}
})(
angular
);
frontend/app/review/list/most-review-list.pug
0 → 100644
View file @
71c65600
.flex.flex-space-between
h5 Chuyên gia
h5 File đánh giá
hr.m-15
div(ng-repeat="review in $ctrl.reviews")
.flex.flex-space-between
| {{::review.creator.firstname}} {{::review.creator.lastname}}
a(href='{{"/api/files/" + review.attachments[0]._id}}', esn-download-file='{{review.attachments[0].name}}') Tải về
hr.m-10
div(ng-repeat="pendingReviewer in $ctrl.pendingReviewers")
.flex.flex-space-between
| {{::pendingReviewer.firstname}} {{::pendingReviewer.lastname}}
small Chưa đánh giá
hr.m-10
index.js
View file @
71c65600
...
...
@@ -12,6 +12,7 @@ const myAwesomeModule = new AwesomeModule(AWESOME_MODULE_NAME, {
new
Dependency
(
Dependency
.
TYPE_NAME
,
'
linagora.esn.core.logger
'
,
'
logger
'
),
new
Dependency
(
Dependency
.
TYPE_NAME
,
'
linagora.esn.core.webserver.wrapper
'
,
'
webserver-wrapper
'
),
new
Dependency
(
Dependency
.
TYPE_NAME
,
'
linagora.esn.core.db
'
,
'
db
'
),
new
Dependency
(
Dependency
.
TYPE_NAME
,
'
linagora.esn.core.user
'
,
'
coreUser
'
),
new
Dependency
(
Dependency
.
TYPE_NAME
,
'
linagora.esn.core.i18n
'
,
'
i18n
'
),
new
Dependency
(
Dependency
.
TYPE_NAME
,
'
linagora.esn.core.webserver.middleware.authorization
'
,
'
authorizationMW
'
),
new
Dependency
(
Dependency
.
TYPE_NAME
,
'
linagora.esn.core.webserver.middleware.helper
'
,
'
helperMW
'
)
...
...