選択されたチケットテンプレートに合わせて表示項目を変更する
はじめに
ここ数カ月にredmineを使い始めて、少しずつカスタマイズすることが出てきたので、備忘用に残しておく。
- 「optgroup」が使われた場合、項目の値を取得する方法は「find("option:selected")」
- ViewCustomizePluginに「Type: JavaScript」って書いてあるけど、実際の記法はほぼ「jQuery」
前提条件
環境
- Redmine 3.4.11.stable
- view_customize 2.6.0
- redmine_issue_templates 0.2.2-dev
項目の内容
項目 | 形式 | 内容 |
---|---|---|
selector | チケットテンプレート | hoge, piyo |
issue_custom_field_values_1 | カスタムフィールド | hoge |
issue_custom_field_values_2 | カスタムフィールド | piyo |
サンプルコード
/*
サンプルチケット編集画面
Path pattern: /issues/new
挿入位置:チケット入力欄の下
Type: JavaScript
*/
$(function(){
hideAll();
const selector1="hoge";
const selector2="piyo";
var selVal='';
$("#issue_template").change(function(){
selVal = $('#issue_template').find("option:selected").val();
// 「項目名」を取得したい場合は「text」を使う
// selVal = $('#issue_template').find("option:selected").text();
if(selVal == selector1) {
showSelector1();
} else if(selVal == selector2) {
showSelector2();
} else {
hideAll();
}
});
});
function hideAll() {
$('#issue_custom_field_values_1').parent().hide();
$('#issue_custom_field_values_2').parent().hide();
}
function showSelector1() {
$('#issue_custom_field_values_1').parent().show();
$('#issue_custom_field_values_2').parent().hide();
};
function showSelector2() {
$('#issue_custom_field_values_1').parent().hide();
$('#issue_custom_field_values_2').parent().show();
};
/*
サンプルチケット編集画面
Path pattern: /issues/new
挿入位置:チケット入力欄の下
Type: JavaScript
*/
$(function(){
hideAll();
const selector1="hoge";
const selector2="piyo";
var selVal='';
$("#issue_template").change(function(){
selVal = $('#issue_template').find("option:selected").val();
// 「項目名」を取得したい場合は「text」を使う
// selVal = $('#issue_template').find("option:selected").text();
if(selVal == selector1) {
showSelector1();
} else if(selVal == selector2) {
showSelector2();
} else {
hideAll();
}
});
});
function hideAll() {
$('#issue_custom_field_values_1').parent().hide();
$('#issue_custom_field_values_2').parent().hide();
}
function showSelector1() {
$('#issue_custom_field_values_1').parent().show();
$('#issue_custom_field_values_2').parent().hide();
};
function showSelector2() {
$('#issue_custom_field_values_1').parent().hide();
$('#issue_custom_field_values_2').parent().show();
};
初期表示時は全カスタムフィールドを非表示化。
チケットテンプレートの選択肢に合わせて、カスタムフィールドを表示させる。
カスタムフィールドの項目が多くなった場合に備えて、処理は関数化した。
参考
- jQuery でコンボボックスの選択されたオプションのテキストを取得する場合、optgroup を使っている場合は子孫選択でないと取得されないというお話 / find(子孫) と children(直近) の違い
https://logicalerror.seesaa.net/article/422682236.html
https://logicalerror.seesaa.net/article/422682236.html
Author And Source
この問題について(選択されたチケットテンプレートに合わせて表示項目を変更する), 我々は、より多くの情報をここで見つけました https://qiita.com/sakuhi/items/4396be419e816adcd79d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .