Merge remote-tracking branch 'origin/master' into bitbucket-oauth2
This commit is contained in:
commit
785459d161
588 changed files with 15086 additions and 1830 deletions
|
@ -1,5 +1,6 @@
|
|||
/coverage/
|
||||
/coverage-javascript/
|
||||
/node_modules/
|
||||
/public/
|
||||
/tmp/
|
||||
/vendor/
|
||||
|
|
|
@ -1 +1 @@
|
|||
4.0.3
|
||||
4.1.0
|
||||
|
|
|
@ -1 +1 @@
|
|||
1.1.1
|
||||
1.2.0
|
||||
|
|
5
Gemfile
5
Gemfile
|
@ -66,7 +66,7 @@ gem 'gollum-rugged_adapter', '~> 0.4.2', require: false
|
|||
gem 'github-linguist', '~> 4.7.0', require: 'linguist'
|
||||
|
||||
# API
|
||||
gem 'grape', '~> 0.15.0'
|
||||
gem 'grape', '~> 0.18.0'
|
||||
gem 'grape-entity', '~> 0.6.0'
|
||||
gem 'rack-cors', '~> 0.4.0', require: 'rack/cors'
|
||||
|
||||
|
@ -177,6 +177,9 @@ gem 'asana', '~> 0.4.0'
|
|||
# FogBugz integration
|
||||
gem 'ruby-fogbugz', '~> 0.2.1'
|
||||
|
||||
# Kubernetes integration
|
||||
gem 'kubeclient', '~> 2.2.0'
|
||||
|
||||
# d3
|
||||
gem 'd3_rails', '~> 3.5.0'
|
||||
|
||||
|
|
37
Gemfile.lock
37
Gemfile.lock
|
@ -161,6 +161,8 @@ GEM
|
|||
diff-lcs (1.2.5)
|
||||
diffy (3.1.0)
|
||||
docile (1.1.5)
|
||||
domain_name (0.5.20161021)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
doorkeeper (4.2.0)
|
||||
railties (>= 4.2)
|
||||
dropzonejs-rails (0.7.2)
|
||||
|
@ -282,15 +284,15 @@ GEM
|
|||
json
|
||||
multi_json
|
||||
request_store (>= 1.0)
|
||||
grape (0.15.0)
|
||||
grape (0.18.0)
|
||||
activesupport
|
||||
builder
|
||||
hashie (>= 2.1.0)
|
||||
multi_json (>= 1.3.2)
|
||||
multi_xml (>= 0.5.2)
|
||||
mustermann-grape (~> 0.4.0)
|
||||
rack (>= 1.3.0)
|
||||
rack-accept
|
||||
rack-mount
|
||||
virtus (>= 1.0.0)
|
||||
grape-entity (0.6.0)
|
||||
activesupport
|
||||
|
@ -318,6 +320,15 @@ GEM
|
|||
html2text (0.2.0)
|
||||
nokogiri (~> 1.6)
|
||||
htmlentities (4.3.4)
|
||||
http (0.9.8)
|
||||
addressable (~> 2.3)
|
||||
http-cookie (~> 1.0)
|
||||
http-form_data (~> 1.0.1)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
http-cookie (1.0.3)
|
||||
domain_name (~> 0.5)
|
||||
http-form_data (1.0.1)
|
||||
http_parser.rb (0.6.0)
|
||||
httparty (0.13.7)
|
||||
json (~> 1.8)
|
||||
multi_xml (>= 0.5.2)
|
||||
|
@ -352,6 +363,10 @@ GEM
|
|||
knapsack (1.11.0)
|
||||
rake
|
||||
timecop (>= 0.1.0)
|
||||
kubeclient (2.2.0)
|
||||
http (= 0.9.8)
|
||||
recursive-open-struct (= 1.0.0)
|
||||
rest-client
|
||||
launchy (2.4.3)
|
||||
addressable (~> 2.3)
|
||||
letter_opener (1.4.1)
|
||||
|
@ -385,9 +400,14 @@ GEM
|
|||
multi_json (1.12.1)
|
||||
multi_xml (0.5.5)
|
||||
multipart-post (2.0.0)
|
||||
mustermann (0.4.0)
|
||||
tool (~> 0.2)
|
||||
mustermann-grape (0.4.0)
|
||||
mustermann (= 0.4.0)
|
||||
mysql2 (0.3.20)
|
||||
net-ldap (0.12.1)
|
||||
net-ssh (3.0.1)
|
||||
netrc (0.11.0)
|
||||
newrelic_rpm (3.16.0.318)
|
||||
nokogiri (1.6.8)
|
||||
mini_portile2 (~> 2.1.0)
|
||||
|
@ -485,14 +505,12 @@ GEM
|
|||
pry-rails (0.3.4)
|
||||
pry (>= 0.9.10)
|
||||
pyu-ruby-sasl (0.0.3.3)
|
||||
rack (1.6.4)
|
||||
rack (1.6.5)
|
||||
rack-accept (0.4.5)
|
||||
rack (>= 0.4)
|
||||
rack-attack (4.4.1)
|
||||
rack
|
||||
rack-cors (0.4.0)
|
||||
rack-mount (0.8.3)
|
||||
rack (>= 1.0.0)
|
||||
rack-oauth2 (1.2.3)
|
||||
activesupport (>= 2.3)
|
||||
attr_required (>= 0.0.5)
|
||||
|
@ -539,6 +557,7 @@ GEM
|
|||
json (~> 1.4)
|
||||
recaptcha (3.0.0)
|
||||
json
|
||||
recursive-open-struct (1.0.0)
|
||||
redcarpet (3.3.3)
|
||||
redis (3.2.2)
|
||||
redis-actionpack (5.0.1)
|
||||
|
@ -564,6 +583,10 @@ GEM
|
|||
listen (~> 3.0)
|
||||
responders (2.3.0)
|
||||
railties (>= 4.2.0, < 5.1)
|
||||
rest-client (2.0.0)
|
||||
http-cookie (>= 1.0.2, < 2.0)
|
||||
mime-types (>= 1.16, < 4.0)
|
||||
netrc (~> 0.8)
|
||||
rinku (2.0.0)
|
||||
rotp (2.1.2)
|
||||
rouge (2.0.7)
|
||||
|
@ -718,6 +741,7 @@ GEM
|
|||
tilt (2.0.5)
|
||||
timecop (0.8.1)
|
||||
timfel-krb5-auth (0.8.3)
|
||||
tool (0.2.3)
|
||||
truncato (0.7.8)
|
||||
htmlentities (~> 4.3.1)
|
||||
nokogiri (~> 1.6.1)
|
||||
|
@ -836,7 +860,7 @@ DEPENDENCIES
|
|||
gollum-lib (~> 4.2)
|
||||
gollum-rugged_adapter (~> 0.4.2)
|
||||
gon (~> 6.1.0)
|
||||
grape (~> 0.15.0)
|
||||
grape (~> 0.18.0)
|
||||
grape-entity (~> 0.6.0)
|
||||
haml_lint (~> 0.18.2)
|
||||
hamlit (~> 2.6.1)
|
||||
|
@ -855,6 +879,7 @@ DEPENDENCIES
|
|||
jwt
|
||||
kaminari (~> 0.17.0)
|
||||
knapsack (~> 1.11.0)
|
||||
kubeclient (~> 2.2.0)
|
||||
letter_opener_web (~> 1.3.0)
|
||||
license_finder (~> 2.1.0)
|
||||
licensee (~> 8.0.0)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable no-param-reassign */
|
||||
|
||||
((global) => {
|
||||
const MAX_MESSAGE_LENGTH = 500;
|
||||
const MESSAGE_CELL_SELECTOR = '.abuse-reports .message';
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, one-var, no-var, one-var-declaration-per-line, no-unused-vars, no-else-return, prefer-arrow-callback, camelcase, quotes, comma-dangle, no-undef, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, one-var, no-var, one-var-declaration-per-line, no-unused-vars, no-else-return, prefer-arrow-callback, camelcase, quotes, comma-dangle, padded-blocks, max-len */
|
||||
/* global Turbolinks */
|
||||
|
||||
(function() {
|
||||
this.Admin = (function() {
|
||||
function Admin() {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, quotes, object-shorthand, camelcase, no-var, no-undef, comma-dangle, prefer-arrow-callback, indent, object-curly-spacing, quote-props, no-param-reassign, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, quotes, object-shorthand, camelcase, no-var, comma-dangle, prefer-arrow-callback, indent, object-curly-spacing, quote-props, no-param-reassign, padded-blocks, max-len */
|
||||
|
||||
(function() {
|
||||
this.Api = {
|
||||
var Api = {
|
||||
groupsPath: "/api/:version/groups.json",
|
||||
groupPath: "/api/:version/groups/:id.json",
|
||||
namespacesPath: "/api/:version/namespaces.json",
|
||||
|
@ -140,4 +141,5 @@
|
|||
}
|
||||
};
|
||||
|
||||
window.Api = Api;
|
||||
}).call(this);
|
||||
|
|
|
@ -1,4 +1,11 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, no-undef, quotes, consistent-return, prefer-arrow-callback, comma-dangle, object-shorthand, no-new, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, quotes, consistent-return, prefer-arrow-callback, comma-dangle, object-shorthand, no-new, max-len */
|
||||
/* global bp */
|
||||
/* global Cookies */
|
||||
/* global Flash */
|
||||
/* global ConfirmDangerModal */
|
||||
/* global AwardsHandler */
|
||||
/* global Aside */
|
||||
|
||||
// This is a manifest file that'll be compiled into including all the files listed below.
|
||||
// Add new JavaScript code in separate files in this directory and they'll automatically
|
||||
// be included in the compiled file accessible from http://example.com/assets/application.js
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, max-len, no-var, spaced-comment, prefer-arrow-callback, consistent-return, one-var, one-var-declaration-per-line, no-unused-vars, no-else-return, prefer-template, quotes, comma-dangle, no-param-reassign, no-void, radix, keyword-spacing, space-before-blocks, brace-style, no-underscore-dangle, no-undef, no-plusplus, no-return-assign, camelcase, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, max-len, no-var, spaced-comment, prefer-arrow-callback, consistent-return, one-var, one-var-declaration-per-line, no-unused-vars, no-else-return, prefer-template, quotes, comma-dangle, no-param-reassign, no-void, radix, keyword-spacing, space-before-blocks, brace-style, no-underscore-dangle, no-plusplus, no-return-assign, camelcase, padded-blocks */
|
||||
/* global Cookies */
|
||||
|
||||
(function() {
|
||||
this.AwardsHandler = (function() {
|
||||
var FROM_SENTENCE_REGEX = /(?:, and | and |, )/; //For separating lists produced by ruby's Array#toSentence
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, prefer-arrow-callback, no-var, consistent-return, no-undef, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, prefer-arrow-callback, no-var, consistent-return, padded-blocks, max-len */
|
||||
/* global autosize */
|
||||
|
||||
/*= require jquery.ba-resize */
|
||||
/*= require autosize */
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, one-var, no-var, one-var-declaration-per-line, no-undef, prefer-arrow-callback, camelcase, max-len, consistent-return, quotes, object-shorthand, comma-dangle, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, one-var, no-var, one-var-declaration-per-line, prefer-arrow-callback, camelcase, consistent-return, quotes, object-shorthand, comma-dangle, padded-blocks, max-len */
|
||||
|
||||
// Quick Submit behavior
|
||||
//
|
||||
// When a child field of a form with a `js-quick-submit` class receives a
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable padded-blocks, no-param-reassign, comma-dangle */
|
||||
/* global Api */
|
||||
|
||||
/*= require blob/template_selector */
|
||||
((global) => {
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, one-var, no-var, one-var-declaration-per-line, camelcase, no-undef, object-shorthand, quotes, comma-dangle, prefer-arrow-callback, no-unused-vars, prefer-template, no-useless-escape, no-alert, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, one-var, no-var, one-var-declaration-per-line, camelcase, object-shorthand, quotes, comma-dangle, prefer-arrow-callback, no-unused-vars, prefer-template, no-useless-escape, no-alert, padded-blocks, max-len */
|
||||
/* global Dropzone */
|
||||
|
||||
(function() {
|
||||
this.BlobFileDropzone = (function() {
|
||||
function BlobFileDropzone(form, method) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, max-len, one-var, no-var, no-restricted-syntax, vars-on-top, no-use-before-define, no-param-reassign, new-cap, no-underscore-dangle, wrap-iife, prefer-rest-params, no-undef, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, max-len, one-var, no-var, no-restricted-syntax, vars-on-top, no-use-before-define, no-param-reassign, new-cap, no-underscore-dangle, wrap-iife, prefer-rest-params, padded-blocks */
|
||||
/* global Api */
|
||||
|
||||
/*= require blob/template_selector */
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-unused-expressions, no-cond-assign, no-sequences, no-undef, comma-dangle, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-unused-expressions, no-cond-assign, no-sequences, comma-dangle, padded-blocks, max-len */
|
||||
/* global BlobGitignoreSelector */
|
||||
|
||||
(function() {
|
||||
this.BlobGitignoreSelectors = (function() {
|
||||
function BlobGitignoreSelectors(opts) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, max-len, one-var, no-var, no-restricted-syntax, vars-on-top, no-use-before-define, no-param-reassign, new-cap, no-underscore-dangle, wrap-iife, prefer-rest-params, comma-dangle, no-undef, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, max-len, one-var, no-var, no-restricted-syntax, vars-on-top, no-use-before-define, no-param-reassign, new-cap, no-underscore-dangle, wrap-iife, prefer-rest-params, comma-dangle, padded-blocks */
|
||||
/* global Api */
|
||||
|
||||
/*= require blob/template_selector */
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable no-unused-vars, no-param-reassign, padded-blocks */
|
||||
/* global BlobLicenseSelector */
|
||||
|
||||
((global) => {
|
||||
class BlobLicenseSelectors {
|
||||
constructor({ $dropdowns, editor }) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable indent, comma-dangle, object-shorthand, func-names, space-before-function-paren, arrow-parens, no-unused-vars, class-methods-use-this, no-var, consistent-return, prefer-const, no-param-reassign, space-in-parens, max-len */
|
||||
|
||||
((global) => {
|
||||
class TemplateSelector {
|
||||
constructor({ dropdown, data, pattern, wrapper, editor, fileEndpoint, $input } = {}) {
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, prefer-arrow-callback, no-var, quotes, vars-on-top, no-unused-vars, no-undef, no-new, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, prefer-arrow-callback, no-var, quotes, vars-on-top, no-unused-vars, no-new, padded-blocks, max-len */
|
||||
/* global EditBlob */
|
||||
/* global NewCommitForm */
|
||||
|
||||
/*= require_tree . */
|
||||
|
||||
(function() {
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, camelcase, no-param-reassign, no-undef, quotes, prefer-template, no-new, comma-dangle, one-var, one-var-declaration-per-line, prefer-arrow-callback, no-else-return, no-unused-vars, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, camelcase, no-param-reassign, quotes, prefer-template, no-new, comma-dangle, one-var, one-var-declaration-per-line, prefer-arrow-callback, no-else-return, no-unused-vars, padded-blocks, max-len */
|
||||
/* global ace */
|
||||
/* global BlobGitignoreSelectors */
|
||||
|
||||
(function() {
|
||||
var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
||||
|
||||
|
@ -57,7 +60,7 @@
|
|||
content: this.editor.getValue()
|
||||
}, function(response) {
|
||||
currentPane.empty().append(response);
|
||||
return currentPane.syntaxHighlight();
|
||||
return currentPane.renderGFM();
|
||||
});
|
||||
} else {
|
||||
this.$toggleButton.show();
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable one-var, indent, quote-props, comma-dangle, space-before-function-paren */
|
||||
/* global Vue */
|
||||
/* global BoardService */
|
||||
|
||||
//= require vue
|
||||
//= require vue-resource
|
||||
//= require Sortable
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, space-before-function-paren, one-var, indent, radix */
|
||||
/* global Vue */
|
||||
/* global Sortable */
|
||||
|
||||
//= require ./board_blank_state
|
||||
//= require ./board_delete
|
||||
//= require ./board_list
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable space-before-function-paren, comma-dangle, semi */
|
||||
/* global Vue */
|
||||
/* global ListLabel */
|
||||
|
||||
(() => {
|
||||
const Store = gl.issueBoards.BoardsStore;
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, space-before-function-paren, dot-notation */
|
||||
/* global Vue */
|
||||
|
||||
(() => {
|
||||
const Store = gl.issueBoards.BoardsStore;
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, space-before-function-paren, no-alert */
|
||||
/* global Vue */
|
||||
|
||||
(() => {
|
||||
window.gl = window.gl || {};
|
||||
window.gl.issueBoards = window.gl.issueBoards || {};
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, space-before-function-paren, max-len, no-plusplus */
|
||||
/* global Vue */
|
||||
/* global Sortable */
|
||||
|
||||
//= require ./board_card
|
||||
//= require ./board_new_issue
|
||||
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, no-unused-vars */
|
||||
/* global Vue */
|
||||
/* global ListIssue */
|
||||
|
||||
(() => {
|
||||
const Store = gl.issueBoards.BoardsStore;
|
||||
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, space-before-function-paren, no-new */
|
||||
/* global Vue */
|
||||
/* global IssuableContext */
|
||||
/* global MilestoneSelect */
|
||||
/* global LabelsSelect */
|
||||
/* global Sidebar */
|
||||
|
||||
(() => {
|
||||
const Store = gl.issueBoards.BoardsStore;
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, func-names, no-new, space-before-function-paren, one-var, indent */
|
||||
|
||||
(() => {
|
||||
window.gl = window.gl || {};
|
||||
window.gl.issueBoards = window.gl.issueBoards || {};
|
||||
|
@ -45,10 +46,10 @@
|
|||
|
||||
return $li.append($a.prepend($labelColor));
|
||||
},
|
||||
search: {
|
||||
fields: ['title']
|
||||
},
|
||||
filterable: true,
|
||||
search: {
|
||||
fields: ['title']
|
||||
},
|
||||
filterable: true,
|
||||
selectable: true,
|
||||
multiSelect: true,
|
||||
clicked (label, $el, e) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* global Vue */
|
||||
|
||||
Vue.filter('due-date', (value) => {
|
||||
const date = new Date(value);
|
||||
return $.datepicker.formatDate('M d, yy', date);
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable no-unused-vars, no-mixed-operators, prefer-const, comma-dangle, semi */
|
||||
/* global DocumentTouch */
|
||||
|
||||
((w) => {
|
||||
window.gl = window.gl || {};
|
||||
window.gl.issueBoards = window.gl.issueBoards || {};
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable no-unused-vars, space-before-function-paren, arrow-body-style, space-in-parens, arrow-parens, comma-dangle, max-len */
|
||||
/* global Vue */
|
||||
/* global ListLabel */
|
||||
/* global ListMilestone */
|
||||
/* global ListUser */
|
||||
|
||||
class ListIssue {
|
||||
constructor (obj) {
|
||||
this.id = obj.iid;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable no-unused-vars, space-before-function-paren */
|
||||
|
||||
class ListLabel {
|
||||
constructor (obj) {
|
||||
this.id = obj.id;
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable space-before-function-paren, no-underscore-dangle, class-methods-use-this, consistent-return, no-plusplus, prefer-const, space-in-parens, no-shadow, no-param-reassign, max-len, no-unused-vars */
|
||||
/* global ListIssue */
|
||||
/* global ListLabel */
|
||||
|
||||
class List {
|
||||
constructor (obj) {
|
||||
this.id = obj.id;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable no-unused-vars */
|
||||
|
||||
class ListMilestone {
|
||||
constructor (obj) {
|
||||
constructor(obj) {
|
||||
this.id = obj.id;
|
||||
this.title = obj.title;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable no-unused-vars */
|
||||
|
||||
class ListUser {
|
||||
constructor (user) {
|
||||
constructor(user) {
|
||||
this.id = user.id;
|
||||
this.name = user.name;
|
||||
this.username = user.username;
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable space-before-function-paren, comma-dangle, no-param-reassign, camelcase, prefer-const, no-extra-semi, max-len, no-unused-vars */
|
||||
/* global Vue */
|
||||
|
||||
class BoardService {
|
||||
constructor (root, boardId) {
|
||||
this.lists = Vue.resource(`${root}/${boardId}/lists{/id}`, {}, {
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, space-before-function-paren, one-var, indent, space-in-parens, no-shadow, radix, dot-notation, semi, max-len */
|
||||
/* global Cookies */
|
||||
/* global List */
|
||||
|
||||
(() => {
|
||||
window.gl = window.gl || {};
|
||||
window.gl.issueBoards = window.gl.issueBoards || {};
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable func-names, prefer-arrow-callback, no-unused-vars, no-plusplus */
|
||||
/* global Vue */
|
||||
|
||||
Vue.http.interceptors.push((request, next) => {
|
||||
Vue.activeResources = Vue.activeResources ? Vue.activeResources + 1 : 1;
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, one-var, no-var, one-var-declaration-per-line, quotes, no-shadow, prefer-arrow-callback, prefer-template, consistent-return, padded-blocks, no-return-assign, new-parens, no-param-reassign, no-undef, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, one-var, no-var, one-var-declaration-per-line, quotes, no-shadow, prefer-arrow-callback, prefer-template, consistent-return, padded-blocks, no-return-assign, new-parens, no-param-reassign, max-len */
|
||||
|
||||
(function() {
|
||||
this.Breakpoints = (function() {
|
||||
var Breakpoints = (function() {
|
||||
var BreakpointInstance, instance;
|
||||
|
||||
function Breakpoints() {}
|
||||
|
@ -68,4 +69,5 @@
|
|||
};
|
||||
})(this));
|
||||
|
||||
window.Breakpoints = Breakpoints;
|
||||
}).call(this);
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, no-use-before-define, no-param-reassign, no-undef, quotes, yoda, no-else-return, consistent-return, comma-dangle, semi, object-shorthand, prefer-template, one-var, one-var-declaration-per-line, no-unused-vars, max-len, vars-on-top, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, no-use-before-define, no-param-reassign, quotes, yoda, no-else-return, consistent-return, comma-dangle, semi, object-shorthand, prefer-template, one-var, one-var-declaration-per-line, no-unused-vars, max-len, vars-on-top, padded-blocks */
|
||||
/* global Breakpoints */
|
||||
/* global Turbolinks */
|
||||
|
||||
(function() {
|
||||
var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
||||
|
||||
|
@ -193,6 +196,7 @@
|
|||
};
|
||||
|
||||
Build.prototype.stepTrace = function(e) {
|
||||
var $currentTarget;
|
||||
e.preventDefault();
|
||||
$currentTarget = $(e.currentTarget);
|
||||
$.scrollTo($currentTarget.attr('href'), {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable func-names, prefer-arrow-callback, space-before-blocks, space-before-function-paren, comma-spacing, max-len */
|
||||
|
||||
$(function(){
|
||||
$('.reveal-variables').off('click').on('click',function(){
|
||||
$('.js-build').toggle().niceScroll();
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-undef, padded-blocks */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, padded-blocks */
|
||||
/* global CommitFile */
|
||||
|
||||
(function() {
|
||||
this.Commit = (function() {
|
||||
function Commit() {
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-new, no-undef, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-new, padded-blocks */
|
||||
/* global ImageFile */
|
||||
|
||||
(function() {
|
||||
this.CommitFile = (function() {
|
||||
function CommitFile(file) {
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, quotes, consistent-return, no-undef, no-return-assign, no-param-reassign, one-var, no-var, one-var-declaration-per-line, no-unused-vars, prefer-template, object-shorthand, comma-dangle, padded-blocks, max-len, prefer-arrow-callback */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, quotes, consistent-return, no-return-assign, no-param-reassign, one-var, no-var, one-var-declaration-per-line, no-unused-vars, prefer-template, object-shorthand, comma-dangle, padded-blocks, max-len, prefer-arrow-callback */
|
||||
/* global Pager */
|
||||
|
||||
(function() {
|
||||
this.CommitsList = (function() {
|
||||
function CommitsList() {}
|
||||
|
@ -6,8 +8,8 @@
|
|||
CommitsList.timer = null;
|
||||
|
||||
CommitsList.init = function(limit) {
|
||||
$("body").on("click", ".day-commits-table li.commit", function(event) {
|
||||
if (event.target.nodeName !== "A") {
|
||||
$("body").on("click", ".day-commits-table li.commit", function(e) {
|
||||
if (e.target.nodeName !== "A") {
|
||||
location.href = $(this).attr("url");
|
||||
e.stopPropagation();
|
||||
return false;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable func-names, space-before-function-paren, one-var, no-var, one-var-declaration-per-line, object-shorthand, comma-dangle, prefer-arrow-callback, no-else-return, newline-per-chained-call, no-dupe-keys, wrap-iife, padded-blocks, max-len */
|
||||
|
||||
(function() {
|
||||
this.CompareAutocomplete = (function() {
|
||||
function CompareAutocomplete() {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, one-var, no-var, one-var-declaration-per-line, no-undef, prefer-template, quotes, no-unused-vars, prefer-arrow-callback, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, one-var, no-var, one-var-declaration-per-line, prefer-template, quotes, no-unused-vars, prefer-arrow-callback, padded-blocks, max-len */
|
||||
/* global Clipboard */
|
||||
|
||||
/*= require clipboard */
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable func-names, space-before-function-paren, prefer-arrow-callback, comma-dangle, prefer-template, quotes, no-param-reassign, wrap-iife, max-len */
|
||||
/* global Api */
|
||||
|
||||
(function (w) {
|
||||
class CreateLabelDropdown {
|
||||
constructor ($el, namespacePath, projectPath) {
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, object-shorthand, func-names, no-else-return, quotes, no-lonely-if, semi, max-len */
|
||||
/* global Vue */
|
||||
/* global CommentsStore */
|
||||
|
||||
(() => {
|
||||
const CommentAndResolveBtn = Vue.extend({
|
||||
props: {
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, object-shorthand, func-names, no-else-return, guard-for-in, no-restricted-syntax, one-var, indent, space-before-function-paren, no-plusplus, no-lonely-if, no-continue, brace-style, max-len, quotes, semi */
|
||||
/* global Vue */
|
||||
/* global DiscussionMixins */
|
||||
/* global CommentsStore */
|
||||
|
||||
(() => {
|
||||
JumpToDiscussion = Vue.extend({
|
||||
const JumpToDiscussion = Vue.extend({
|
||||
mixins: [DiscussionMixins],
|
||||
props: {
|
||||
discussionId: String
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, object-shorthand, func-names, quote-props, no-else-return, camelcase, no-new, max-len */
|
||||
/* global Vue */
|
||||
/* global CommentsStore */
|
||||
/* global ResolveService */
|
||||
/* global Flash */
|
||||
|
||||
(() => {
|
||||
const ResolveBtn = Vue.extend({
|
||||
props: {
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, object-shorthand, func-names, no-param-reassign */
|
||||
/* global Vue */
|
||||
/* global DiscussionMixins */
|
||||
/* global CommentsStore */
|
||||
|
||||
((w) => {
|
||||
w.ResolveCount = Vue.extend({
|
||||
mixins: [DiscussionMixins],
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable object-shorthand, func-names, space-before-function-paren, comma-dangle, no-else-return, quotes, max-len */
|
||||
/* global Vue */
|
||||
/* global CommentsStore */
|
||||
/* global ResolveService */
|
||||
|
||||
(() => {
|
||||
const ResolveDiscussionBtn = Vue.extend({
|
||||
props: {
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable func-names, comma-dangle, new-cap, no-new */
|
||||
/* global Vue */
|
||||
/* global ResolveCount */
|
||||
|
||||
//= require vue
|
||||
//= require vue-resource
|
||||
//= require_directory ./models
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable object-shorthand, func-names, guard-for-in, no-restricted-syntax, comma-dangle, no-plusplus, no-param-reassign, max-len */
|
||||
|
||||
((w) => {
|
||||
w.DiscussionMixins = {
|
||||
computed: {
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable space-before-function-paren, camelcase, guard-for-in, no-restricted-syntax, no-unused-vars, max-len */
|
||||
/* global Vue */
|
||||
/* global NoteModel */
|
||||
|
||||
class DiscussionModel {
|
||||
constructor (discussionId) {
|
||||
this.id = discussionId;
|
||||
|
@ -69,7 +72,7 @@ class DiscussionModel {
|
|||
|
||||
gl.utils.localTimeAgo($('.js-timeago', `${discussionSelector}`));
|
||||
} else {
|
||||
$discussionHeadline.remove();
|
||||
$discussionHeadline.remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable camelcase, no-unused-vars */
|
||||
|
||||
class NoteModel {
|
||||
constructor (discussionId, noteId, canResolve, resolved, resolved_by) {
|
||||
constructor(discussionId, noteId, canResolve, resolved, resolved_by) {
|
||||
this.discussionId = discussionId;
|
||||
this.id = noteId;
|
||||
this.canResolve = canResolve;
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable class-methods-use-this, one-var, indent, camelcase, no-new, comma-dangle, semi, no-param-reassign, max-len */
|
||||
/* global Vue */
|
||||
/* global Flash */
|
||||
/* global CommentsStore */
|
||||
|
||||
((w) => {
|
||||
class ResolveServiceClass {
|
||||
constructor() {
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable object-shorthand, func-names, camelcase, prefer-const, no-restricted-syntax, guard-for-in, comma-dangle, max-len, no-param-reassign */
|
||||
/* global Vue */
|
||||
/* global DiscussionModel */
|
||||
|
||||
((w) => {
|
||||
w.CommentsStore = {
|
||||
state: {},
|
||||
|
|
|
@ -1,4 +1,42 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-arrow-callback, wrap-iife, no-shadow, consistent-return, one-var, one-var-declaration-per-line, camelcase, default-case, no-new, quotes, no-duplicate-case, no-case-declarations, no-fallthrough, max-len, padded-blocks */
|
||||
/* global UsernameValidator */
|
||||
/* global ActiveTabMemoizer */
|
||||
/* global ShortcutsNavigation */
|
||||
/* global Build */
|
||||
/* global Issuable */
|
||||
/* global Issue */
|
||||
/* global ShortcutsIssuable */
|
||||
/* global ZenMode */
|
||||
/* global Milestone */
|
||||
/* global GLForm */
|
||||
/* global IssuableForm */
|
||||
/* global LabelsSelect */
|
||||
/* global MilestoneSelect */
|
||||
/* global MergedButtons */
|
||||
/* global Commit */
|
||||
/* global NotificationsForm */
|
||||
/* global TreeView */
|
||||
/* global NotificationsDropdown */
|
||||
/* global UsersSelect */
|
||||
/* global GroupAvatar */
|
||||
/* global LineHighlighter */
|
||||
/* global ShortcutsBlob */
|
||||
/* global ProjectFork */
|
||||
/* global BuildArtifacts */
|
||||
/* global GroupsSelect */
|
||||
/* global Search */
|
||||
/* global Admin */
|
||||
/* global NamespaceSelects */
|
||||
/* global ShortcutsDashboardNavigation */
|
||||
/* global Project */
|
||||
/* global ProjectAvatar */
|
||||
/* global CompareAutocomplete */
|
||||
/* global ProjectNew */
|
||||
/* global Star */
|
||||
/* global ProjectShow */
|
||||
/* global Labels */
|
||||
/* global Shortcuts */
|
||||
|
||||
(function() {
|
||||
var Dispatcher;
|
||||
|
||||
|
@ -36,7 +74,9 @@
|
|||
case 'projects:merge_requests:index':
|
||||
case 'projects:issues:index':
|
||||
Issuable.init();
|
||||
new gl.IssuableBulkActions();
|
||||
new gl.IssuableBulkActions({
|
||||
prefixId: page === 'projects:merge_requests:index' ? 'merge_request_' : 'issue_',
|
||||
});
|
||||
shortcut_handler = new ShortcutsNavigation();
|
||||
break;
|
||||
case 'projects:issues:show':
|
||||
|
@ -106,10 +146,6 @@
|
|||
new ZenMode();
|
||||
new MergedButtons();
|
||||
break;
|
||||
case 'projects:merge_requests:index':
|
||||
shortcut_handler = new ShortcutsNavigation();
|
||||
Issuable.init();
|
||||
break;
|
||||
case 'dashboard:activity':
|
||||
new gl.Activities();
|
||||
break;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, max-len, one-var, no-var, one-var-declaration-per-line, no-unused-vars, camelcase, no-undef, quotes, no-useless-concat, prefer-template, quote-props, comma-dangle, object-shorthand, consistent-return, no-plusplus, prefer-arrow-callback, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, max-len, one-var, no-var, one-var-declaration-per-line, no-unused-vars, camelcase, quotes, no-useless-concat, prefer-template, quote-props, comma-dangle, object-shorthand, consistent-return, no-plusplus, prefer-arrow-callback, padded-blocks */
|
||||
/* global Dropzone */
|
||||
|
||||
/*= require preview_markdown */
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable wrap-iife, func-names, space-before-function-paren, comma-dangle, prefer-template, consistent-return, class-methods-use-this, arrow-body-style, prefer-const, padded-blocks, no-unused-vars, no-underscore-dangle, no-new, max-len, semi, no-sequences, no-unused-expressions, no-param-reassign */
|
||||
|
||||
(function(global) {
|
||||
class DueDateSelect {
|
||||
constructor({ $dropdown, $loading } = {}) {
|
||||
|
|
|
@ -164,8 +164,7 @@
|
|||
{{state.availableCounter}}
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li v-bind:class="{ 'active' : scope === 'stopped' }">
|
||||
</li><li v-bind:class="{ 'active' : scope === 'stopped' }">
|
||||
<a :href="projectStoppedEnvironmentsPath">
|
||||
Stopped
|
||||
<span class="badge js-stopped-environments-count">
|
||||
|
|
|
@ -449,7 +449,7 @@
|
|||
</span>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<td class="environments-build-cell">
|
||||
<a v-if="shouldRenderBuildName"
|
||||
class="build-link"
|
||||
:href="model.last_deployment.deployable.build_path">
|
||||
|
|
26
app/assets/javascripts/extensions/object.js.es6
Normal file
26
app/assets/javascripts/extensions/object.js.es6
Normal file
|
@ -0,0 +1,26 @@
|
|||
/* eslint-disable no-restricted-syntax */
|
||||
|
||||
// Adapted from https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
|
||||
if (typeof Object.assign !== 'function') {
|
||||
Object.assign = function assign(target, ...args) {
|
||||
if (target == null) { // TypeError if undefined or null
|
||||
throw new TypeError('Cannot convert undefined or null to object');
|
||||
}
|
||||
|
||||
const to = Object(target);
|
||||
|
||||
for (let index = 0; index < args.length; index += 1) {
|
||||
const nextSource = args[index];
|
||||
|
||||
if (nextSource != null) { // Skip over if undefined or null
|
||||
for (const nextKey in nextSource) {
|
||||
// Avoid bugs when hasOwnProperty is shadowed
|
||||
if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
|
||||
to[nextKey] = nextSource[nextKey];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return to;
|
||||
};
|
||||
}
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, max-len, one-var, one-var-declaration-per-line, quotes, prefer-template, newline-per-chained-call, comma-dangle, new-cap, no-else-return, padded-blocks, consistent-return, no-undef, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, max-len, one-var, one-var-declaration-per-line, quotes, prefer-template, newline-per-chained-call, comma-dangle, new-cap, no-else-return, padded-blocks, consistent-return */
|
||||
/* global FilesCommentButton */
|
||||
|
||||
(function() {
|
||||
var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-template-curly-in-string, comma-dangle, object-shorthand, quotes, dot-notation, no-else-return, one-var, no-var, no-underscore-dangle, one-var-declaration-per-line, no-param-reassign, no-useless-escape, prefer-template, consistent-return, wrap-iife, prefer-arrow-callback, camelcase, no-unused-vars, no-useless-return, padded-blocks, vars-on-top, indent, no-extra-semi, no-multi-spaces, semi, max-len */
|
||||
|
||||
// Creates the variables for setting up GFM auto-completion
|
||||
(function() {
|
||||
if (window.GitLab == null) {
|
||||
|
@ -9,7 +10,7 @@
|
|||
return str.replace(/<(?:.|\n)*?>/gm, '');
|
||||
}
|
||||
|
||||
GitLab.GfmAutoComplete = {
|
||||
window.GitLab.GfmAutoComplete = {
|
||||
dataLoading: false,
|
||||
dataLoaded: false,
|
||||
cachedData: {},
|
||||
|
@ -56,7 +57,7 @@
|
|||
var withoutAt = value.substring(1);
|
||||
if (withoutAt && /[^\w\d]/.test(withoutAt)) value = value.charAt() + '"' + withoutAt + '"';
|
||||
}
|
||||
if (!GitLab.GfmAutoComplete.dataLoaded) {
|
||||
if (!window.GitLab.GfmAutoComplete.dataLoaded) {
|
||||
return this.at;
|
||||
} else {
|
||||
return value;
|
||||
|
@ -66,14 +67,15 @@
|
|||
// The below is taken from At.js source
|
||||
// Tweaked to commands to start without a space only if char before is a non-word character
|
||||
// https://github.com/ichord/At.js
|
||||
var _a, _y, regexp, match;
|
||||
var _a, _y, regexp, match, atSymbols;
|
||||
atSymbols = Object.keys(this.app.controllers).join('|');
|
||||
subtext = subtext.split(' ').pop();
|
||||
flag = flag.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
|
||||
|
||||
_a = decodeURI("%C3%80");
|
||||
_y = decodeURI("%C3%BF");
|
||||
|
||||
regexp = new RegExp("(?:\\B|\\W|\\s)" + flag + "(?!\\W)([A-Za-z" + _a + "-" + _y + "0-9_\'\.\+\-]*)|([^\\x00-\\xff]*)$", 'gi');
|
||||
regexp = new RegExp("(?:\\B|\\W|\\s)" + flag + "(?![" + atSymbols + "])([A-Za-z" + _a + "-" + _y + "0-9_\'\.\+\-]*)$", 'gi');
|
||||
|
||||
match = regexp.exec(subtext);
|
||||
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, one-var, one-var-declaration-per-line, space-before-blocks, prefer-rest-params, max-len, vars-on-top, no-plusplus, wrap-iife, no-unused-vars, quotes, no-shadow, no-cond-assign, prefer-arrow-callback, semi, no-return-assign, no-else-return, camelcase, no-undef, comma-dangle, no-lonely-if, guard-for-in, no-restricted-syntax, consistent-return, padded-blocks, prefer-template, no-param-reassign, no-loop-func, no-extra-semi, keyword-spacing, no-mixed-operators, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, one-var, one-var-declaration-per-line, space-before-blocks, prefer-rest-params, max-len, vars-on-top, no-plusplus, wrap-iife, no-unused-vars, quotes, no-shadow, no-cond-assign, prefer-arrow-callback, semi, no-return-assign, no-else-return, camelcase, comma-dangle, no-lonely-if, guard-for-in, no-restricted-syntax, consistent-return, padded-blocks, prefer-template, no-param-reassign, no-loop-func, no-extra-semi, keyword-spacing, no-mixed-operators */
|
||||
/* global fuzzaldrinPlus */
|
||||
/* global Turbolinks */
|
||||
|
||||
(function() {
|
||||
var GitLabDropdown, GitLabDropdownFilter, GitLabDropdownRemote,
|
||||
bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
|
||||
|
@ -20,7 +23,6 @@
|
|||
this.filterInputBlur = (ref = this.options.filterInputBlur) != null ? ref : true;
|
||||
$inputContainer = this.input.parent();
|
||||
$clearButton = $inputContainer.find('.js-dropdown-input-clear');
|
||||
this.indeterminateIds = [];
|
||||
$clearButton.on('click', (function(_this) {
|
||||
// Clear click
|
||||
return function(e) {
|
||||
|
@ -188,7 +190,7 @@
|
|||
})();
|
||||
|
||||
GitLabDropdown = (function() {
|
||||
var ACTIVE_CLASS, FILTER_INPUT, INDETERMINATE_CLASS, LOADING_CLASS, PAGE_TWO_CLASS, NON_SELECTABLE_CLASSES, SELECTABLE_CLASSES, currentIndex;
|
||||
var ACTIVE_CLASS, FILTER_INPUT, INDETERMINATE_CLASS, LOADING_CLASS, PAGE_TWO_CLASS, NON_SELECTABLE_CLASSES, SELECTABLE_CLASSES, CURSOR_SELECT_SCROLL_PADDING, currentIndex;
|
||||
|
||||
LOADING_CLASS = "is-loading";
|
||||
|
||||
|
@ -345,12 +347,12 @@
|
|||
$el = $(this);
|
||||
selected = self.rowClicked($el);
|
||||
if (self.options.clicked) {
|
||||
self.options.clicked(selected, $el, e);
|
||||
self.options.clicked(selected[0], $el, e, selected[1]);
|
||||
}
|
||||
|
||||
// Update label right after all modifications in dropdown has been done
|
||||
if (self.options.toggleLabel) {
|
||||
self.updateLabel(selected, $el, self);
|
||||
self.updateLabel(selected[0], $el, self);
|
||||
}
|
||||
|
||||
$el.trigger('blur');
|
||||
|
@ -441,12 +443,6 @@
|
|||
this.resetRows();
|
||||
this.addArrowKeyEvent();
|
||||
|
||||
if (this.options.setIndeterminateIds) {
|
||||
this.options.setIndeterminateIds.call(this);
|
||||
}
|
||||
if (this.options.setActiveIds) {
|
||||
this.options.setActiveIds.call(this);
|
||||
}
|
||||
// Makes indeterminate items effective
|
||||
if (this.fullData && this.dropdown.find('.dropdown-menu-toggle').hasClass('js-filter-bulk-update')) {
|
||||
this.parseData(this.fullData);
|
||||
|
@ -480,11 +476,6 @@
|
|||
if (this.options.filterable) {
|
||||
$input.blur().val("");
|
||||
}
|
||||
// Triggering 'keyup' will re-render the dropdown which is not always required
|
||||
// specially if we want to keep the state of the dropdown needed for bulk-assignment
|
||||
if (!this.options.persistWhenHide) {
|
||||
$input.trigger("input");
|
||||
}
|
||||
if (this.dropdown.find(".dropdown-toggle-page").length) {
|
||||
$('.dropdown-menu', this.dropdown).removeClass(PAGE_TWO_CLASS);
|
||||
}
|
||||
|
@ -617,7 +608,8 @@
|
|||
};
|
||||
|
||||
GitLabDropdown.prototype.rowClicked = function(el) {
|
||||
var field, fieldName, groupName, isInput, selectedIndex, selectedObject, value;
|
||||
var field, fieldName, groupName, isInput, selectedIndex, selectedObject, value, isMarking;
|
||||
|
||||
fieldName = this.options.fieldName;
|
||||
isInput = $(this.el).is('input');
|
||||
if (this.renderedData) {
|
||||
|
@ -638,7 +630,7 @@
|
|||
el.addClass(ACTIVE_CLASS);
|
||||
}
|
||||
|
||||
return selectedObject;
|
||||
return [selectedObject];
|
||||
}
|
||||
|
||||
field = [];
|
||||
|
@ -656,6 +648,7 @@
|
|||
}
|
||||
|
||||
if (el.hasClass(ACTIVE_CLASS)) {
|
||||
isMarking = false;
|
||||
el.removeClass(ACTIVE_CLASS);
|
||||
if (field && field.length) {
|
||||
if (isInput) {
|
||||
|
@ -665,6 +658,7 @@
|
|||
}
|
||||
}
|
||||
} else if (el.hasClass(INDETERMINATE_CLASS)) {
|
||||
isMarking = true;
|
||||
el.addClass(ACTIVE_CLASS);
|
||||
el.removeClass(INDETERMINATE_CLASS);
|
||||
if (field && field.length && value == null) {
|
||||
|
@ -674,6 +668,7 @@
|
|||
this.addInput(fieldName, value, selectedObject);
|
||||
}
|
||||
} else {
|
||||
isMarking = true;
|
||||
if (!this.options.multiSelect || el.hasClass('dropdown-clear-active')) {
|
||||
this.dropdown.find("." + ACTIVE_CLASS).removeClass(ACTIVE_CLASS);
|
||||
if (!isInput) {
|
||||
|
@ -694,7 +689,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
return selectedObject;
|
||||
return [selectedObject, isMarking];
|
||||
};
|
||||
|
||||
GitLabDropdown.prototype.focusTextInput = function() {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, class-methods-use-this, max-len, space-before-function-paren, arrow-parens, no-param-reassign, padded-blocks */
|
||||
|
||||
//= require gl_field_error
|
||||
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-undef, no-new, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-new, padded-blocks, max-len */
|
||||
/* global GitLab */
|
||||
/* global DropzoneInput */
|
||||
/* global autosize */
|
||||
|
||||
(function() {
|
||||
this.GLForm = (function() {
|
||||
function GLForm(form) {
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, one-var, camelcase, one-var-declaration-per-line, no-undef, quotes, no-param-reassign, quote-props, comma-dangle, prefer-template, max-len, no-return-assign, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, one-var, camelcase, one-var-declaration-per-line, quotes, no-param-reassign, quote-props, comma-dangle, prefer-template, max-len, no-return-assign, padded-blocks */
|
||||
/* global ContributorsGraph */
|
||||
/* global ContributorsAuthorGraph */
|
||||
/* global ContributorsMasterGraph */
|
||||
/* global ContributorsStatGraphUtil */
|
||||
/* global d3 */
|
||||
|
||||
/*= require d3 */
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, one-var, no-var, space-before-blocks, prefer-rest-params, max-len, no-restricted-syntax, vars-on-top, no-use-before-define, no-param-reassign, new-cap, no-underscore-dangle, wrap-iife, comma-dangle, no-return-assign, prefer-arrow-callback, quotes, prefer-template, padded-blocks, no-undef, newline-per-chained-call, no-else-return, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, one-var, no-var, space-before-blocks, prefer-rest-params, max-len, no-restricted-syntax, vars-on-top, no-use-before-define, no-param-reassign, new-cap, no-underscore-dangle, wrap-iife, comma-dangle, no-return-assign, prefer-arrow-callback, quotes, prefer-template, padded-blocks, newline-per-chained-call, no-else-return */
|
||||
/* global d3 */
|
||||
/* global ContributorsGraph */
|
||||
|
||||
/*= require d3 */
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable func-names, object-shorthand, comma-dangle, wrap-iife, space-before-function-paren, no-param-reassign, padded-blocks, max-len */
|
||||
|
||||
(function(global) {
|
||||
class GroupLabelSubscription {
|
||||
constructor(container) {
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, wrap-iife, one-var, camelcase, one-var-declaration-per-line, quotes, object-shorthand, no-undef, prefer-arrow-callback, comma-dangle, consistent-return, yoda, prefer-rest-params, prefer-spread, no-unused-vars, prefer-template, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, wrap-iife, one-var, camelcase, one-var-declaration-per-line, quotes, object-shorthand, prefer-arrow-callback, comma-dangle, consistent-return, yoda, prefer-rest-params, prefer-spread, no-unused-vars, prefer-template, padded-blocks, max-len */
|
||||
/* global Api */
|
||||
|
||||
(function() {
|
||||
var slice = [].slice;
|
||||
|
||||
|
@ -14,7 +16,7 @@
|
|||
multiple: $(select).hasClass('multiselect'),
|
||||
minimumInputLength: 0,
|
||||
query: function(query) {
|
||||
options = { all_available: all_available, skip_groups: skip_groups };
|
||||
var options = { all_available: all_available, skip_groups: skip_groups };
|
||||
return Api.groups(query.term, options, function(groups) {
|
||||
var data;
|
||||
data = {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, camelcase, no-var, one-var, one-var-declaration-per-line, prefer-template, quotes, object-shorthand, comma-dangle, no-unused-vars, prefer-arrow-callback, no-else-return, padded-blocks, vars-on-top, no-new, no-undef, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, camelcase, no-var, one-var, one-var-declaration-per-line, prefer-template, quotes, object-shorthand, comma-dangle, no-unused-vars, prefer-arrow-callback, no-else-return, padded-blocks, vars-on-top, no-new, max-len */
|
||||
|
||||
(function() {
|
||||
this.ImporterStatus = (function() {
|
||||
window.ImporterStatus = (function() {
|
||||
function ImporterStatus(jobs_url, import_url) {
|
||||
this.jobs_url = jobs_url;
|
||||
this.import_url = import_url;
|
||||
|
@ -75,7 +76,7 @@
|
|||
var jobsImportPath = $('.js-importer-status').data('jobs-import-path');
|
||||
var importPath = $('.js-importer-status').data('import-path');
|
||||
|
||||
new ImporterStatus(jobsImportPath, importPath);
|
||||
new window.ImporterStatus(jobsImportPath, importPath);
|
||||
}
|
||||
});
|
||||
}).call(this);
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable func-names, no-var, camelcase, no-unused-vars, object-shorthand, space-before-function-paren, no-return-assign, comma-dangle, consistent-return, one-var, one-var-declaration-per-line, quotes, prefer-template, prefer-arrow-callback, prefer-const, padded-blocks, wrap-iife, max-len */
|
||||
/* global Issuable */
|
||||
/* global Turbolinks */
|
||||
|
||||
(function() {
|
||||
var issuable_created;
|
||||
|
||||
|
@ -141,6 +144,9 @@
|
|||
const $issuesOtherFilters = $('.issues-other-filters');
|
||||
const $issuesBulkUpdate = $('.issues_bulk_update');
|
||||
|
||||
this.issuableBulkActions.willUpdateLabels = false;
|
||||
this.issuableBulkActions.setOriginalDropdownData();
|
||||
|
||||
if ($checkedIssues.length > 0) {
|
||||
let ids = $.map($checkedIssues, function(value) {
|
||||
return $(value).data('id');
|
||||
|
@ -152,7 +158,6 @@
|
|||
$updateIssuesIds.val([]);
|
||||
$issuesBulkUpdate.hide();
|
||||
$issuesOtherFilters.show();
|
||||
this.issuableBulkActions.willUpdateLabels = false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-new, no-undef, comma-dangle, quotes, prefer-arrow-callback, consistent-return, one-var, no-var, one-var-declaration-per-line, no-underscore-dangle, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-new, comma-dangle, quotes, prefer-arrow-callback, consistent-return, one-var, no-var, one-var-declaration-per-line, no-underscore-dangle, padded-blocks, max-len */
|
||||
/* global UsersSelect */
|
||||
|
||||
(function() {
|
||||
this.IssuableContext = (function() {
|
||||
function IssuableContext(currentUser) {
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, no-use-before-define, no-useless-escape, no-undef, no-new, quotes, object-shorthand, no-unused-vars, comma-dangle, radix, no-alert, consistent-return, no-else-return, prefer-template, one-var, one-var-declaration-per-line, curly, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, no-use-before-define, no-useless-escape, no-new, quotes, object-shorthand, no-unused-vars, comma-dangle, radix, no-alert, consistent-return, no-else-return, prefer-template, one-var, one-var-declaration-per-line, curly, padded-blocks, max-len */
|
||||
/* global GitLab */
|
||||
/* global UsersSelect */
|
||||
/* global ZenMode */
|
||||
/* global Autosave */
|
||||
|
||||
(function() {
|
||||
var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, one-var, no-underscore-dangle, one-var-declaration-per-line, object-shorthand, no-unused-vars, no-undef, no-new, comma-dangle, consistent-return, quotes, dot-notation, quote-props, prefer-arrow-callback, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, one-var, no-underscore-dangle, one-var-declaration-per-line, object-shorthand, no-unused-vars, no-new, comma-dangle, consistent-return, quotes, dot-notation, quote-props, prefer-arrow-callback, padded-blocks, max-len */
|
||||
/* global Flash */
|
||||
|
||||
/*= require flash */
|
||||
/*= require jquery.waitforimages */
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, quotes, consistent-return, func-names, array-callback-return, space-before-function-paren, prefer-arrow-callback, radix, max-len, padded-blocks, no-unused-expressions, no-sequences, no-underscore-dangle, no-unused-vars, no-param-reassign */
|
||||
/* global Issuable */
|
||||
/* global Flash */
|
||||
|
||||
((global) => {
|
||||
|
||||
class IssuableBulkActions {
|
||||
constructor({ container, form, issues } = {}) {
|
||||
this.container = container || $('.content'),
|
||||
constructor({ container, form, issues, prefixId } = {}) {
|
||||
this.prefixId = prefixId || 'issue_';
|
||||
this.form = form || this.getElement('.bulk-update');
|
||||
this.$labelDropdown = this.form.find('.js-label-select');
|
||||
this.issues = issues || this.getElement('.issues-list .issue');
|
||||
this.form.data('bulkActions', this);
|
||||
this.willUpdateLabels = false;
|
||||
|
@ -13,10 +17,6 @@
|
|||
Issuable.initChecks();
|
||||
}
|
||||
|
||||
getElement(selector) {
|
||||
return this.container.find(selector);
|
||||
}
|
||||
|
||||
bindEvents() {
|
||||
return this.form.off('submit').on('submit', this.onFormSubmit.bind(this));
|
||||
}
|
||||
|
@ -70,10 +70,7 @@
|
|||
|
||||
getUnmarkedIndeterminedLabels() {
|
||||
const result = [];
|
||||
const labelsToKeep = [];
|
||||
|
||||
this.getElement('.labels-filter .is-indeterminate')
|
||||
.each((i, el) => labelsToKeep.push($(el).data('labelId')));
|
||||
const labelsToKeep = this.$labelDropdown.data('indeterminate');
|
||||
|
||||
this.getLabelsFromSelection().forEach((id) => {
|
||||
if (labelsToKeep.indexOf(id) === -1) {
|
||||
|
@ -103,45 +100,65 @@
|
|||
}
|
||||
};
|
||||
if (this.willUpdateLabels) {
|
||||
this.getLabelsToApply().map(function(id) {
|
||||
return formData.update.add_label_ids.push(id);
|
||||
});
|
||||
this.getLabelsToRemove().map(function(id) {
|
||||
return formData.update.remove_label_ids.push(id);
|
||||
});
|
||||
formData.update.add_label_ids = this.$labelDropdown.data('marked');
|
||||
formData.update.remove_label_ids = this.$labelDropdown.data('unmarked');
|
||||
}
|
||||
return formData;
|
||||
}
|
||||
|
||||
getLabelsToApply() {
|
||||
const labelIds = [];
|
||||
const $labels = this.form.find('.labels-filter input[name="update[label_ids][]"]');
|
||||
$labels.each(function(k, label) {
|
||||
if (label) {
|
||||
return labelIds.push(parseInt($(label).val()));
|
||||
}
|
||||
});
|
||||
return labelIds;
|
||||
setOriginalDropdownData() {
|
||||
const $labelSelect = $('.bulk-update .js-label-select');
|
||||
$labelSelect.data('common', this.getOriginalCommonIds());
|
||||
$labelSelect.data('marked', this.getOriginalMarkedIds());
|
||||
$labelSelect.data('indeterminate', this.getOriginalIndeterminateIds());
|
||||
}
|
||||
|
||||
// From issuable's initial bulk selection
|
||||
getOriginalCommonIds() {
|
||||
const labelIds = [];
|
||||
|
||||
/**
|
||||
* Returns Label IDs that will be removed from issue selection
|
||||
* @return {Array} Array of labels IDs
|
||||
*/
|
||||
|
||||
getLabelsToRemove() {
|
||||
const result = [];
|
||||
const indeterminatedLabels = this.getUnmarkedIndeterminedLabels();
|
||||
const labelsToApply = this.getLabelsToApply();
|
||||
indeterminatedLabels.map(function(id) {
|
||||
// We need to exclude label IDs that will be applied
|
||||
// By not doing this will cause issues from selection to not add labels at all
|
||||
if (labelsToApply.indexOf(id) === -1) {
|
||||
return result.push(id);
|
||||
}
|
||||
this.getElement('.selected_issue:checked').each((i, el) => {
|
||||
labelIds.push(this.getElement(`#${this.prefixId}${el.dataset.id}`).data('labels'));
|
||||
});
|
||||
return result;
|
||||
return _.intersection.apply(this, labelIds);
|
||||
}
|
||||
|
||||
// From issuable's initial bulk selection
|
||||
getOriginalMarkedIds() {
|
||||
const labelIds = [];
|
||||
this.getElement('.selected_issue:checked').each((i, el) => {
|
||||
labelIds.push(this.getElement(`#${this.prefixId}${el.dataset.id}`).data('labels'));
|
||||
});
|
||||
return _.intersection.apply(this, labelIds);
|
||||
}
|
||||
|
||||
// From issuable's initial bulk selection
|
||||
getOriginalIndeterminateIds() {
|
||||
const uniqueIds = [];
|
||||
const labelIds = [];
|
||||
let issuableLabels = [];
|
||||
|
||||
// Collect unique label IDs for all checked issues
|
||||
this.getElement('.selected_issue:checked').each((i, el) => {
|
||||
issuableLabels = this.getElement(`#${this.prefixId}${el.dataset.id}`).data('labels');
|
||||
issuableLabels.forEach((labelId) => {
|
||||
// Store unique IDs
|
||||
if (uniqueIds.indexOf(labelId) === -1) {
|
||||
uniqueIds.push(labelId);
|
||||
}
|
||||
});
|
||||
// Store array of IDs per issuable
|
||||
labelIds.push(issuableLabels);
|
||||
});
|
||||
// Add uniqueIds to add it as argument for _.intersection
|
||||
labelIds.unshift(uniqueIds);
|
||||
// Return IDs that are present but not in all selected issueables
|
||||
return _.difference(uniqueIds, _.intersection.apply(this, labelIds));
|
||||
}
|
||||
|
||||
getElement(selector) {
|
||||
this.scopeEl = this.scopeEl || $('.content');
|
||||
return this.scopeEl.find(selector);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, class-methods-use-this, no-underscore-dangle, no-param-reassign, no-unused-vars, consistent-return, func-names, space-before-function-paren, padded-blocks, max-len */
|
||||
/* global Flash */
|
||||
|
||||
((global) => {
|
||||
|
||||
class LabelManager {
|
||||
|
@ -104,4 +106,3 @@
|
|||
gl.LabelManager = LabelManager;
|
||||
|
||||
})(window.gl || (window.gl = {}));
|
||||
|
||||
|
|
|
@ -1,12 +1,16 @@
|
|||
/* eslint-disable no-useless-return, func-names, space-before-function-paren, wrap-iife, no-var, no-underscore-dangle, prefer-arrow-callback, max-len, one-var, no-unused-vars, one-var-declaration-per-line, prefer-template, no-new, consistent-return, object-shorthand, comma-dangle, no-shadow, no-param-reassign, brace-style, vars-on-top, quotes, no-lonely-if, no-else-return, no-undef, semi, dot-notation, no-empty, no-return-assign, camelcase, prefer-spread, padded-blocks, max-len */
|
||||
/* eslint-disable no-useless-return, func-names, space-before-function-paren, wrap-iife, no-var, no-underscore-dangle, prefer-arrow-callback, max-len, one-var, no-unused-vars, one-var-declaration-per-line, prefer-template, no-new, consistent-return, object-shorthand, comma-dangle, no-shadow, no-param-reassign, brace-style, vars-on-top, quotes, no-lonely-if, no-else-return, semi, dot-notation, no-empty, no-return-assign, camelcase, prefer-spread, padded-blocks */
|
||||
/* global Issuable */
|
||||
/* global ListLabel */
|
||||
|
||||
(function() {
|
||||
this.LabelsSelect = (function() {
|
||||
function LabelsSelect() {
|
||||
var _this;
|
||||
_this = this;
|
||||
$('.js-label-select').each(function(i, dropdown) {
|
||||
var $block, $colorPreview, $dropdown, $form, $loading, $selectbox, $sidebarCollapsedValue, $value, abilityName, defaultLabel, enableLabelCreateButton, issueURLSplit, issueUpdateURL, labelHTMLTemplate, labelNoneHTMLTemplate, labelUrl, namespacePath, projectPath, saveLabelData, selectedLabel, showAny, showNo, $sidebarLabelTooltip, initialSelected, $toggleText, fieldName, useId, propertyName, showMenuAbove;
|
||||
var $block, $colorPreview, $dropdown, $form, $loading, $selectbox, $sidebarCollapsedValue, $value, abilityName, defaultLabel, enableLabelCreateButton, issueURLSplit, issueUpdateURL, labelHTMLTemplate, labelNoneHTMLTemplate, labelUrl, namespacePath, projectPath, saveLabelData, selectedLabel, showAny, showNo, $sidebarLabelTooltip, initialSelected, $toggleText, fieldName, useId, propertyName, showMenuAbove, $container, $dropdownContainer;
|
||||
$dropdown = $(dropdown);
|
||||
$dropdownContainer = $dropdown.closest('.labels-filter');
|
||||
$toggleText = $dropdown.find('.dropdown-toggle-text');
|
||||
namespacePath = $dropdown.data('namespace-path');
|
||||
projectPath = $dropdown.data('project-path');
|
||||
|
@ -122,7 +126,7 @@
|
|||
});
|
||||
});
|
||||
};
|
||||
return $dropdown.glDropdown({
|
||||
$dropdown.glDropdown({
|
||||
showMenuAbove: showMenuAbove,
|
||||
data: function(term, callback) {
|
||||
return $.ajax({
|
||||
|
@ -169,33 +173,40 @@
|
|||
});
|
||||
},
|
||||
renderRow: function(label, instance) {
|
||||
var $a, $li, active, color, colorEl, indeterminate, removesAll, selectedClass, spacing;
|
||||
var $a, $li, color, colorEl, indeterminate, removesAll, selectedClass, spacing, i, marked, dropdownName, dropdownValue;
|
||||
$li = $('<li>');
|
||||
$a = $('<a href="#">');
|
||||
selectedClass = [];
|
||||
removesAll = label.id <= 0 || (label.id == null);
|
||||
if ($dropdown.hasClass('js-filter-bulk-update')) {
|
||||
indeterminate = instance.indeterminateIds;
|
||||
active = instance.activeIds;
|
||||
indeterminate = $dropdown.data('indeterminate') || [];
|
||||
marked = $dropdown.data('marked') || [];
|
||||
|
||||
if (indeterminate.indexOf(label.id) !== -1) {
|
||||
selectedClass.push('is-indeterminate');
|
||||
}
|
||||
if (active.indexOf(label.id) !== -1) {
|
||||
|
||||
if (marked.indexOf(label.id) !== -1) {
|
||||
// Remove is-indeterminate class if the item will be marked as active
|
||||
i = selectedClass.indexOf('is-indeterminate');
|
||||
if (i !== -1) {
|
||||
selectedClass.splice(i, 1);
|
||||
}
|
||||
selectedClass.push('is-active');
|
||||
// Add input manually
|
||||
instance.addInput(this.fieldName, label.id);
|
||||
}
|
||||
}
|
||||
if (this.id(label) && $form.find("input[type='hidden'][name='" + ($dropdown.data('fieldName')) + "'][value='" + this.id(label).toString().replace(/'/g, '\\\'') + "']").length) {
|
||||
selectedClass.push('is-active');
|
||||
}
|
||||
if ($dropdown.hasClass('js-multiselect') && removesAll) {
|
||||
selectedClass.push('dropdown-clear-active');
|
||||
} else {
|
||||
if (this.id(label)) {
|
||||
dropdownName = $dropdown.data('fieldName');
|
||||
dropdownValue = this.id(label).toString().replace(/'/g, '\\\'');
|
||||
|
||||
if ($form.find("input[type='hidden'][name='" + dropdownName + "'][value='" + dropdownValue + "']").length) {
|
||||
selectedClass.push('is-active');
|
||||
}
|
||||
}
|
||||
|
||||
if ($dropdown.hasClass('js-multiselect') && removesAll) {
|
||||
selectedClass.push('dropdown-clear-active');
|
||||
}
|
||||
}
|
||||
if (label.duplicate) {
|
||||
spacing = 100 / label.color.length;
|
||||
|
@ -231,7 +242,6 @@
|
|||
// Return generated html
|
||||
return $li.html($a).prop('outerHTML');
|
||||
},
|
||||
persistWhenHide: $dropdown.data('persistWhenHide'),
|
||||
search: {
|
||||
fields: ['title']
|
||||
},
|
||||
|
@ -310,18 +320,15 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
if ($dropdown.hasClass('js-filter-bulk-update')) {
|
||||
// If we are persisting state we need the classes
|
||||
if (!this.options.persistWhenHide) {
|
||||
return $dropdown.parent().find('.is-active, .is-indeterminate').removeClass();
|
||||
}
|
||||
}
|
||||
},
|
||||
multiSelect: $dropdown.hasClass('js-multiselect'),
|
||||
vue: $dropdown.hasClass('js-issue-board-sidebar'),
|
||||
clicked: function(label, $el, e) {
|
||||
clicked: function(label, $el, e, isMarking) {
|
||||
var isIssueIndex, isMRIndex, page;
|
||||
_this.enableBulkLabelDropdown();
|
||||
|
||||
page = $('body').data('page');
|
||||
isIssueIndex = page === 'projects:issues:index';
|
||||
isMRIndex = page === 'projects:merge_requests:index';
|
||||
|
||||
if ($dropdown.parent().find('.is-active:not(.dropdown-clear-active)').length) {
|
||||
$dropdown.parent()
|
||||
|
@ -330,12 +337,11 @@
|
|||
}
|
||||
|
||||
if ($dropdown.hasClass('js-filter-bulk-update') || $dropdown.hasClass('js-issuable-form-dropdown')) {
|
||||
_this.enableBulkLabelDropdown();
|
||||
_this.setDropdownData($dropdown, isMarking, this.id(label));
|
||||
return;
|
||||
}
|
||||
|
||||
page = $('body').data('page');
|
||||
isIssueIndex = page === 'projects:issues:index';
|
||||
isMRIndex = page === 'projects:merge_requests:index';
|
||||
if ($('html').hasClass('issue-boards-page') && !$dropdown.hasClass('js-issue-board-sidebar')) {
|
||||
if (label.isAny) {
|
||||
gl.issueBoards.BoardsStore.state.filters['label_name'] = [];
|
||||
|
@ -397,17 +403,10 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
setIndeterminateIds: function() {
|
||||
if (this.dropdown.find('.dropdown-menu-toggle').hasClass('js-filter-bulk-update')) {
|
||||
return this.indeterminateIds = _this.getIndeterminateIds();
|
||||
}
|
||||
},
|
||||
setActiveIds: function() {
|
||||
if (this.dropdown.find('.dropdown-menu-toggle').hasClass('js-filter-bulk-update')) {
|
||||
return this.activeIds = _this.getActiveIds();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Set dropdown data
|
||||
_this.setOriginalDropdownData($dropdownContainer, $dropdown);
|
||||
});
|
||||
this.bindEvents();
|
||||
}
|
||||
|
@ -420,34 +419,9 @@
|
|||
if ($('.selected_issue:checked').length) {
|
||||
return;
|
||||
}
|
||||
// Remove inputs
|
||||
$('.issues_bulk_update .labels-filter input[type="hidden"]').remove();
|
||||
// Also restore button text
|
||||
return $('.issues_bulk_update .labels-filter .dropdown-toggle-text').text('Label');
|
||||
};
|
||||
|
||||
LabelsSelect.prototype.getIndeterminateIds = function() {
|
||||
var label_ids;
|
||||
label_ids = [];
|
||||
$('.selected_issue:checked').each(function(i, el) {
|
||||
var issue_id;
|
||||
issue_id = $(el).data('id');
|
||||
return label_ids.push($("#issue_" + issue_id).data('labels'));
|
||||
});
|
||||
return _.flatten(label_ids);
|
||||
};
|
||||
|
||||
LabelsSelect.prototype.getActiveIds = function() {
|
||||
var label_ids;
|
||||
label_ids = [];
|
||||
$('.selected_issue:checked').each(function(i, el) {
|
||||
var issue_id;
|
||||
issue_id = $(el).data('id');
|
||||
return label_ids.push($("#issue_" + issue_id).data('labels'));
|
||||
});
|
||||
return _.intersection.apply(_, label_ids);
|
||||
};
|
||||
|
||||
LabelsSelect.prototype.enableBulkLabelDropdown = function() {
|
||||
var issuableBulkActions;
|
||||
if ($('.selected_issue:checked').length) {
|
||||
|
@ -456,8 +430,59 @@
|
|||
}
|
||||
};
|
||||
|
||||
return LabelsSelect;
|
||||
LabelsSelect.prototype.setDropdownData = function($dropdown, isMarking, value) {
|
||||
var i, markedIds, unmarkedIds, indeterminateIds;
|
||||
var issuableBulkActions = $('.bulk-update').data('bulkActions');
|
||||
|
||||
markedIds = $dropdown.data('marked') || [];
|
||||
unmarkedIds = $dropdown.data('unmarked') || [];
|
||||
indeterminateIds = $dropdown.data('indeterminate') || [];
|
||||
|
||||
if (isMarking) {
|
||||
markedIds.push(value);
|
||||
|
||||
i = indeterminateIds.indexOf(value);
|
||||
if (i > -1) {
|
||||
indeterminateIds.splice(i, 1);
|
||||
}
|
||||
|
||||
i = unmarkedIds.indexOf(value);
|
||||
if (i > -1) {
|
||||
unmarkedIds.splice(i, 1);
|
||||
}
|
||||
} else {
|
||||
// If marked item (not common) is unmarked
|
||||
i = markedIds.indexOf(value);
|
||||
if (i > -1) {
|
||||
markedIds.splice(i, 1);
|
||||
}
|
||||
|
||||
// If an indeterminate item is being unmarked
|
||||
if (issuableBulkActions.getOriginalIndeterminateIds().indexOf(value) > -1) {
|
||||
unmarkedIds.push(value);
|
||||
}
|
||||
|
||||
// If a marked item is being unmarked
|
||||
// (a marked item could also be a label that is present in all selection)
|
||||
if (issuableBulkActions.getOriginalCommonIds().indexOf(value) > -1) {
|
||||
unmarkedIds.push(value);
|
||||
}
|
||||
}
|
||||
|
||||
$dropdown.data('marked', markedIds);
|
||||
$dropdown.data('unmarked', unmarkedIds);
|
||||
$dropdown.data('indeterminate', indeterminateIds);
|
||||
};
|
||||
|
||||
LabelsSelect.prototype.setOriginalDropdownData = function($container, $dropdown) {
|
||||
var labels = [];
|
||||
$container.find('[name="label_name[]"]').map(function() {
|
||||
return labels.push(this.value);
|
||||
});
|
||||
$dropdown.data('marked', labels);
|
||||
};
|
||||
|
||||
return LabelsSelect;
|
||||
})();
|
||||
|
||||
}).call(this);
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
/* eslint-disable */
|
||||
/*= require ace-rails-ap */
|
||||
/*= require ace/ext-searchbox */
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, one-var, one-var-declaration-per-line, consistent-return, no-undef, prefer-arrow-callback, no-return-assign, object-shorthand, comma-dangle, no-param-reassign, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, one-var, one-var-declaration-per-line, consistent-return, prefer-arrow-callback, no-return-assign, object-shorthand, comma-dangle, no-param-reassign, padded-blocks, max-len */
|
||||
|
||||
(function() {
|
||||
(function(w) {
|
||||
var notificationGranted, notifyMe, notifyPermissions;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, no-use-before-define, no-underscore-dangle, no-param-reassign, no-undef, prefer-template, quotes, comma-dangle, prefer-arrow-callback, consistent-return, one-var, one-var-declaration-per-line, spaced-comment, radix, no-else-return, max-len, no-plusplus, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, no-use-before-define, no-underscore-dangle, no-param-reassign, prefer-template, quotes, comma-dangle, prefer-arrow-callback, consistent-return, one-var, one-var-declaration-per-line, spaced-comment, radix, no-else-return, max-len, no-plusplus, padded-blocks */
|
||||
|
||||
// LineHighlighter
|
||||
//
|
||||
// Handles single- and multi-line selection and highlight for blob views.
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, quote-props, no-useless-computed-key, object-shorthand, prefer-const, no-new, padded-blocks, no-param-reassign, semi, max-len */
|
||||
/* global Vue */
|
||||
/* global ace */
|
||||
/* global Flash */
|
||||
|
||||
((global) => {
|
||||
|
||||
global.mergeConflicts = global.mergeConflicts || {};
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable padded-blocks, no-param-reassign, comma-dangle */
|
||||
/* global Vue */
|
||||
|
||||
((global) => {
|
||||
|
||||
global.mergeConflicts = global.mergeConflicts || {};
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable padded-blocks, no-param-reassign, comma-dangle */
|
||||
/* global Vue */
|
||||
|
||||
((global) => {
|
||||
|
||||
global.mergeConflicts = global.mergeConflicts || {};
|
||||
|
@ -19,7 +21,7 @@
|
|||
</td>
|
||||
<td class="diff-line-num old_line" :class="lineCssClass(line)" v-if="!line.isHeader">{{line.lineNumber}}</td>
|
||||
<td class="line_content parallel" :class="lineCssClass(line)" v-if="!line.isHeader" v-html="line.richText"></td>
|
||||
</template>
|
||||
</template>
|
||||
</tr>
|
||||
</table>
|
||||
`,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable no-param-reassign, comma-dangle, no-extra-semi, padded-blocks */
|
||||
|
||||
((global) => {
|
||||
global.mergeConflicts = global.mergeConflicts || {};
|
||||
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable comma-dangle, object-shorthand, no-dupe-keys, no-param-reassign, no-plusplus, camelcase, prefer-const, no-nested-ternary, no-continue, semi, func-call-spacing, no-spaced-func, padded-blocks, max-len */
|
||||
/* global Cookies */
|
||||
/* global Vue */
|
||||
|
||||
((global) => {
|
||||
global.mergeConflicts = global.mergeConflicts || {};
|
||||
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable new-cap, comma-dangle, no-new, semi */
|
||||
/* global Vue */
|
||||
/* global Flash */
|
||||
|
||||
//= require vue
|
||||
//= require ./merge_conflict_store
|
||||
//= require ./merge_conflict_service
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable no-param-reassign, comma-dangle, padded-blocks */
|
||||
|
||||
((global) => {
|
||||
global.mergeConflicts = global.mergeConflicts || {};
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable */
|
||||
/* eslint-disable no-param-reassign, quote-props, comma-dangle, padded-blocks */
|
||||
|
||||
((global) => {
|
||||
global.mergeConflicts = global.mergeConflicts || {};
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, quotes, no-undef, no-underscore-dangle, one-var, one-var-declaration-per-line, consistent-return, dot-notation, quote-props, comma-dangle, object-shorthand, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, quotes, no-underscore-dangle, one-var, one-var-declaration-per-line, consistent-return, dot-notation, quote-props, comma-dangle, object-shorthand, padded-blocks, max-len */
|
||||
/* global MergeRequestTabs */
|
||||
|
||||
/*= require jquery.waitforimages */
|
||||
/*= require task_list */
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
/* eslint-disable */
|
||||
((global) => {
|
||||
/* eslint-disable max-len, no-var, func-names, space-before-function-paren, vars-on-top, no-plusplus, comma-dangle, no-return-assign, consistent-return, no-param-reassign, one-var, one-var-declaration-per-line, quotes, prefer-template, no-else-return, prefer-arrow-callback, no-unused-vars, no-underscore-dangle, no-shadow, no-mixed-operators, template-curly-spacing, camelcase, default-case, wrap-iife, semi, padded-blocks */
|
||||
/* global notify */
|
||||
/* global notifyPermissions */
|
||||
/* global merge_request_widget */
|
||||
/* global Turbolinks */
|
||||
|
||||
((global) => {
|
||||
var indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
|
||||
|
||||
const DEPLOYMENT_TEMPLATE = `<div class="mr-widget-heading" id="<%- id %>">
|
||||
|
@ -27,7 +32,7 @@
|
|||
</div>
|
||||
</div>`;
|
||||
|
||||
global.MergeRequestWidget = (function() {
|
||||
global.MergeRequestWidget = (function() {
|
||||
function MergeRequestWidget(opts) {
|
||||
// Initialize MergeRequestWidget behavior
|
||||
//
|
||||
|
@ -82,10 +87,10 @@
|
|||
};
|
||||
|
||||
MergeRequestWidget.prototype.retrieveSuccessIcon = function() {
|
||||
const $ciSuccessIcon = $('.js-success-icon');
|
||||
this.$ciSuccessIcon = $ciSuccessIcon.html();
|
||||
$ciSuccessIcon.remove();
|
||||
}
|
||||
const $ciSuccessIcon = $('.js-success-icon');
|
||||
this.$ciSuccessIcon = $ciSuccessIcon.html();
|
||||
$ciSuccessIcon.remove();
|
||||
}
|
||||
|
||||
MergeRequestWidget.prototype.mergeInProgress = function(deleteSourceBranch) {
|
||||
if (deleteSourceBranch == null) {
|
||||
|
@ -204,7 +209,7 @@
|
|||
const template = _.template(templateString)(environment)
|
||||
this.$widgetBody.before(template);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
MergeRequestWidget.prototype.showCIStatus = function(state) {
|
||||
var allowed_states;
|
||||
|
@ -246,4 +251,4 @@
|
|||
|
||||
})();
|
||||
|
||||
})(window.gl || (window.gl = {}));
|
||||
})(window.gl || (window.gl = {}));
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, no-undef, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, padded-blocks, max-len */
|
||||
|
||||
(function() {
|
||||
var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-use-before-define, camelcase, quotes, object-shorthand, no-shadow, no-unused-vars, no-undef, comma-dangle, no-var, prefer-template, no-underscore-dangle, consistent-return, one-var, one-var-declaration-per-line, default-case, prefer-arrow-callback, padded-blocks, max-len */
|
||||
/* 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, padded-blocks, max-len */
|
||||
/* global Flash */
|
||||
|
||||
(function() {
|
||||
this.Milestone = (function() {
|
||||
Milestone.updateIssue = function(li, issue_url, data) {
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-underscore-dangle, prefer-arrow-callback, max-len, one-var, one-var-declaration-per-line, no-unused-vars, object-shorthand, comma-dangle, no-else-return, no-self-compare, consistent-return, no-undef, no-param-reassign, no-shadow, padded-blocks, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-underscore-dangle, prefer-arrow-callback, max-len, one-var, one-var-declaration-per-line, no-unused-vars, object-shorthand, comma-dangle, no-else-return, no-self-compare, consistent-return, no-param-reassign, no-shadow, padded-blocks */
|
||||
/* global Vue */
|
||||
/* global Issuable */
|
||||
/* global ListMilestone */
|
||||
|
||||
(function() {
|
||||
this.MilestoneSelect = (function() {
|
||||
function MilestoneSelect(currentProject) {
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, one-var, vars-on-top, one-var-declaration-per-line, comma-dangle, object-shorthand, no-else-return, prefer-template, quotes, no-undef, prefer-arrow-callback, padded-blocks, no-param-reassign, no-cond-assign, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, one-var, vars-on-top, one-var-declaration-per-line, comma-dangle, object-shorthand, no-else-return, prefer-template, quotes, prefer-arrow-callback, padded-blocks, no-param-reassign, no-cond-assign, max-len */
|
||||
/* global Api */
|
||||
|
||||
(function() {
|
||||
var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
||||
|
||||
this.NamespaceSelect = (function() {
|
||||
window.NamespaceSelect = (function() {
|
||||
function NamespaceSelect(opts) {
|
||||
this.onSelectItem = bind(this.onSelectItem, this);
|
||||
var fieldName, showAny;
|
||||
|
@ -64,7 +66,7 @@
|
|||
|
||||
})();
|
||||
|
||||
this.NamespaceSelects = (function() {
|
||||
window.NamespaceSelects = (function() {
|
||||
function NamespaceSelects(opts) {
|
||||
var ref;
|
||||
if (opts == null) {
|
||||
|
@ -74,7 +76,7 @@
|
|||
this.$dropdowns.each(function(i, dropdown) {
|
||||
var $dropdown;
|
||||
$dropdown = $(dropdown);
|
||||
return new NamespaceSelect({
|
||||
return new window.NamespaceSelect({
|
||||
dropdown: $dropdown
|
||||
});
|
||||
});
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue