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
f5a21c59
Commit
f5a21c59
authored
Jul 28, 2017
by
Filipa Lacerda
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ci skip] Fix shortcuts for preview
parent
9b87e680
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
174 additions
and
176 deletions
+174
-176
app/assets/javascripts/notes/components/issue_comment_form.vue
...ssets/javascripts/notes/components/issue_comment_form.vue
+95
-93
app/assets/javascripts/notes/components/issue_note_form.vue
app/assets/javascripts/notes/components/issue_note_form.vue
+3
-3
app/assets/javascripts/notes/components/issue_notes_app.vue
app/assets/javascripts/notes/components/issue_notes_app.vue
+5
-4
app/assets/javascripts/notes/index.js
app/assets/javascripts/notes/index.js
+43
-40
app/assets/javascripts/notes/stores/actions.js
app/assets/javascripts/notes/stores/actions.js
+22
-23
app/assets/javascripts/notes/stores/getters.js
app/assets/javascripts/notes/stores/getters.js
+5
-11
app/assets/javascripts/notes/stores/index.js
app/assets/javascripts/notes/stores/index.js
+0
-1
app/views/projects/issues/_discussion.html.haml
app/views/projects/issues/_discussion.html.haml
+1
-1
No files found.
app/assets/javascripts/notes/components/issue_comment_form.vue
View file @
f5a21c59
...
@@ -89,10 +89,10 @@
...
@@ -89,10 +89,10 @@
if
(
res
.
errors
.
commands_only
)
{
if
(
res
.
errors
.
commands_only
)
{
this
.
discard
();
this
.
discard
();
}
else
{
}
else
{
this
.
handleError
(
);
return
Flash
(
'
Something went wrong while adding your comment. Please try again.
'
);
}
}
}
else
{
}
else
{
return
Flash
(
'
Something went wrong while adding your comment. Please try again.
'
);
this
.
discard
(
);
}
}
})
})
.
catch
(()
=>
{
.
catch
(()
=>
{
...
@@ -132,7 +132,7 @@
...
@@ -132,7 +132,7 @@
editCurrentUserLastNote
()
{
editCurrentUserLastNote
()
{
if
(
this
.
note
===
''
)
{
if
(
this
.
note
===
''
)
{
const
lastNote
=
this
.
getCurrentUserLastNote
(
window
.
gon
.
current_user_id
);
const
lastNote
=
this
.
getCurrentUserLastNote
(
window
.
gon
.
current_user_id
);
console
.
log
(
lastNote
)
if
(
lastNote
)
{
if
(
lastNote
)
{
eventHub
.
$emit
(
'
enterEditMode
'
,
{
eventHub
.
$emit
(
'
enterEditMode
'
,
{
noteId
:
lastNote
.
id
,
noteId
:
lastNote
.
id
,
...
@@ -172,6 +172,7 @@
...
@@ -172,6 +172,7 @@
/>
/>
</div>
</div>
<div
class=
"js-main-target-form timeline-content timeline-content-form common-note-form"
>
<div
class=
"js-main-target-form timeline-content timeline-content-form common-note-form"
>
<form>
<markdown-field
<markdown-field
:markdown-preview-url=
"markdownPreviewUrl"
:markdown-preview-url=
"markdownPreviewUrl"
:markdown-docs=
"markdownDocsUrl"
:markdown-docs=
"markdownDocsUrl"
...
@@ -195,7 +196,7 @@
...
@@ -195,7 +196,7 @@
<div
class=
"note-form-actions"
>
<div
class=
"note-form-actions"
>
<div
class=
"pull-left btn-group append-right-10 comment-type-dropdown js-comment-type-dropdown droplab-dropdown"
>
<div
class=
"pull-left btn-group append-right-10 comment-type-dropdown js-comment-type-dropdown droplab-dropdown"
>
<button
<button
@
click=
"handleSave
"
@
click=
"handleSave()
"
:disabled=
"!note.length"
:disabled=
"!note.length"
class=
"btn btn-nr btn-create comment-btn js-comment-button js-comment-submit-button"
class=
"btn btn-nr btn-create comment-btn js-comment-button js-comment-submit-button"
type=
"button"
>
type=
"button"
>
...
@@ -268,6 +269,7 @@
...
@@ -268,6 +269,7 @@
Discard draft
Discard draft
</button>
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</li>
</li>
...
...
app/assets/javascripts/notes/components/issue_note_form.vue
View file @
f5a21c59
...
@@ -94,7 +94,6 @@
...
@@ -94,7 +94,6 @@
to ensure information is not lost.
to ensure information is not lost.
</div>
</div>
<form
<form
@
submit=
"handleUpdate"
class=
"edit-note common-note-form"
>
class=
"edit-note common-note-form"
>
<markdown-field
<markdown-field
:markdown-preview-url=
"markdownPreviewUrl"
:markdown-preview-url=
"markdownPreviewUrl"
...
@@ -103,7 +102,7 @@
...
@@ -103,7 +102,7 @@
<textarea
<textarea
id=
"note-body"
id=
"note-body"
name=
"note[note]"
name=
"note[note]"
class=
"note-textarea js-gfm-input js-autosize markdown-area
js-note-text
"
class=
"note-textarea js-gfm-input js-autosize markdown-area"
data-supports-slash-commands=
"true"
data-supports-slash-commands=
"true"
data-supports-quick-actions=
"true"
data-supports-quick-actions=
"true"
aria-label=
"Description"
aria-label=
"Description"
...
@@ -118,7 +117,8 @@
...
@@ -118,7 +117,8 @@
</markdown-field>
</markdown-field>
<div
class=
"note-form-actions clearfix"
>
<div
class=
"note-form-actions clearfix"
>
<button
<button
type=
"submit"
type=
"button"
@
click=
"handleUpdate"
class=
"btn btn-nr btn-save"
>
class=
"btn btn-nr btn-save"
>
{{
saveButtonTitle
}}
{{
saveButtonTitle
}}
</button>
</button>
...
...
app/assets/javascripts/notes/components/issue_notes_app.vue
View file @
f5a21c59
...
@@ -48,6 +48,7 @@
...
@@ -48,6 +48,7 @@
computed
:
{
computed
:
{
...
mapGetters
([
...
mapGetters
([
'
notes
'
,
'
notes
'
,
'
notesById
'
,
'
getNotesDataByProp
'
,
'
getNotesDataByProp
'
,
]),
]),
},
},
...
@@ -55,7 +56,7 @@
...
@@ -55,7 +56,7 @@
...
mapActions
({
...
mapActions
({
actionFetchNotes
:
'
fetchNotes
'
,
actionFetchNotes
:
'
fetchNotes
'
,
poll
:
'
poll
'
,
poll
:
'
poll
'
,
t
oggleAward
:
'
toggleAward
'
,
actionT
oggleAward
:
'
toggleAward
'
,
scrollToNoteIfNeeded
:
'
scrollToNoteIfNeeded
'
,
scrollToNoteIfNeeded
:
'
scrollToNoteIfNeeded
'
,
setNotesData
:
'
setNotesData
'
,
setNotesData
:
'
setNotesData
'
,
setIssueData
:
'
setIssueData
'
,
setIssueData
:
'
setIssueData
'
,
...
@@ -113,11 +114,11 @@
...
@@ -113,11 +114,11 @@
const
{
awardName
,
noteId
}
=
data
;
const
{
awardName
,
noteId
}
=
data
;
const
endpoint
=
this
.
notesById
[
noteId
].
toggle_award_path
;
const
endpoint
=
this
.
notesById
[
noteId
].
toggle_award_path
;
this
.
t
oggleAward
({
endpoint
,
awardName
,
noteId
})
this
.
actionT
oggleAward
({
endpoint
,
awardName
,
noteId
})
.
catch
(()
=>
Flash
(
'
Something went wrong on our end.
'
));
.
catch
((
error
)
=>
Flash
(
'
Something went wrong on our end.
'
));
});
});
//
TODO: FILIPA: REMOVE JQUERY
//
JQuery is needed here because it is a custom event being dispatched with jQuery.
$
(
document
).
on
(
'
issuable:change
'
,
(
e
,
isClosed
)
=>
{
$
(
document
).
on
(
'
issuable:change
'
,
(
e
,
isClosed
)
=>
{
eventHub
.
$emit
(
'
issueStateChanged
'
,
isClosed
);
eventHub
.
$emit
(
'
issueStateChanged
'
,
isClosed
);
});
});
...
...
app/assets/javascripts/notes/index.js
View file @
f5a21c59
import
Vue
from
'
vue
'
;
import
Vue
from
'
vue
'
;
import
issueNotesApp
from
'
./components/issue_notes_app.vue
'
;
import
issueNotesApp
from
'
./components/issue_notes_app.vue
'
;
document
.
addEventListener
(
'
DOMContentLoaded
'
,
()
=>
new
Vue
({
document
.
addEventListener
(
'
DOMContentLoaded
'
,
()
=>
{
const
vm
=
new
Vue
({
el
:
'
#js-vue-notes
'
,
el
:
'
#js-vue-notes
'
,
components
:
{
components
:
{
issueNotesApp
,
issueNotesApp
,
...
@@ -35,11 +36,13 @@ document.addEventListener('DOMContentLoaded', () => new Vue({
...
@@ -35,11 +36,13 @@ document.addEventListener('DOMContentLoaded', () => new Vue({
},
},
});
});
},
},
}));
});
// This is used in note_polling_spec
window
.
issueNotes
=
{
refresh
()
{
vm
.
$refs
.
notes
.
$store
.
dispatch
(
'
poll
'
);
},
};
});
// // TODO: FILIPA: FIX THIS
// window.issueNotes = {
// refresh() {
// vm.$refs.notes.$store.dispatch('poll');
// },
// };
app/assets/javascripts/notes/stores/actions.js
View file @
f5a21c59
...
@@ -131,8 +131,8 @@ export const saveNote = ({ commit, dispatch }, noteData) => {
...
@@ -131,8 +131,8 @@ export const saveNote = ({ commit, dispatch }, noteData) => {
});
});
};
};
export
const
poll
=
({
commit
,
state
,
getters
})
=>
{
export
const
poll
=
({
commit
,
state
,
getters
})
=>
service
return
service
.
poll
(
state
.
notesData
.
notesPath
,
state
.
lastFetchedAt
)
.
poll
(
state
.
notesData
.
notesPath
,
state
.
lastFetchedAt
)
.
then
(
res
=>
res
.
json
())
.
then
(
res
=>
res
.
json
())
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
if
(
res
.
notes
.
length
)
{
if
(
res
.
notes
.
length
)
{
...
@@ -156,7 +156,6 @@ export const poll = ({ commit, state, getters }) => {
...
@@ -156,7 +156,6 @@ export const poll = ({ commit, state, getters }) => {
}
}
return
res
;
return
res
;
});
});
};
export
const
toggleAward
=
({
commit
,
getters
,
dispatch
},
data
)
=>
{
export
const
toggleAward
=
({
commit
,
getters
,
dispatch
},
data
)
=>
{
const
{
endpoint
,
awardName
,
noteId
,
skipMutalityCheck
}
=
data
;
const
{
endpoint
,
awardName
,
noteId
,
skipMutalityCheck
}
=
data
;
...
...
app/assets/javascripts/notes/stores/getters.js
View file @
f5a21c59
...
@@ -10,17 +10,10 @@ export const getIssueDataByProp = state => prop => state.issueData[prop];
...
@@ -10,17 +10,10 @@ export const getIssueDataByProp = state => prop => state.issueData[prop];
export
const
getUserData
=
state
=>
state
.
userData
;
export
const
getUserData
=
state
=>
state
.
userData
;
export
const
getUserDataByProp
=
state
=>
prop
=>
state
.
notesData
[
prop
];
export
const
getUserDataByProp
=
state
=>
prop
=>
state
.
notesData
[
prop
];
export
const
notesById
=
(
state
)
=>
{
export
const
notesById
=
state
=>
state
.
notes
.
reduce
((
acc
,
note
)
=>
{
const
notesByIdObject
=
{};
note
.
notes
.
every
(
n
=>
Object
.
assign
(
acc
,
{
[
n
.
id
]:
n
}));
// TODO: FILIPA: TRANSFORM INTO A REDUCE
return
acc
;
state
.
notes
.
forEach
((
note
)
=>
{
},
{});
note
.
notes
.
forEach
((
n
)
=>
{
notesByIdObject
[
n
.
id
]
=
n
;
});
});
return
notesByIdObject
;
};
const
reverseNotes
=
array
=>
array
.
slice
(
0
).
reverse
();
const
reverseNotes
=
array
=>
array
.
slice
(
0
).
reverse
();
const
isLastNote
=
(
note
,
userId
)
=>
!
note
.
system
&&
note
.
author
.
id
===
userId
;
const
isLastNote
=
(
note
,
userId
)
=>
!
note
.
system
&&
note
.
author
.
id
===
userId
;
...
@@ -31,6 +24,7 @@ export const getCurrentUserLastNote = state => userId => reverseNotes(state.note
...
@@ -31,6 +24,7 @@ export const getCurrentUserLastNote = state => userId => reverseNotes(state.note
return
acc
;
return
acc
;
},
[]).
filter
(
el
=>
el
!==
undefined
)[
0
];
},
[]).
filter
(
el
=>
el
!==
undefined
)[
0
];
// eslint-disable-next-line no-unused-vars
export
const
getDiscussionLastNote
=
state
=>
(
discussion
,
userId
)
=>
reverseNotes
(
discussion
.
notes
)
export
const
getDiscussionLastNote
=
state
=>
(
discussion
,
userId
)
=>
reverseNotes
(
discussion
.
notes
)
.
find
(
el
=>
isLastNote
(
el
,
userId
));
.
find
(
el
=>
isLastNote
(
el
,
userId
));
app/assets/javascripts/notes/stores/index.js
View file @
f5a21c59
...
@@ -16,7 +16,6 @@ export default new Vuex.Store({
...
@@ -16,7 +16,6 @@ export default new Vuex.Store({
notesData
:
{},
notesData
:
{},
userData
:
{},
userData
:
{},
issueData
:
{},
issueData
:
{},
paths
:
{},
},
},
actions
,
actions
,
getters
,
getters
,
...
...
app/views/projects/issues/_discussion.html.haml
View file @
f5a21c59
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
new_session_path:
new_session_path
(
:user
,
redirect_to_referer:
'yes'
),
new_session_path:
new_session_path
(
:user
,
redirect_to_referer:
'yes'
),
markdown_docs:
help_page_path
(
'user/markdown'
),
markdown_docs:
help_page_path
(
'user/markdown'
),
quick_actions_docs:
help_page_path
(
'user/project/quick_actions'
),
quick_actions_docs:
help_page_path
(
'user/project/quick_actions'
),
notes_path:
'
#
{
notes_url
}?
full_data
=
1
'
,
notes_path:
"#{notes_url}?full_data=1"
,
last_fetched_at:
Time
.
now
.
to_i
,
last_fetched_at:
Time
.
now
.
to_i
,
issue_data:
serialize_issuable
(
@issue
),
issue_data:
serialize_issuable
(
@issue
),
current_user_data:
UserSerializer
.
new
.
represent
(
current_user
).
to_json
}}
current_user_data:
UserSerializer
.
new
.
represent
(
current_user
).
to_json
}}
...
...
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