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
030de8b3
Commit
030de8b3
authored
Nov 20, 2017
by
Filipa Lacerda
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Export code as ES6 modules
parent
2b594daf
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
176 additions
and
209 deletions
+176
-209
app/assets/javascripts/blob_edit/blob_bundle.js
app/assets/javascripts/blob_edit/blob_bundle.js
+1
-2
app/assets/javascripts/dispatcher.js
app/assets/javascripts/dispatcher.js
+3
-4
app/assets/javascripts/init_legacy_filters.js
app/assets/javascripts/init_legacy_filters.js
+2
-3
app/assets/javascripts/issuable_bulk_update_sidebar.js
app/assets/javascripts/issuable_bulk_update_sidebar.js
+2
-3
app/assets/javascripts/main.js
app/assets/javascripts/main.js
+0
-6
app/assets/javascripts/milestone.js
app/assets/javascripts/milestone.js
+40
-45
app/assets/javascripts/new_branch_form.js
app/assets/javascripts/new_branch_form.js
+82
-86
app/assets/javascripts/new_commit_form.js
app/assets/javascripts/new_commit_form.js
+25
-29
app/assets/javascripts/subscription_select.js
app/assets/javascripts/subscription_select.js
+20
-29
spec/javascripts/new_branch_spec.js
spec/javascripts/new_branch_spec.js
+1
-2
No files found.
app/assets/javascripts/blob_edit/blob_bundle.js
View file @
030de8b3
/* eslint-disable func-names, space-before-function-paren, prefer-arrow-callback, no-var, quotes, vars-on-top, no-unused-vars, no-new, max-len */
/* global EditBlob */
/* global NewCommitForm */
import
NewCommitForm
from
'
../new_commit_form
'
;
import
EditBlob
from
'
./edit_blob
'
;
import
BlobFileDropzone
from
'
../blob/blob_file_dropzone
'
;
...
...
app/assets/javascripts/dispatcher.js
View file @
030de8b3
...
...
@@ -2,11 +2,11 @@
import
{
s__
}
from
'
./locale
'
;
import
projectSelect
from
'
./project_select
'
;
import
IssuableIndex
from
'
./issuable_index
'
;
/* global Milestone */
import
Milestone
from
'
./milestone
'
;
import
IssuableForm
from
'
./issuable_form
'
;
import
LabelsSelect
from
'
./labels_select
'
;
/* global MilestoneSelect */
/* global NewBranchForm */
import
NewBranchForm
from
'
./new_branch_form
'
;
/* global NotificationsForm */
/* global NotificationsDropdown */
import
groupAvatar
from
'
./group_avatar
'
;
...
...
@@ -18,8 +18,7 @@ import groupsSelect from './groups_select';
/* global Search */
/* global Admin */
import
NamespaceSelect
from
'
./namespace_select
'
;
/* global NewCommitForm */
/* global NewBranchForm */
import
NewCommitForm
from
'
./new_commit_form
'
;
import
Project
from
'
./project
'
;
import
projectAvatar
from
'
./project_avatar
'
;
/* global MergeRequest */
...
...
app/assets/javascripts/init_legacy_filters.js
View file @
030de8b3
/* eslint-disable no-new */
import
LabelsSelect
from
'
./labels_select
'
;
/* global MilestoneSelect */
/* global SubscriptionSelect */
import
subscriptionSelect
from
'
./subscription_select
'
;
import
UsersSelect
from
'
./users_select
'
;
import
issueStatusSelect
from
'
./issue_status_select
'
;
...
...
@@ -11,5 +10,5 @@ export default () => {
new
LabelsSelect
();
new
MilestoneSelect
();
issueStatusSelect
();
new
S
ubscriptionSelect
();
s
ubscriptionSelect
();
};
app/assets/javascripts/issuable_bulk_update_sidebar.js
View file @
030de8b3
/* eslint-disable class-methods-use-this, no-new */
/* global MilestoneSelect */
/* global SubscriptionSelect */
import
IssuableBulkUpdateActions
from
'
./issuable_bulk_update_actions
'
;
import
'
./milestone_select
'
;
import
issueStatusSelect
from
'
./issue_status_select
'
;
import
'
./subscription_select
'
;
import
subscriptionSelect
from
'
./subscription_select
'
;
import
LabelsSelect
from
'
./labels_select
'
;
const
HIDDEN_CLASS
=
'
hidden
'
;
...
...
@@ -48,7 +47,7 @@ export default class IssuableBulkUpdateSidebar {
new
LabelsSelect
();
new
MilestoneSelect
();
issueStatusSelect
();
new
S
ubscriptionSelect
();
s
ubscriptionSelect
();
}
setupBulkUpdateActions
()
{
...
...
app/assets/javascripts/main.js
View file @
030de8b3
...
...
@@ -58,11 +58,7 @@ import './line_highlighter';
import
initLogoAnimation
from
'
./logo
'
;
import
'
./merge_request
'
;
import
'
./merge_request_tabs
'
;
import
'
./milestone
'
;
import
'
./milestone_select
'
;
import
'
./namespace_select
'
;
import
'
./new_branch_form
'
;
import
'
./new_commit_form
'
;
import
'
./notes
'
;
import
'
./notifications_dropdown
'
;
import
'
./notifications_form
'
;
...
...
@@ -78,8 +74,6 @@ import './render_gfm';
import
'
./right_sidebar
'
;
import
'
./search
'
;
import
'
./search_autocomplete
'
;
import
'
./smart_interval
'
;
import
'
./subscription_select
'
;
import
initBreadcrumbs
from
'
./breadcrumb
'
;
import
'
./dispatcher
'
;
...
...
app/assets/javascripts/milestone.js
View file @
030de8b3
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-use-before-define, camelcase, quotes, object-shorthand, no-shadow, no-unused-vars, comma-dangle, no-var, prefer-template, no-underscore-dangle, consistent-return, one-var, one-var-declaration-per-line, default-case, prefer-arrow-callback, max-len */
/* global Sortable */
import
Flash
from
'
./flash
'
;
(
function
()
{
this
.
Milestone
=
(
function
()
{
function
Milestone
()
{
this
.
bindTabsSwitching
();
export
default
class
Milestone
{
constructor
()
{
this
.
bindTabsSwitching
();
// Load merge request tab if it is active
// merge request tab is active based on different conditions in the backend
this
.
loadTab
(
$
(
'
.js-milestone-tabs .active a
'
));
// Load merge request tab if it is active
// merge request tab is active based on different conditions in the backend
this
.
loadTab
(
$
(
'
.js-milestone-tabs .active a
'
));
this
.
loadInitialTab
();
}
this
.
loadInitialTab
();
}
bindTabsSwitching
()
{
return
$
(
'
a[data-toggle="tab"]
'
).
on
(
'
show.bs.tab
'
,
(
e
)
=>
{
const
$target
=
$
(
e
.
target
);
Milestone
.
prototype
.
bindTabsSwitching
=
function
()
{
return
$
(
'
a[data-toggle="tab"]
'
).
on
(
'
show.bs.tab
'
,
(
e
)
=>
{
const
$target
=
$
(
e
.
target
);
location
.
hash
=
$target
.
attr
(
'
href
'
);
this
.
loadTab
(
$target
);
});
}
// eslint-disable-next-line class-methods-use-this
loadInitialTab
()
{
const
$target
=
$
(
`.js-milestone-tabs a[href="
${
location
.
hash
}
"]`
);
location
.
hash
=
$target
.
attr
(
'
href
'
);
this
.
loadTab
(
$target
);
if
(
$target
.
length
)
{
$target
.
tab
(
'
show
'
);
}
}
// eslint-disable-next-line class-methods-use-this
loadTab
(
$target
)
{
const
endpoint
=
$target
.
data
(
'
endpoint
'
);
const
tabElId
=
$target
.
attr
(
'
href
'
);
if
(
endpoint
&&
!
$target
.
hasClass
(
'
is-loaded
'
))
{
$
.
ajax
({
url
:
endpoint
,
dataType
:
'
JSON
'
,
})
.
fail
(()
=>
new
Flash
(
'
Error loading milestone tab
'
))
.
done
((
data
)
=>
{
$
(
tabElId
).
html
(
data
.
html
);
$target
.
addClass
(
'
is-loaded
'
);
});
};
Milestone
.
prototype
.
loadInitialTab
=
function
()
{
const
$target
=
$
(
`.js-milestone-tabs a[href="
${
location
.
hash
}
"]`
);
if
(
$target
.
length
)
{
$target
.
tab
(
'
show
'
);
}
};
Milestone
.
prototype
.
loadTab
=
function
(
$target
)
{
const
endpoint
=
$target
.
data
(
'
endpoint
'
);
const
tabElId
=
$target
.
attr
(
'
href
'
);
if
(
endpoint
&&
!
$target
.
hasClass
(
'
is-loaded
'
))
{
$
.
ajax
({
url
:
endpoint
,
dataType
:
'
JSON
'
,
})
.
fail
(()
=>
new
Flash
(
'
Error loading milestone tab
'
))
.
done
((
data
)
=>
{
$
(
tabElId
).
html
(
data
.
html
);
$target
.
addClass
(
'
is-loaded
'
);
});
}
};
return
Milestone
;
})();
}).
call
(
window
);
}
}
}
app/assets/javascripts/new_branch_form.js
View file @
030de8b3
/* eslint-disable func-names, space-before-function-paren, no-var, one-var, prefer-rest-params, max-len, vars-on-top, wrap-iife, consistent-return, comma-dangle, one-var-declaration-per-line, quotes, no-return-assign, prefer-arrow-callback, prefer-template, no-shadow, no-else-return, max-len, object-shorthand */
import
RefSelectDropdown
from
'
~
/ref_select_dropdown
'
;
import
RefSelectDropdown
from
'
.
/ref_select_dropdown
'
;
(
function
()
{
this
.
NewBranchForm
=
(
function
()
{
function
NewBranchForm
(
form
,
availableRefs
)
{
this
.
validate
=
this
.
validate
.
bind
(
this
);
this
.
branchNameError
=
form
.
find
(
'
.js-branch-name-error
'
);
this
.
name
=
form
.
find
(
'
.js-branch-name
'
);
this
.
ref
=
form
.
find
(
'
#ref
'
);
new
RefSelectDropdown
(
$
(
'
.js-branch-select
'
),
availableRefs
);
// eslint-disable-line no-new
this
.
setupRestrictions
();
this
.
addBinding
();
this
.
init
();
export
default
class
NewBranchForm
{
constructor
(
form
,
availableRefs
)
{
this
.
validate
=
this
.
validate
.
bind
(
this
);
this
.
branchNameError
=
form
.
find
(
'
.js-branch-name-error
'
);
this
.
name
=
form
.
find
(
'
.js-branch-name
'
);
this
.
ref
=
form
.
find
(
'
#ref
'
);
new
RefSelectDropdown
(
$
(
'
.js-branch-select
'
),
availableRefs
);
// eslint-disable-line no-new
this
.
setupRestrictions
();
this
.
addBinding
();
this
.
init
();
}
addBinding
()
{
return
this
.
name
.
on
(
'
blur
'
,
this
.
validate
);
}
init
()
{
if
(
this
.
name
.
length
&&
this
.
name
.
val
().
length
>
0
)
{
return
this
.
name
.
trigger
(
'
blur
'
);
}
}
NewBranchForm
.
prototype
.
addBinding
=
function
()
{
return
this
.
name
.
on
(
'
blur
'
,
this
.
validate
);
setupRestrictions
()
{
var
endsWith
,
invalid
,
single
,
startsWith
;
startsWith
=
{
pattern
:
/^
(\/
|
\.)
/g
,
prefix
:
"
can't start with
"
,
conjunction
:
"
or
"
};
NewBranchForm
.
prototype
.
init
=
function
()
{
if
(
this
.
name
.
length
&&
this
.
name
.
val
().
length
>
0
)
{
return
this
.
name
.
trigger
(
'
blur
'
);
}
endsWith
=
{
pattern
:
/
(\/
|
\.
|
\.
lock
)
$/g
,
prefix
:
"
can't end in
"
,
conjunction
:
"
or
"
};
NewBranchForm
.
prototype
.
setupRestrictions
=
function
()
{
var
endsWith
,
invalid
,
single
,
startsWith
;
startsWith
=
{
pattern
:
/^
(\/
|
\.)
/g
,
prefix
:
"
can't start with
"
,
conjunction
:
"
or
"
};
endsWith
=
{
pattern
:
/
(\/
|
\.
|
\.
lock
)
$/g
,
prefix
:
"
can't end in
"
,
conjunction
:
"
or
"
};
invalid
=
{
pattern
:
/
(\s
|~|
\^
|:|
\?
|
\*
|
\[
|
\\
|
\.\.
|@
\{
|
\/{2,}){1}
/g
,
prefix
:
"
can't contain
"
,
conjunction
:
"
,
"
};
single
=
{
pattern
:
/^@+$/g
,
prefix
:
"
can't be
"
,
conjunction
:
"
or
"
};
return
this
.
restrictions
=
[
startsWith
,
invalid
,
endsWith
,
single
];
invalid
=
{
pattern
:
/
(\s
|~|
\^
|:|
\?
|
\*
|
\[
|
\\
|
\.\.
|@
\{
|
\/{2,}){1}
/g
,
prefix
:
"
can't contain
"
,
conjunction
:
"
,
"
};
single
=
{
pattern
:
/^@+$/g
,
prefix
:
"
can't be
"
,
conjunction
:
"
or
"
};
return
this
.
restrictions
=
[
startsWith
,
invalid
,
endsWith
,
single
];
}
NewBranchForm
.
prototype
.
validate
=
function
()
{
var
errorMessage
,
errors
,
formatter
,
unique
,
validator
;
const
indexOf
=
[].
indexOf
;
validate
()
{
var
errorMessage
,
errors
,
formatter
,
unique
,
validator
;
const
indexOf
=
[].
indexOf
;
this
.
branchNameError
.
empty
();
unique
=
function
(
values
,
value
)
{
if
(
indexOf
.
call
(
values
,
value
)
===
-
1
)
{
values
.
push
(
value
);
}
return
values
;
};
formatter
=
function
(
values
,
restriction
)
{
var
formatted
;
formatted
=
values
.
map
(
function
(
value
)
{
switch
(
false
)
{
case
!
/
\s
/
.
test
(
value
):
return
'
spaces
'
;
case
!
/
\/{2,}
/g
.
test
(
value
):
return
'
consecutive slashes
'
;
default
:
return
"
'
"
+
value
+
"
'
"
;
}
});
return
restriction
.
prefix
+
"
"
+
(
formatted
.
join
(
restriction
.
conjunction
));
};
validator
=
(
function
(
_this
)
{
return
function
(
errors
,
restriction
)
{
var
matched
;
matched
=
_this
.
name
.
val
().
match
(
restriction
.
pattern
);
if
(
matched
)
{
return
errors
.
concat
(
formatter
(
matched
.
reduce
(
unique
,
[]),
restriction
));
}
else
{
return
errors
;
}
};
})(
this
);
errors
=
this
.
restrictions
.
reduce
(
validator
,
[]);
if
(
errors
.
length
>
0
)
{
errorMessage
=
$
(
"
<span/>
"
).
text
(
errors
.
join
(
'
,
'
));
return
this
.
branchNameError
.
append
(
errorMessage
);
this
.
branchNameError
.
empty
();
unique
=
function
(
values
,
value
)
{
if
(
indexOf
.
call
(
values
,
value
)
===
-
1
)
{
values
.
push
(
value
);
}
return
values
;
};
return
NewBranchForm
;
})();
}).
call
(
window
);
formatter
=
function
(
values
,
restriction
)
{
var
formatted
;
formatted
=
values
.
map
(
function
(
value
)
{
switch
(
false
)
{
case
!
/
\s
/
.
test
(
value
):
return
'
spaces
'
;
case
!
/
\/{2,}
/g
.
test
(
value
):
return
'
consecutive slashes
'
;
default
:
return
"
'
"
+
value
+
"
'
"
;
}
});
return
restriction
.
prefix
+
"
"
+
(
formatted
.
join
(
restriction
.
conjunction
));
};
validator
=
(
function
(
_this
)
{
return
function
(
errors
,
restriction
)
{
var
matched
;
matched
=
_this
.
name
.
val
().
match
(
restriction
.
pattern
);
if
(
matched
)
{
return
errors
.
concat
(
formatter
(
matched
.
reduce
(
unique
,
[]),
restriction
));
}
else
{
return
errors
;
}
};
})(
this
);
errors
=
this
.
restrictions
.
reduce
(
validator
,
[]);
if
(
errors
.
length
>
0
)
{
errorMessage
=
$
(
"
<span/>
"
).
text
(
errors
.
join
(
'
,
'
));
return
this
.
branchNameError
.
append
(
errorMessage
);
}
}
}
app/assets/javascripts/new_commit_form.js
View file @
030de8b3
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-rest-params, wrap-iife, no-return-assign, max-len */
(
function
()
{
this
.
NewCommitForm
=
(
function
()
{
function
NewCommitForm
(
form
)
{
this
.
form
=
form
;
this
.
renderDestination
=
this
.
renderDestination
.
bind
(
this
);
this
.
branchName
=
form
.
find
(
'
.js-branch-name
'
);
this
.
originalBranch
=
form
.
find
(
'
.js-original-branch
'
);
this
.
createMergeRequest
=
form
.
find
(
'
.js-create-merge-request
'
);
this
.
createMergeRequestContainer
=
form
.
find
(
'
.js-create-merge-request-container
'
);
this
.
branchName
.
keyup
(
this
.
renderDestination
);
this
.
renderDestination
();
}
export
default
class
NewCommitForm
{
constructor
(
form
)
{
this
.
form
=
form
;
this
.
renderDestination
=
this
.
renderDestination
.
bind
(
this
);
this
.
branchName
=
form
.
find
(
'
.js-branch-name
'
);
this
.
originalBranch
=
form
.
find
(
'
.js-original-branch
'
);
this
.
createMergeRequest
=
form
.
find
(
'
.js-create-merge-request
'
);
this
.
createMergeRequestContainer
=
form
.
find
(
'
.js-create-merge-request-container
'
);
this
.
branchName
.
keyup
(
this
.
renderDestination
);
this
.
renderDestination
();
}
NewCommitForm
.
prototype
.
renderDestination
=
function
()
{
var
different
;
different
=
this
.
branchName
.
val
()
!==
this
.
originalBranch
.
val
();
if
(
different
)
{
this
.
createMergeRequestContainer
.
show
();
if
(
!
this
.
wasDifferent
)
{
this
.
createMergeRequest
.
prop
(
'
checked
'
,
true
);
}
}
else
{
this
.
createMergeRequestContainer
.
hide
();
this
.
createMergeRequest
.
prop
(
'
checked
'
,
false
);
renderDestination
()
{
var
different
;
different
=
this
.
branchName
.
val
()
!==
this
.
originalBranch
.
val
();
if
(
different
)
{
this
.
createMergeRequestContainer
.
show
();
if
(
!
this
.
wasDifferent
)
{
this
.
createMergeRequest
.
prop
(
'
checked
'
,
true
);
}
return
this
.
wasDifferent
=
different
;
};
return
NewCommitForm
;
})();
}).
call
(
window
);
}
else
{
this
.
createMergeRequestContainer
.
hide
();
this
.
createMergeRequest
.
prop
(
'
checked
'
,
false
);
}
return
this
.
wasDifferent
=
different
;
}
}
app/assets/javascripts/subscription_select.js
View file @
030de8b3
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, quotes, object-shorthand, no-unused-vars, no-shadow, one-var, one-var-declaration-per-line, comma-dangle, max-len */
export
default
function
subscriptionSelect
()
{
$
(
'
.js-subscription-event
'
).
each
((
i
,
element
)
=>
{
const
fieldName
=
$
(
element
).
data
(
'
field-name
'
);
class
SubscriptionSelect
{
constructor
()
{
$
(
'
.js-subscription-event
'
).
each
(
function
(
i
,
el
)
{
var
fieldName
;
fieldName
=
$
(
el
).
data
(
"
field-name
"
);
return
$
(
el
).
glDropdown
({
selectable
:
true
,
fieldName
:
fieldName
,
toggleLabel
:
(
function
(
_this
)
{
return
function
(
selected
,
el
,
instance
)
{
var
$item
,
label
;
label
=
'
Subscription
'
;
$item
=
instance
.
dropdown
.
find
(
'
.is-active
'
);
if
(
$item
.
length
)
{
label
=
$item
.
text
();
}
return
label
;
};
})(
this
),
clicked
:
function
(
options
)
{
return
options
.
e
.
preventDefault
();
},
id
:
function
(
obj
,
el
)
{
return
$
(
el
).
data
(
"
id
"
);
return
$
(
element
).
glDropdown
({
selectable
:
true
,
fieldName
,
toggleLabel
(
selected
,
el
,
instance
)
{
let
label
=
'
Subscription
'
;
const
$item
=
instance
.
dropdown
.
find
(
'
.is-active
'
);
if
(
$item
.
length
)
{
label
=
$item
.
text
();
}
});
return
label
;
},
clicked
(
options
)
{
return
options
.
e
.
preventDefault
();
},
id
(
obj
,
el
)
{
return
$
(
el
).
data
(
'
id
'
);
},
});
}
}
);
}
window
.
SubscriptionSelect
=
SubscriptionSelect
;
spec/javascripts/new_branch_spec.js
View file @
030de8b3
/* eslint-disable space-before-function-paren, one-var, no-var, one-var-declaration-per-line, no-return-assign, quotes, max-len */
/* global NewBranchForm */
import
'
~/new_branch_form
'
;
import
NewBranchForm
from
'
~/new_branch_form
'
;
(
function
()
{
describe
(
'
Branch
'
,
function
()
{
...
...
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