BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
c7f0d2b2
Commit
c7f0d2b2
authored
Oct 30, 2017
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Merge branch '2518-saved-configuration-for-issue-board' into 'master'"
This reverts merge request !15009
parent
bba020a5
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
93 additions
and
174 deletions
+93
-174
filtered_search_boards.js
app/assets/javascripts/boards/filtered_search_boards.js
+3
-6
boards_store.js
app/assets/javascripts/boards/stores/boards_store.js
+3
-5
dropdown_utils.js
app/assets/javascripts/filtered_search/dropdown_utils.js
+0
-10
filtered_search_manager.js
...ts/javascripts/filtered_search/filtered_search_manager.js
+5
-5
filtered_search_visual_tokens.js
...ascripts/filtered_search/filtered_search_visual_tokens.js
+11
-4
labels_select.js
app/assets/javascripts/labels_select.js
+4
-9
milestone_select.js
app/assets/javascripts/milestone_select.js
+5
-12
users_select.js
app/assets/javascripts/users_select.js
+1
-6
loading_icon.vue
...assets/javascripts/vue_shared/components/loading_icon.vue
+1
-7
popup_dialog.vue
...assets/javascripts/vue_shared/components/popup_dialog.vue
+36
-65
common.scss
app/assets/stylesheets/framework/common.scss
+0
-3
dropdowns.scss
app/assets/stylesheets/framework/dropdowns.scss
+0
-1
modal.scss
app/assets/stylesheets/framework/modal.scss
+0
-8
tw_bootstrap_variables.scss
app/assets/stylesheets/framework/tw_bootstrap_variables.scss
+0
-33
repo.scss
app/assets/stylesheets/pages/repo.scss
+13
-0
boards_helper.rb
app/helpers/boards_helper.rb
+11
-0
No files found.
app/assets/javascripts/boards/filtered_search_boards.js
View file @
c7f0d2b2
...
...
@@ -11,8 +11,7 @@ export default class FilteredSearchBoards extends gl.FilteredSearchManager {
// Issue boards is slightly different, we handle all the requests async
// instead or reloading the page, we just re-fire the list ajax requests
this
.
isHandledAsync
=
true
;
this
.
cantEdit
=
cantEdit
.
filter
(
i
=>
typeof
i
===
'string'
);
this
.
cantEditWithValue
=
cantEdit
.
filter
(
i
=>
typeof
i
===
'object'
);
this
.
cantEdit
=
cantEdit
;
}
updateObject
(
path
)
{
...
...
@@ -43,9 +42,7 @@ export default class FilteredSearchBoards extends gl.FilteredSearchManager {
this
.
filteredSearchInput
.
dispatchEvent
(
new
Event
(
'input'
));
}
canEdit
(
tokenName
,
tokenValue
)
{
if
(
this
.
cantEdit
.
includes
(
tokenName
))
return
false
;
return
this
.
cantEditWithValue
.
findIndex
(
token
=>
token
.
name
===
tokenName
&&
token
.
value
===
tokenValue
)
===
-
1
;
canEdit
(
tokenName
)
{
return
this
.
cantEdit
.
indexOf
(
tokenName
)
===
-
1
;
}
}
app/assets/javascripts/boards/stores/boards_store.js
View file @
c7f0d2b2
...
...
@@ -14,18 +14,16 @@ gl.issueBoards.BoardsStore = {
},
state
:
{},
detail
:
{
issue
:
{}
,
issue
:
{}
},
moving
:
{
issue
:
{},
list
:
{}
,
list
:
{}
},
create
()
{
this
.
state
.
lists
=
[];
this
.
filter
.
path
=
getUrlParamsArray
().
join
(
'&'
);
this
.
detail
=
{
issue
:
{},
};
this
.
detail
=
{
issue
:
{}
};
},
addList
(
listObj
,
defaultAvatar
)
{
const
list
=
new
List
(
listObj
,
defaultAvatar
);
...
...
app/assets/javascripts/filtered_search/dropdown_utils.js
View file @
c7f0d2b2
...
...
@@ -147,16 +147,6 @@ class DropdownUtils {
return
dataValue
!==
null
;
}
static
getVisualTokenValues
(
visualToken
)
{
const
tokenName
=
visualToken
&&
visualToken
.
querySelector
(
'.name'
).
textContent
.
trim
();
let
tokenValue
=
visualToken
&&
visualToken
.
querySelector
(
'.value'
)
&&
visualToken
.
querySelector
(
'.value'
).
textContent
.
trim
();
if
(
tokenName
===
'label'
&&
tokenValue
)
{
// remove leading symbol and wrapping quotes
tokenValue
=
tokenValue
.
replace
(
/^~
(
"|'
)?(
.*
)
/
,
'$2'
).
replace
(
/
(
"|'
)
$/
,
''
);
}
return
{
tokenName
,
tokenValue
};
}
// Determines the full search query (visual tokens + input)
static
getSearchQuery
(
untilInput
=
false
)
{
const
container
=
FilteredSearchContainer
.
container
;
...
...
app/assets/javascripts/filtered_search/filtered_search_manager.js
View file @
c7f0d2b2
...
...
@@ -185,8 +185,8 @@ class FilteredSearchManager {
if
(
e
.
keyCode
===
8
||
e
.
keyCode
===
46
)
{
const
{
lastVisualToken
}
=
gl
.
FilteredSearchVisualTokens
.
getLastVisualTokenBeforeInput
();
const
{
tokenName
,
tokenValue
}
=
gl
.
DropdownUtils
.
getVisualTokenValues
(
lastVisualToken
);
const
canEdit
=
tokenName
&&
this
.
canEdit
&&
this
.
canEdit
(
tokenName
,
tokenValu
e
);
const
sanitizedTokenName
=
lastVisualToken
&&
lastVisualToken
.
querySelector
(
'.name'
).
textContent
.
trim
(
);
const
canEdit
=
sanitizedTokenName
&&
this
.
canEdit
&&
this
.
canEdit
(
sanitizedTokenNam
e
);
if
(
this
.
filteredSearchInput
.
value
===
''
&&
lastVisualToken
&&
canEdit
)
{
this
.
filteredSearchInput
.
value
=
gl
.
FilteredSearchVisualTokens
.
getLastTokenPartial
();
gl
.
FilteredSearchVisualTokens
.
removeLastTokenPartial
();
...
...
@@ -336,8 +336,8 @@ class FilteredSearchManager {
let
canClearToken
=
t
.
classList
.
contains
(
'js-visual-token'
);
if
(
canClearToken
)
{
const
{
tokenName
,
tokenValue
}
=
gl
.
DropdownUtils
.
getVisualTokenValues
(
t
);
canClearToken
=
this
.
canEdit
&&
this
.
canEdit
(
token
Name
,
tokenValue
);
const
tokenKey
=
t
.
querySelector
(
'.name'
).
textContent
.
trim
(
);
canClearToken
=
this
.
canEdit
&&
this
.
canEdit
(
token
Key
);
}
if
(
canClearToken
)
{
...
...
@@ -469,7 +469,7 @@ class FilteredSearchManager {
}
hasFilteredSearch
=
true
;
const
canEdit
=
this
.
canEdit
&&
this
.
canEdit
(
sanitizedKey
,
sanitizedValue
);
const
canEdit
=
this
.
canEdit
&&
this
.
canEdit
(
sanitizedKey
);
gl
.
FilteredSearchVisualTokens
.
addFilterVisualToken
(
sanitizedKey
,
`
${
symbol
}${
quotationsToUse
}${
sanitizedValue
}${
quotationsToUse
}
`
,
...
...
app/assets/javascripts/filtered_search/filtered_search_visual_tokens.js
View file @
c7f0d2b2
...
...
@@ -38,14 +38,21 @@ class FilteredSearchVisualTokens {
}
static
createVisualTokenElementHTML
(
canEdit
=
true
)
{
let
removeTokenMarkup
=
''
;
if
(
canEdit
)
{
removeTokenMarkup
=
`
<div class="remove-token" role="button">
<i class="fa fa-close"></i>
</div>
`
;
}
return
`
<div class="
${
canEdit
?
'selectable'
:
'hidden'
}
" role="button">
<div class="
selectable
" role="button">
<div class="name"></div>
<div class="value-container">
<div class="value"></div>
<div class="remove-token" role="button">
<i class="fa fa-close"></i>
</div>
${
removeTokenMarkup
}
</div>
</div>
`
;
...
...
app/assets/javascripts/labels_select.js
View file @
c7f0d2b2
...
...
@@ -8,7 +8,7 @@ import CreateLabelDropdown from './create_label';
(
function
()
{
this
.
LabelsSelect
=
(
function
()
{
function
LabelsSelect
(
els
,
options
=
{}
)
{
function
LabelsSelect
(
els
)
{
var
_this
,
$els
;
_this
=
this
;
...
...
@@ -58,7 +58,6 @@ import CreateLabelDropdown from './create_label';
labelHTMLTemplate
=
_
.
template
(
'<% _.each(labels, function(label){ %> <a href="<%- ["",issueURLSplit[1], issueURLSplit[2],""].join("/") %>issues?label_name[]=<%- encodeURIComponent(label.title) %>"> <span class="label has-tooltip color-label" title="<%- label.description %>" style="background-color: <%- label.color %>; color: <%- label.text_color %>;"> <%- label.title %> </span> </a> <% }); %>'
);
labelNoneHTMLTemplate
=
'<span class="no-value">None</span>'
;
}
const
handleClick
=
options
.
handleClick
;
$sidebarLabelTooltip
.
tooltip
();
...
...
@@ -317,9 +316,9 @@ import CreateLabelDropdown from './create_label';
},
multiSelect
:
$dropdown
.
hasClass
(
'js-multiselect'
),
vue
:
$dropdown
.
hasClass
(
'js-issue-board-sidebar'
),
clicked
:
function
(
clickEvent
)
{
const
{
$el
,
e
,
isMarking
}
=
clickEvent
;
const
label
=
clickEvent
.
selectedObj
;
clicked
:
function
(
options
)
{
const
{
$el
,
e
,
isMarking
}
=
options
;
const
label
=
options
.
selectedObj
;
var
isIssueIndex
,
isMRIndex
,
page
,
boardsModel
;
var
fadeOutLoader
=
()
=>
{
...
...
@@ -392,10 +391,6 @@ import CreateLabelDropdown from './create_label';
.
then
(
fadeOutLoader
)
.
catch
(
fadeOutLoader
);
}
else
if
(
handleClick
)
{
e
.
preventDefault
();
handleClick
(
label
);
}
else
{
if
(
$dropdown
.
hasClass
(
'js-multiselect'
))
{
...
...
app/assets/javascripts/milestone_select.js
View file @
c7f0d2b2
...
...
@@ -5,7 +5,7 @@ import _ from 'underscore';
(
function
()
{
this
.
MilestoneSelect
=
(
function
()
{
function
MilestoneSelect
(
currentProject
,
els
,
options
=
{}
)
{
function
MilestoneSelect
(
currentProject
,
els
)
{
var
_this
,
$els
;
if
(
currentProject
!=
null
)
{
_this
=
this
;
...
...
@@ -136,26 +136,19 @@ import _ from 'underscore';
},
opened
:
function
(
e
)
{
const
$el
=
$
(
e
.
currentTarget
);
if
(
$dropdown
.
hasClass
(
'js-issue-board-sidebar'
)
||
options
.
handleClick
)
{
if
(
$dropdown
.
hasClass
(
'js-issue-board-sidebar'
))
{
selectedMilestone
=
$dropdown
[
0
].
dataset
.
selected
||
selectedMilestoneDefault
;
}
$
(
'a.is-active'
,
$el
).
removeClass
(
'is-active'
);
$
(
`[data-milestone-id="
${
selectedMilestone
}
"] > a`
,
$el
).
addClass
(
'is-active'
);
},
vue
:
$dropdown
.
hasClass
(
'js-issue-board-sidebar'
),
clicked
:
function
(
clickEvent
)
{
const
{
$el
,
e
}
=
clickEvent
;
let
selected
=
clickEvent
.
selectedObj
;
clicked
:
function
(
options
)
{
const
{
$el
,
e
}
=
options
;
let
selected
=
options
.
selectedObj
;
var
data
,
isIssueIndex
,
isMRIndex
,
isSelecting
,
page
,
boardsStore
;
if
(
!
selected
)
return
;
if
(
options
.
handleClick
)
{
e
.
preventDefault
();
options
.
handleClick
(
selected
);
return
;
}
page
=
$
(
'body'
).
attr
(
'data-page'
);
isIssueIndex
=
page
===
'projects:issues:index'
;
isMRIndex
=
(
page
===
page
&&
page
===
'projects:merge_requests:index'
);
...
...
app/assets/javascripts/users_select.js
View file @
c7f0d2b2
...
...
@@ -6,7 +6,7 @@ import _ from 'underscore';
// TODO: remove eventHub hack after code splitting refactor
window
.
emitSidebarEvent
=
window
.
emitSidebarEvent
||
$
.
noop
;
function
UsersSelect
(
currentUser
,
els
,
options
=
{}
)
{
function
UsersSelect
(
currentUser
,
els
)
{
var
$els
;
this
.
users
=
this
.
users
.
bind
(
this
);
this
.
user
=
this
.
user
.
bind
(
this
);
...
...
@@ -20,8 +20,6 @@ function UsersSelect(currentUser, els, options = {}) {
}
}
const
{
handleClick
}
=
options
;
$els
=
$
(
els
);
if
(
!
els
)
{
...
...
@@ -444,9 +442,6 @@ function UsersSelect(currentUser, els, options = {}) {
}
if
(
$el
.
closest
(
'.add-issues-modal'
).
length
)
{
gl
.
issueBoards
.
ModalStore
.
store
.
filter
[
$dropdown
.
data
(
'field-name'
)]
=
user
.
id
;
}
else
if
(
handleClick
)
{
e
.
preventDefault
();
handleClick
(
user
,
isMarking
);
}
else
if
(
$dropdown
.
hasClass
(
'js-filter-submit'
)
&&
(
isIssueIndex
||
isMRIndex
))
{
return
Issuable
.
filterResults
(
$dropdown
.
closest
(
'form'
));
}
else
if
(
$dropdown
.
hasClass
(
'js-filter-submit'
))
{
...
...
app/assets/javascripts/vue_shared/components/loading_icon.vue
View file @
c7f0d2b2
...
...
@@ -18,12 +18,6 @@
required
:
false
,
default
:
false
,
},
class
:
{
type
:
String
,
required
:
false
,
default
:
''
,
},
},
computed
:
{
...
...
@@ -31,7 +25,7 @@
return
this
.
inline
?
'span'
:
'div'
;
},
cssClass
()
{
return
`fa-
${
this
.
size
}
x
${
this
.
class
}
`
.
trim
()
;
return
`fa-
${
this
.
size
}
x
`
;
},
},
};
...
...
app/assets/javascripts/vue_shared/components/popup_dialog.vue
View file @
c7f0d2b2
...
...
@@ -5,27 +5,17 @@ export default {
props
:
{
title
:
{
type
:
String
,
required
:
fals
e
,
required
:
tru
e
,
},
text
:
{
type
:
String
,
required
:
false
,
},
hideFooter
:
{
type
:
Boolean
,
required
:
false
,
default
:
false
,
},
kind
:
{
type
:
String
,
required
:
false
,
default
:
'primary'
,
},
modalDialogClass
:
{
type
:
String
,
required
:
false
,
default
:
''
,
},
closeKind
:
{
type
:
String
,
required
:
false
,
...
...
@@ -40,11 +30,6 @@ export default {
type
:
String
,
required
:
true
,
},
submitDisabled
:
{
type
:
Boolean
,
required
:
false
,
default
:
false
,
},
},
computed
:
{
...
...
@@ -72,57 +57,43 @@ export default {
</
script
>
<
template
>
<div
class=
"modal-open"
>
<div
class=
"modal popup-dialog"
role=
"dialog"
tabindex=
"-1"
>
<div
:class=
"modalDialogClass"
class=
"modal-dialog"
role=
"document"
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<slot
name=
"header"
>
<h4
class=
"modal-title pull-left"
>
{{
this
.
title
}}
</h4>
<button
type=
"button"
class=
"close pull-right"
@
click=
"close"
aria-label=
"Close"
>
<span
aria-hidden=
"true"
>
×
</span>
</button>
</slot>
</div>
<div
class=
"modal-body"
>
<slot
name=
"body"
:text=
"text"
>
<p>
{{
this
.
text
}}
</p>
</slot>
</div>
<div
class=
"modal-footer"
v-if=
"!hideFooter"
>
<button
type=
"button"
class=
"btn pull-left"
:class=
"btnCancelKindClass"
@
click=
"close"
>
{{
closeButtonLabel
}}
</button>
<button
type=
"button"
class=
"btn pull-right"
:class=
"btnKindClass"
@
click=
"emitSubmit(true)"
>
{{
primaryButtonLabel
}}
</button>
</div>
<div
class=
"modal popup-dialog"
role=
"dialog"
tabindex=
"-1"
>
<div
class=
"modal-dialog"
role=
"document"
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<button
type=
"button"
class=
"close"
@
click=
"close"
aria-label=
"Close"
>
<span
aria-hidden=
"true"
>
×
</span>
</button>
<h4
class=
"modal-title"
>
{{
this
.
title
}}
</h4>
</div>
<div
class=
"modal-body"
>
<slot
name=
"body"
:text=
"text"
>
<p>
{{
text
}}
</p>
</slot>
</div>
<div
class=
"modal-footer"
>
<button
type=
"button"
class=
"btn"
:class=
"btnCancelKindClass"
@
click=
"close"
>
{{
closeButtonLabel
}}
</button>
<button
type=
"button"
class=
"btn"
:class=
"btnKindClass"
@
click=
"emitSubmit(true)"
>
{{
primaryButtonLabel
}}
</button>
</div>
</div>
</div>
<div
class=
"modal-backdrop fade in"
/>
</div>
</
template
>
app/assets/stylesheets/framework/common.scss
View file @
c7f0d2b2
...
...
@@ -4,9 +4,6 @@
.cred
{
color
:
$common-red
;
}
.cgreen
{
color
:
$common-green
;
}
.cdark
{
color
:
$common-gray-dark
;
}
.text-secondary
{
color
:
$gl-text-color-secondary
;
}
/** COMMON CLASSES **/
.prepend-top-0
{
margin-top
:
0
;
}
...
...
app/assets/stylesheets/framework/dropdowns.scss
View file @
c7f0d2b2
...
...
@@ -37,7 +37,6 @@
.dropdown-menu-nav
{
@include
set-visible
;
display
:
block
;
min-height
:
40px
;
@media
(
max-width
:
$screen-xs-max
)
{
width
:
100%
;
...
...
app/assets/stylesheets/framework/modal.scss
View file @
c7f0d2b2
...
...
@@ -42,11 +42,3 @@ body.modal-open {
width
:
98%
;
}
}
.modal.popup-dialog
{
display
:
block
;
}
.modal-body
{
background-color
:
$modal-body-bg
;
}
app/assets/stylesheets/framework/tw_bootstrap_variables.scss
View file @
c7f0d2b2
...
...
@@ -164,36 +164,3 @@ $pre-border-color: $border-color;
$table-bg-accent
:
$gray-light
;
$zindex-popover
:
900
;
//== Modals
//
//##
//** Padding applied to the modal body
$modal-inner-padding
:
$gl-padding
;
//** Padding applied to the modal title
$modal-title-padding
:
$gl-padding
;
//** Modal title line-height
// $modal-title-line-height: $line-height-base
//** Background color of modal content area
$modal-content-bg
:
$gray-light
;
$modal-body-bg
:
$white-light
;
//** Modal content border color
// $modal-content-border-color: rgba(0,0,0,.2)
//** Modal content border color **for IE8**
// $modal-content-fallback-border-color: #999
//** Modal backdrop background color
// $modal-backdrop-bg: #000
//** Modal backdrop opacity
// $modal-backdrop-opacity: .5
//** Modal header border color
// $modal-header-border-color: #e5e5e5
//** Modal footer border color
// $modal-footer-border-color: $modal-header-border-color
// $modal-lg: 900px
// $modal-md: 600px
// $modal-sm: 300px
app/assets/stylesheets/pages/repo.scss
View file @
c7f0d2b2
...
...
@@ -7,6 +7,19 @@
background
:
$black-transparent
;
}
.modal.popup-dialog
{
display
:
block
;
background-color
:
$black-transparent
;
z-index
:
2100
;
@media
(
min-width
:
$screen-md-min
)
{
.modal-dialog
{
width
:
600px
;
margin
:
30px
auto
;
}
}
}
.project-refs-form
,
.project-refs-target-form
{
display
:
inline-block
;
...
...
app/helpers/boards_helper.rb
View file @
c7f0d2b2
...
...
@@ -20,6 +20,17 @@ module BoardsHelper
project_issues_path
(
@project
)
end
def
current_board_json
board
=
@board
||
@boards
.
first
board
.
to_json
(
only:
[
:id
,
:name
,
:milestone_id
],
include:
{
milestone:
{
only:
[
:title
]
}
}
)
end
def
board_base_url
project_boards_path
(
@project
)
end
...
...
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