Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
c926cdfa
Commit
c926cdfa
authored
8 years ago
by
Phil Hughes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
convert CS to JS
parent
30f655c3
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
250 additions
and
152 deletions
+250
-152
app/assets/javascripts/line_comments/application.js.coffee
app/assets/javascripts/line_comments/application.js.coffee
+0
-17
app/assets/javascripts/line_comments/components/resolve_all.js.coffee
...avascripts/line_comments/components/resolve_all.js.coffee
+0
-21
app/assets/javascripts/line_comments/components/resolve_all.js.es6
...s/javascripts/line_comments/components/resolve_all.js.es6
+43
-0
app/assets/javascripts/line_comments/components/resolve_btn.js.coffee
...avascripts/line_comments/components/resolve_btn.js.coffee
+0
-31
app/assets/javascripts/line_comments/components/resolve_btn.js.es6
...s/javascripts/line_comments/components/resolve_btn.js.es6
+51
-0
app/assets/javascripts/line_comments/components/resolve_count.js.coffee
...ascripts/line_comments/components/resolve_count.js.coffee
+0
-17
app/assets/javascripts/line_comments/components/resolve_count.js.es6
...javascripts/line_comments/components/resolve_count.js.es6
+40
-0
app/assets/javascripts/line_comments/line_comments_bundle.js.es6
...ets/javascripts/line_comments/line_comments_bundle.js.es6
+22
-0
app/assets/javascripts/line_comments/services/resolve.js.coffee
...sets/javascripts/line_comments/services/resolve.js.coffee
+0
-45
app/assets/javascripts/line_comments/services/resolve.js.es6
app/assets/javascripts/line_comments/services/resolve.js.es6
+64
-0
app/assets/javascripts/line_comments/stores/comments.js.coffee
...ssets/javascripts/line_comments/stores/comments.js.coffee
+0
-19
app/assets/javascripts/line_comments/stores/comments.js.es6
app/assets/javascripts/line_comments/stores/comments.js.es6
+28
-0
app/views/projects/merge_requests/_show.html.haml
app/views/projects/merge_requests/_show.html.haml
+1
-1
config/application.rb
config/application.rb
+1
-1
No files found.
app/assets/javascripts/line_comments/application.js.coffee
deleted
100644 → 0
View file @
30f655c3
#= require vue
#= require vue-resource
#= require_directory ./stores
#= require_directory ./services
#= require_directory ./components
$
=>
@
DiffNotesApp
=
new
Vue
el
:
'#diff-comments-app'
components
:
'resolve-btn'
:
ResolveBtn
'resolve-all'
:
ResolveAll
new
Vue
el
:
'#resolve-count-app'
components
:
'resolve-count'
:
ResolveCount
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/components/resolve_all.js.coffee
deleted
100644 → 0
View file @
30f655c3
@
ResolveAll
=
Vue
.
extend
props
:
discussionId
:
String
namespace
:
String
data
:
->
comments
:
CommentsStore
.
state
loadingObject
:
CommentsStore
.
loading
computed
:
allResolved
:
->
isResolved
=
true
for
noteId
,
resolved
of
this
.
comments
[
this
.
discussionId
]
isResolved
=
false
unless
resolved
isResolved
buttonText
:
->
if
this
.
allResolved
then
"Unresolve discussion"
else
"Resolve discussion"
loading
:
->
this
.
loadingObject
[
this
.
discussionId
]
methods
:
resolve
:
->
ResolveService
.
resolveAll
(
this
.
namespace
,
this
.
discussionId
,
this
.
allResolved
)
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/components/resolve_all.js.es6
0 → 100644
View file @
c926cdfa
((w) => {
w.ResolveAll = Vue.extend({
props: {
discussionId: String,
namespace: String,
},
data: function() {
return {
comments: CommentsStore.state,
loadingObject: CommentsStore.loading,
};
},
computed: {
allResolved: function () {
let isResolved = true;
for (const noteId in this.comments[this.discussionId]) {
const resolved = this.comments[this.discussionId][noteId];
if (!resolved) {
isResolved = false;
}
}
return isResolved;
},
buttonText: function () {
if (this.allResolved) {
return "Unresolve discussion";
} else {
return "Resolve discussion";
}
},
loading: function () {
return this.loadingObject[this.discussionId];
}
},
methods: {
resolve: function () {
ResolveService
.resolveAll(this.namespace, this.discussionId, this.allResolved);
}
}
});
}(window));
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/components/resolve_btn.js.coffee
deleted
100644 → 0
View file @
30f655c3
@
ResolveBtn
=
Vue
.
extend
props
:
noteId
:
Number
discussionId
:
String
resolved
:
Boolean
namespace
:
String
data
:
->
comments
:
CommentsStore
.
state
loading
:
false
computed
:
buttonText
:
->
if
this
.
isResolved
then
"Mark as unresolved"
else
"Mark as resolved"
isResolved
:
->
CommentsStore
.
get
(
this
.
discussionId
,
this
.
noteId
)
methods
:
updateTooltip
:
->
$
(
this
.
$els
.
button
)
.
tooltip
(
'hide'
)
.
tooltip
(
'fixTitle'
)
resolve
:
->
this
.
loading
=
true
ResolveService
.
resolve
(
this
.
namespace
,
this
.
discussionId
,
this
.
noteId
,
!
this
.
isResolved
)
.
then
=>
this
.
loading
=
false
this
.
$nextTick
this
.
updateTooltip
compiled
:
->
$
(
this
.
$els
.
button
).
tooltip
()
destroyed
:
->
CommentsStore
.
delete
(
this
.
discussionId
,
this
.
noteId
)
created
:
->
CommentsStore
.
create
(
this
.
discussionId
,
this
.
noteId
,
this
.
resolved
)
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/components/resolve_btn.js.es6
0 → 100644
View file @
c926cdfa
((w) => {
w.ResolveBtn = Vue.extend({
props: {
noteId: Number,
discussionId: String,
resolved: Boolean,
namespace: String
},
data: function () {
return {
comments: CommentsStore.state,
loading: false
};
},
computed: {
buttonText: function () {
if (this.isResolved) {
return "Mark as unresolved";
} else {
return "Mark as resolved";
}
},
isResolved: function () { return CommentsStore.get(this.discussionId, this.noteId); },
},
methods: {
updateTooltip: function () {
$(this.$els.button)
.tooltip('hide')
.tooltip('fixTitle');
},
resolve: function () {
this.loading = true;
ResolveService
.resolve(this.namespace, this.discussionId, this.noteId, !this.isResolved)
.then(() => {
this.loading = false;
this.$nextTick(this.updateTooltip);
});
}
},
compiled: function () {
$(this.$els.button).tooltip();
},
destroyed: function () {
CommentsStore.delete(this.discussionId, this.noteId)
},
created: function () {
CommentsStore.create(this.discussionId, this.noteId, this.resolved)
}
});
}(window));
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/components/resolve_count.js.coffee
deleted
100644 → 0
View file @
30f655c3
@
ResolveCount
=
Vue
.
extend
data
:
->
comments
:
CommentsStore
.
state
loading
:
false
computed
:
resolved
:
->
resolvedCount
=
0
for
discussionId
,
comments
of
this
.
comments
resolved
=
true
for
noteId
,
resolved
of
comments
resolved
=
false
unless
resolved
resolvedCount
++
if
resolved
resolvedCount
commentsCount
:
->
Object
.
keys
(
this
.
comments
).
length
allResolved
:
->
this
.
resolved
is
this
.
commentsCount
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/components/resolve_count.js.es6
0 → 100644
View file @
c926cdfa
((w) => {
w.ResolveCount = Vue.extend({
data: function () {
return {
comments: CommentsStore.state,
loading: false
};
},
computed: {
resolved: function () {
let resolvedCount = 0;
for (const discussionId in this.comments) {
const comments = this.comments[discussionId];
let resolved = true;
for (const noteId in comments) {
const commentResolved = comments[noteId];
if (!commentResolved) {
resolved = false;
}
}
if (resolved) {
resolvedCount++;
}
}
return resolvedCount;
},
commentsCount: function () {
return Object.keys(this.comments).length;
},
allResolved: function () {
return this.resolved === this.commentsCount;
}
}
});
}(window));
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/line_comments_bundle.js.es6
0 → 100644
View file @
c926cdfa
//= require vue
//= require vue-resource
//= require_directory ./stores
//= require_directory ./services
//= require_directory ./components
$(() => {
window.DiffNotesApp = new Vue({
el: '#diff-comments-app',
components: {
'resolve-btn': ResolveBtn,
'resolve-all': ResolveAll,
}
});
new Vue({
el: '#resolve-count-app',
components: {
'resolve-count': ResolveCount
}
});
});
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/services/resolve.js.coffee
deleted
100644 → 0
View file @
30f655c3
class
ResolveService
constructor
:
->
actions
=
{
resolve
:
method
:
'POST'
url
:
'notes{/id}/resolve'
all
:
method
:
'POST'
url
:
'notes/resolve_all'
}
@
resource
=
Vue
.
resource
(
'notes{/id}'
,
{},
actions
)
setCSRF
:
->
Vue
.
http
.
headers
.
common
[
'X-CSRF-Token'
]
=
$
.
rails
.
csrfToken
()
resolve
:
(
namespace
,
discussionId
,
noteId
,
resolve
)
->
@
setCSRF
()
Vue
.
http
.
options
.
root
=
"/
#{
namespace
}
"
@
resource
.
resolve
({
id
:
noteId
},
{
discussion
:
discussionId
,
resolved
:
resolve
})
.
then
(
response
)
->
if
response
.
status
is
200
CommentsStore
.
update
(
discussionId
,
noteId
,
resolve
)
resolveAll
:
(
namespace
,
discussionId
,
allResolve
)
->
@
setCSRF
()
Vue
.
http
.
options
.
root
=
"/
#{
namespace
}
"
ids
=
[]
for
noteId
,
resolved
of
CommentsStore
.
state
[
discussionId
]
ids
.
push
(
noteId
)
if
resolved
is
allResolve
CommentsStore
.
loading
[
discussionId
]
=
true
@
resource
.
all
({},
{
ids
:
ids
,
discussion
:
discussionId
,
resolved
:
!
allResolve
})
.
then
(
response
)
->
if
response
.
status
is
200
for
noteId
in
ids
CommentsStore
.
update
(
discussionId
,
noteId
,
!
allResolve
)
CommentsStore
.
loading
[
discussionId
]
=
false
@
ResolveService
=
new
ResolveService
()
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/services/resolve.js.es6
0 → 100644
View file @
c926cdfa
((w) => {
class ResolveServiceClass {
constructor() {
const actions = {
resolve: {
method: 'POST',
url: 'notes{/id}/resolve',
},
all: {
method: 'POST',
url: 'notes/resolve_all',
}
};
this.resource = Vue.resource('notes{/id}', {}, actions);
}
setCSRF() {
Vue.http.headers.common['X-CSRF-Token'] = $.rails.csrfToken();
}
resolve(namespace, discussionId, noteId, resolve) {
this.setCSRF();
Vue.http.options.root = `/${namespace}`;
return this.resource
.resolve({ id: noteId }, { discussion: discussionId, resolved: resolve })
.then((response) => {
if (response.status === 200) {
CommentsStore.update(discussionId, noteId, resolve)
}
});
}
resolveAll(namespace, discussionId, allResolve) {
this.setCSRF();
Vue.http.options.root = `/${namespace}`;
let ids = []
for (const noteId in CommentsStore.state[discussionId]) {
const resolved = CommentsStore.state[discussionId][noteId];
if (resolved === allResolve) {
ids.push(noteId);
}
}
CommentsStore.loading[discussionId] = true;
return this.resource
.all({}, { ids: ids, discussion: discussionId, resolved: !allResolve })
.then((response) => {
if (response.status === 200) {
for (const noteId in ids) {
CommentsStore.update(discussionId, noteId, !allResolve);
}
}
CommentsStore.loading[discussionId] = false;
});
}
}
w.ResolveService = new ResolveServiceClass();
}(window));
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/stores/comments.js.coffee
deleted
100644 → 0
View file @
30f655c3
@
CommentsStore
=
state
:
{}
loading
:
{}
get
:
(
discussionId
,
noteId
)
->
this
.
state
[
discussionId
][
noteId
]
create
:
(
discussionId
,
noteId
,
resolved
)
->
unless
this
.
state
[
discussionId
]
?
Vue
.
set
(
this
.
state
,
discussionId
,
{})
Vue
.
set
(
this
.
loading
,
discussionId
,
false
)
Vue
.
set
(
this
.
state
[
discussionId
],
noteId
,
resolved
)
update
:
(
discussionId
,
noteId
,
resolved
)
->
this
.
state
[
discussionId
][
noteId
]
=
resolved
delete
:
(
discussionId
,
noteId
)
->
Vue
.
delete
(
this
.
state
[
discussionId
],
noteId
)
if
Object
.
keys
(
this
.
state
[
discussionId
]).
length
is
0
Vue
.
delete
(
this
.
state
,
discussionId
)
Vue
.
delete
(
this
.
loading
,
discussionId
)
This diff is collapsed.
Click to expand it.
app/assets/javascripts/line_comments/stores/comments.js.es6
0 → 100644
View file @
c926cdfa
((w) => {
w.CommentsStore = {
state: {},
loading: {},
get: function (discussionId, noteId) {
return this.state[discussionId][noteId];
},
create: function (discussionId, noteId, resolved) {
if (!this.state[discussionId]) {
Vue.set(this.state, discussionId, {});
Vue.set(this.loading, discussionId, false);
}
Vue.set(this.state[discussionId], noteId, resolved);
},
update: function (discussionId, noteId, resolved) {
this.state[discussionId][noteId] = resolved;
},
delete: function (discussionId, noteId) {
Vue.delete(this.state[discussionId], noteId);
if (Object.keys(this.state[discussionId]).length === 0) {
Vue.delete(this.state, discussionId);
Vue.delete(this.loading, discussionId);
}
},
};
}(window));
This diff is collapsed.
Click to expand it.
app/views/projects/merge_requests/_show.html.haml
View file @
c926cdfa
...
...
@@ -2,7 +2,7 @@
-
page_description
@merge_request
.
description
-
page_card_attributes
@merge_request
.
card_attributes
-
content_for
:page_specific_javascripts
do
=
page_specific_javascript_tag
(
'line_comments/
application
.js'
)
=
page_specific_javascript_tag
(
'line_comments/
line_comments_bundle
.js'
)
-
if
diff_view
==
'parallel'
-
fluid_layout
true
...
...
This diff is collapsed.
Click to expand it.
config/application.rb
View file @
c926cdfa
...
...
@@ -85,7 +85,7 @@ module Gitlab
config
.
assets
.
precompile
<<
"users/users_bundle.js"
config
.
assets
.
precompile
<<
"network/network_bundle.js"
config
.
assets
.
precompile
<<
"profile/profile_bundle.js"
config
.
assets
.
precompile
<<
"line_comments/
application
.js"
config
.
assets
.
precompile
<<
"line_comments/
line_comments_bundle
.js"
config
.
assets
.
precompile
<<
"lib/utils/*.js"
config
.
assets
.
precompile
<<
"lib/*.js"
config
.
assets
.
precompile
<<
"u2f.js"
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment