Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
804198ab
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
804198ab
编写于
12月 15, 2016
作者:
S
Sam Rose
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Maintain milestone filter option when updating filter
Setup teaspoon tests for Issuable
上级
ffcf1565
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
99 addition
and
6 deletion
+99
-6
app/assets/javascripts/issuable.js.es6
app/assets/javascripts/issuable.js.es6
+9
-5
app/views/shared/issuable/_milestone_dropdown.html.haml
app/views/shared/issuable/_milestone_dropdown.html.haml
+1
-1
spec/javascripts/fixtures/issuable_filter.html.haml
spec/javascripts/fixtures/issuable_filter.html.haml
+8
-0
spec/javascripts/issuable_spec.js.es6
spec/javascripts/issuable_spec.js.es6
+81
-0
未找到文件。
app/assets/javascripts/issuable.js.es6
浏览文件 @
804198ab
/* 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 */
/* eslint-disable
no-param-reassign,
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()
{
(
(global) =>
{
var issuable_created;
issuable_created = false;
this
.Issuable = {
global
.Issuable = {
init: function() {
Issuable.initTemplates();
Issuable.initSearch();
...
...
@@ -111,7 +111,11 @@
filterResults: (function(_this) {
return function(form) {
var formAction, formData, issuesUrl;
formData = form.serialize();
formData = form.serializeArray();
formData = formData.filter(function(data) {
return data.value !== '';
});
formData = $.param(formData);
formAction = form.attr('action');
issuesUrl = formAction;
issuesUrl += "" + (formAction.indexOf('?') < 0 ? '?' : '&');
...
...
@@ -184,4 +188,4 @@
}
};
})
.call(this
);
})
(window
);
app/views/shared/issuable/_milestone_dropdown.html.haml
浏览文件 @
804198ab
...
...
@@ -3,7 +3,7 @@
-
show_menu_above
=
show_menu_above
||
false
-
selected_text
=
selected
.
try
(
:title
)
||
params
[
:milestone_title
]
-
dropdown_title
=
local_assigns
.
fetch
(
:dropdown_title
,
"Filter by milestone"
)
-
if
selected
.
present?
-
if
selected
.
present?
||
params
[
:milestone_title
].
present?
=
hidden_field_tag
(
name
,
name
==
:milestone_title
?
selected_text
:
selected
.
id
)
=
dropdown_tag
(
milestone_dropdown_label
(
selected_text
),
options:
{
title:
dropdown_title
,
toggle_class:
"js-milestone-select js-filter-submit
#{
extra_class
}
"
,
filter:
true
,
dropdown_class:
"dropdown-menu-selectable dropdown-menu-milestone"
,
placeholder:
"Search milestones"
,
footer_content:
project
.
present?
,
data:
{
show_no:
true
,
show_menu_above:
show_menu_above
,
show_any:
show_any
,
show_upcoming:
show_upcoming
,
field_name:
name
,
selected:
selected
.
try
(
:title
),
project_id:
project
.
try
(
:id
),
milestones:
milestones_filter_dropdown_path
,
default_label:
"Milestone"
}
})
do
...
...
spec/javascripts/fixtures/issuable_filter.html.haml
0 → 100644
浏览文件 @
804198ab
%form
.js-filter-form
{
action:
'/user/project/issues?scope=all&state=closed'
}
%input
{
id:
'utf8'
,
name:
'utf8'
,
value:
'✓'
}
%input
{
id:
'check_all_issues'
,
name:
'check_all_issues'
}
%input
{
id:
'search'
,
name:
'search'
}
%input
{
id:
'author_id'
,
name:
'author_id'
}
%input
{
id:
'assignee_id'
,
name:
'assignee_id'
}
%input
{
id:
'milestone_title'
,
name:
'milestone_title'
}
%input
{
id:
'label_name'
,
name:
'label_name'
}
spec/javascripts/issuable_spec.js.es6
0 → 100644
浏览文件 @
804198ab
/* global Issuable */
/* global Turbolinks */
//= require issuable
//= require turbolinks
(() => {
const BASE_URL = '/user/project/issues?scope=all&state=closed';
const DEFAULT_PARAMS = '&utf8=%E2%9C%93';
function updateForm(formValues, form) {
$.each(formValues, (id, value) => {
$(`#${id}`, form).val(value);
});
}
function resetForm(form) {
$('input[name!="utf8"]', form).each((index, input) => {
input.setAttribute('value', '');
});
}
describe('Issuable', () => {
fixture.preload('issuable_filter');
beforeEach(() => {
fixture.load('issuable_filter');
Issuable.init();
});
it('should be defined', () => {
expect(window.Issuable).toBeDefined();
});
describe('filtering', () => {
let $filtersForm;
beforeEach(() => {
$filtersForm = $('.js-filter-form');
fixture.load('issuable_filter');
resetForm($filtersForm);
});
it('should contain only the default parameters', () => {
spyOn(Turbolinks, 'visit');
Issuable.filterResults($filtersForm);
expect(Turbolinks.visit).toHaveBeenCalledWith(BASE_URL + DEFAULT_PARAMS);
});
it('should filter for the phrase "broken"', () => {
spyOn(Turbolinks, 'visit');
updateForm({ search: 'broken' }, $filtersForm);
Issuable.filterResults($filtersForm);
const params = `${DEFAULT_PARAMS}&search=broken`;
expect(Turbolinks.visit).toHaveBeenCalledWith(BASE_URL + params);
});
it('should keep query parameters after modifying filter', () => {
spyOn(Turbolinks, 'visit');
// initial filter
updateForm({ milestone_title: 'v1.0' }, $filtersForm);
Issuable.filterResults($filtersForm);
let params = `${DEFAULT_PARAMS}&milestone_title=v1.0`;
expect(Turbolinks.visit).toHaveBeenCalledWith(BASE_URL + params);
// update filter
updateForm({ label_name: 'Frontend' }, $filtersForm);
Issuable.filterResults($filtersForm);
params = `${DEFAULT_PARAMS}&milestone_title=v1.0&label_name=Frontend`;
expect(Turbolinks.visit).toHaveBeenCalledWith(BASE_URL + params);
});
});
});
})();
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录