app/views/page/_form_classification_field.html.erb
<script>
/**
* 分類フィールド
*
*/
var ItemFieldClassificationSelect2 = {
// Classification select2 options
classificationSlect2options: {
multiple: false,
minimumInputLength: 1,
width: "250px",
placeholder: <%= raw t("classification.search_placeholder").to_json %>,
formatNoMatches: function(term) {
return "'" + term + "' " + <%= raw t("classification.search_nomatch").to_json %>;
},
formatSearching: function() {
return <%= raw t("classification.search_searching").to_json %>;
},
formatInputTooShort: function(term, minLength){
return <%= raw t("classification.search_placeholder").to_json %>;
},
ajax: {
url: "/classifications/search_name.json",
dataType: 'json',
data: function (term, page) {
var currentNumber = $(this).attr('id').match(/\d+/);
var classificationTypeId = $('#classifications_' + currentNumber + '_classification_type_id').val();
return {
classification_type_id: classificationTypeId,
search_phrase: term,
};
},
results: function (data, page) {
return {results: data};
},
},
initSelection: function(element, callback) {
var id = $(element).val();
if (id != "") {
$.ajax("/classifications/search_name.json?classification_id=" + id, {
dataType: "json"
}).done(function(data) { callback(data); });
}
},
},
// ClassificationType select2 options
classificationTypeSlect2options: {
width: "400px",
matcher: function(term, text, opt) {
return text.toUpperCase().indexOf(term.toUpperCase())==0
|| opt.attr("alt").toUpperCase().indexOf(term.toUpperCase())==0;
},
},
};
$(document).ready(function() {
$("select[id $= 'classification_type_id']").select2(ItemFieldClassificationSelect2.classificationTypeSlect2options);
$("input[id $= 'classification_id']").select2(ItemFieldClassificationSelect2.classificationSlect2options);
});
/**
* ClassificationType deselect
*
*/
$(document).on("select2-selecting", "select[id $= 'classification_type_id']", function(e){
var targetId = e.target.id
var targetNumber = targetId.match(/_(\d+)_/);
$("#classifications_" + targetNumber[1] + "_classification_id").select2('val', '');
});
</script>
<td>
<nobr><label><%= t('activerecord.models.classification') -%>:</label></nobr>
</td>
<td>
<table id="bless">
<% classification = {}; classification[:classification_id] = 2 -%>
<% @classifications.each_with_index do |classification, index| -%>
<tr id="CLASSIFICATION<%= index %>" >
<% if SystemConfiguration.get("manifestation.search.use_classification_type") %>
<td>
<%= select2_tag("classifications_#{index}_classification_type_id",
"classifications[][classification_type_id]",
@classification_types,
classification[:classification_type_id].to_i,
select_attribute: :name,
display_attribute: :display_name,
width: '200'
) %>
</td>
<% end %>
<td>
<%# TODO 分類型を使用しない場合のSELECT2フォーム %>
<% if SystemConfiguration.get("manifestation.search.use_classification_type") &&
SystemConfiguration.get("manifestation.search.use_select2_for_classification") %>
<%= text_field_tag "classifications[][classification_id]", classification[:classification_id], :id => "classifications_#{index}_classification_id", :class => "classification_id", :value => classification[:classification_id] %>
<% else %>
<%= text_field_tag "classifications[][classification_identifier]", classification[:classification_identifier], :id => "classifications_#{index}_classification_identifier", :class => "classification_identifier", :value => classification[:classification_identifier] %>
<% end %>
</td>
<td>
<%= link_to t('activerecord.attributes.search.classification_search'), classifications_search_category_path %>
</td>
</tr>
<% end %>
</table>
</td>