PageSourceSearch

https://www.bruleemerize.jp/common/js/composition.js

js bruleemerize.jp collected 2026-10-04 11:02:42 UTC 9,220 bytes, 214 lines download raw bytes

1$(function(){
2	'use strict';
3
4	// json を取得
5	// var url = 'https://preview.spec.grapestone.jp/9000.json';
6	var url = 'https://spec.grapestone.co.jp/9000.json';
7
8	// 初期表示
9	$.ajax({
10		type: 'GET',
11		url: url,
12		crossDomain: true,
13		dataType: 'jsonp',
14		jsonpCallback: 'callback'
15	}).done(function(data){
16		var data = JSON.parse(data);
17		var l = data.length;
18
19		var keepTime = '';
20		var specialMaterial = '';
21		var alcoholicContent = '';
22		var add_comment = '';
23
24		var keepTimeArray = [];
25		$('[data-keepTime]').each(function(i, elem) {
26			keepTime = $(this).attr('data-keepTime');
27			keepTimeArray.push(keepTime);
28		});
29		keepTimeArray = keepTimeArray.filter(function(x, i, self) {
30			return self.indexOf(x) === i;
31		});
32		$(keepTimeArray).each(function(i, elem) {
33			for(var i = 0; i < l; i++) {
34				var obj = data[i];
35				if(elem == obj.materialCode) {
36					$('[data-keepTime=' + elem + ']').append(obj.keepTime);
37				}
38			}
39		});
40
41		var specialMaterialArray = [];
42		$('[data-specialMaterial]').each(function(j, elem) {
43			specialMaterial = $(this).attr('data-specialMaterial');
44			specialMaterialArray.push(specialMaterial);
45		});
46		specialMaterialArray = specialMaterialArray.filter(function(x, i, self) {
47			return self.indexOf(x) === i;
48		});
49		$(keepTimeArray).each(function(i, elem) {
50			for(var i = 0; i < l; i++) {
51				var obj = data[i];
52				if(elem == obj.materialCode) {
53					$('[data-specialMaterial=' + elem + ']').append(obj.specialMaterial);
54				}
55			}
56		});
57
58		var alcoholicContentArray = [];
59		$('[data-alcoholicContent]').each(function(m, elem) {
60			alcoholicContent = $(this).attr('alcoholicContent');
61			alcoholicContentArray.push(alcoholicContent);
62		});
63		alcoholicContentArray = alcoholicContentArray.filter(function(x, i, self) {
64			return self.indexOf(x) === i;
65		});
66		$(specialMaterialArray).each(function(i, elem) {
67			for(var i = 0; i < l; i++) {
68				var obj = data[i];
69				if(elem == obj.materialCode) {
70					$('[data-alcoholicContent=' + elem + ']').append(obj.alcoholicContent);
71				}
72			}
73		});
74
75		var add_commentArray = [];
76		$('[data-add_comment]').each(function(k, elem) {
77			add_comment = $(this).attr('data-add_comment');
78			add_commentArray.push(add_comment);
79		});
80		add_commentArray = add_commentArray.filter(function(x, i, self) {
81			return self.indexOf(x) === i;
82		});
83		$(add_commentArray).each(function(i, elem) {
84			for(var i = 0; i < l; i++) {
85				var obj = data[i];
86				// console.log(obj);
87				if(elem == obj.materialCode) {
88					$('[data-add_comment=' + elem + ']').append(obj.add_comment + '<br><span>※「特定原材料等」には、特定原材料8品目に加え、特定原材料に準ずるもの20品目を記載しております。</span><br><span>※「お日保ち目安」には、お買上後のお日保ちの目安となる日数を表記しております。</span>');
89				}
90			}
91		});
92
93	}).fail(function(XMLHttpRequest, textStatus, errorThrown){
94		console.log('取得失敗');
95	});
96
97	// モーダル
98	$('.modal').each(function(i, elem) {
99		$(this).on('click', function(e){
100			e.preventDefault();
101			var compositionReference = $(this).attr('data-composition');
102			$.ajax({
103				type: 'GET',
104				url: url,
105				crossDomain: true,
106				dataType: 'jsonp',
107				jsonpCallback: 'callback'
108			}).done(function(data){
109				// console.log('取得成功');
110				var data = JSON.parse(data);
111				var l = data.length;
112
113				var codes = [];
114				for(var key in data) {
115					codes.push(data[key].materialCode);
116				}
117				var codeArray = $.unique(codes);
118
119				if (codeArray.indexOf(compositionReference) !== -1) {
120					for(var i = 0; i < l; i++) {
121						var obj = data[i];
122						if(compositionReference === obj.materialCode) {
123							// console.log('data-composition と materialCode が一致した場合');
124							$('.list').append('<div class="composition_list"><div class="composition_list__box composition_list__box-01"><h2 class="composition_list__ttl">使用原材料等</h2><div class="list__group list__group-01"></div></div><div class="composition_list__box composition_list__box-02"><h2 class="composition_list__ttl">栄養成分表示<span>(' + obj.nutritional_info + ')</span></h2><div class="list__group list__group-02"></div></div></div><p class="list__common_remarks">※「特定原材料等」には、特定原材料8品目に加え、特定原材料に準ずるもの20品目を記載しております。</p><p class="list__common_remarks">※「お日保ち目安」には、お買上後のお日保ちの目安となる日数を表記しております。</p><div class="list__close modaal-close" id="modaal-close"><span>閉じる</span></div>');
125
126							// 使用原材料等
127							if(obj.materialName !== '') {
128								$('.list__group-01').append('<div class="row" id="materialName"><div class="col-th">商品名</div><div class="col-td">' + obj.materialName + '</div></div>');
129							}
130							if(obj.freespace_title !== '') {
131								$('.list__group-01').append('<div class="row" id="freespace_title"><div class="col-th">名称</div><div class="col-td">' + obj.freespace + '</div></div>');
132							}
133							if(obj.material !== '') {
134								$('.list__group-01').append('<div class="row" id="material"><div class="col-th">原材料</div><div class="col-td">' + obj.material + '</div></div>');
135							}
136							if(obj.energy !== '') {
137								$('.list__group-01').append('<div class="row" id="energy"><div class="col-th">エネルギー</div><div class="col-td">' + obj.energy + '</div></div>');
138							}
139							if(obj.alcoholicContent !== '') {
140								$('.list__group-01').append('<div class="row" id="alcoholicContent"><div class="col-th">アルコール<span>含有量</span></div><div class="col-td">' + obj.alcoholicContent + '</div></div>');
141							}
142							if(obj.specialMaterial !== '') {
143								$('.list__group-01').append('<div class="row" id="specialMaterial"><div class="col-th">特定原材料等<br><span>28品目</span></div><div class="col-td">' + obj.specialMaterial + '</div></div>');
144
145							}
146							if(obj.keepTime !== '') {
147								$('.list__group-01').append('<div class="row" id="keepTime"><div class="col-th">お日保ち目安</div><div class="col-td">' + obj.keepTime + '</div></div>');
148							}
149							if(obj.nutrition_component_title !== '' && obj.nutrition_component !== '') {
150								$('.list__group-01').append('<div class="row" id="nutrition_component"><div class="col-th">' + obj.nutrition_component_title + '</div><div class="col-td">' + obj.nutrition_component + '</div></div>');
151							}
152
153							// 栄養成分表示
154							if(obj.calorific_value !== '') {
155								$('.list__group-02').append('<div class="row" id="calorific_value"><div class="col-th">熱量</div><div class="col-td">' + obj.calorific_value + '</div></div>');
156							}
157							if(obj.protein !== '') {
158								$('.list__group-02').append('<div class="row" id="protein"><div class="col-th">たんぱく質</div><div class="col-td">' + obj.protein + '</div></div>');
159							}
160							if(obj.lipid !== '') {
161								$('.list__group-02').append('<div class="row" id="lipid"><div class="col-th">脂質</div><div class="col-td">' + obj.lipid + '</div></div>');
162							}
163							if(obj.carbohydrate !== '') {
164								$('.list__group-02').append('<div class="row" id="carbohydrate"><div class="col-th">炭水化物</div><div class="col-td">' + obj.carbohydrate + '</div></div>');
165							}
166							if(obj.salt_equivalent !== '') {
167								$('.list__group-02').append('<div class="row" id="salt_equivalent"><div class="col-th">食塩相当量</div><div class="col-td">' + obj.salt_equivalent + '</div></div>');
168							}
169							if(obj.item_supplement !== '') {
170								$('.list__group-02').after('<p class="composition_list__c
170aption" id="item_supplement">' + obj.item_supplement + '</p>');
171							}
172
173							// 栄養成分表示の値がない場合
174							if(obj.calorific_value === '' && obj.protein === '' && obj.lipid === '' && obj.carbohydrate === '' && obj.salt_equivalent === '' && obj.item_supplement === '') {
175								$('.composition_list__box-02').remove();
176							}
177
178							// 備考
179							if(obj.add_comment !== '') {
180								$('.composition_list').after('<p class="list__remarks">' + obj.add_comment + '</p>');
181							}
182
183							// 更新日
184							if(obj.disp_updt !== '') {
185								var updt = obj.disp_updt;
186								var updtArray = []
187								updtArray.push(updt.split('/'));
188
189								var updtFormatted;
190								$(updtArray).each(function(i, elem){
191									updtFormatted = elem[0] + '年' + elem[1] + '月' + elem[2] + '日';
192								});
193								$('.composition_list').after('<p class="list__update">' + updtFormatted + '現在</p>');
194							}
195						}
196					}
197				} else {
198					$('.list').append('<p class="list__error">該当の原材料コードは登録されておりません。</p>');
199				}
200			}).fail(function(XMLHttpRequest, textStatus, errorThrown){
201				// console.log('取得失敗');
202				$('.list').append('<p class="list__error">取得に失敗しました。</p>');
203			})
204			$(this).after('<div id="modal" class="modal__popup"><div class="list" id="list"></div></div>');
205		});
206	})
207
208	$('.modal').modaal({
209		overlay_opacity: 0.6,
210		after_close: function(modal_wrapper) {
211			$('.modal__popup').remove();
212		}
213	});
214});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.