// const taxnomy = [
// {
// name : '栄養摂取を支援',
// slug : 'nutrition',
// term : [
// {
// 'name' : '飲む',
// 'slug' : 'nutrition01',
// },
// {
// 'name' : '食べる',
// 'slug' : 'nutrition02',
// },
// {
// 'name' : '混ぜる・溶かす',
// 'slug' : 'nutrition03',
// },
// ]
// },
// ]
// const post = [
// [
// {
// label:'',
// value:''
// },
// {
// title:'',
// value:''
// },
// {
// title:'',
// value:''
// }
// ],
// [
// {
// label:'',
// value:''
// },
// {
// title:'',
// value:''
// },
// {
// title:'',
// value:''
// }
// ],
// ]
// const post_header = [
// '商品名',
// 'エネルギー',
// '水',
// 'プロテイン'
// ]
const { useState,useEffect,useRef,useCallback} = React;
const eiyouHeaderExample = [
'header','エネルギー(kcal)','水分(g)','たんぱく質(g)','脂質(g)','炭水化物(g)','―糖質(g)','―食物繊維(g)','灰分(g)','ナトリウム(mg)','カリウム(mg)','カルシウム(mg)','マグネシウム(mg)','リン(mg)','鉄(mg)','亜鉛(mg)','銅(mg)','マンガン(mg)','ヨウ素(μg)','セレン(μg)','クロム(μg)','モリブデン(μg)','塩素(mg)','イオウ(g)','ビタミンA(μg)','ビタミンD(μg)','ビタミンE(mg)','ビタミンK(μg)','ビタミンB1(mg)','ビタミンB2(mg)','ナイアシン(mg)','ビタミンB6(mg)','ビタミンB12(μg)','葉酸(μg)','パントテン酸(mg)','ビオチン(μg)','ビタミンC(mg)','コリン(mg)','乳糖(g)','食塩相当量(g)'
];
const butsuseiHeaderExample = [
'硬さ(N/m²)','付着性(J/m³)','凝集性','測定温度','付着性(J/m³)'
];
const meisyouHeaderExample = [
'賞味期限','GTINコード','荷姿','内容量','単品寸法','単品重量','ケース寸法','ケース重量','原材料名','アレルギー28品目','賞味期間','原材料','単品サイズ','ケースサイズ','アレルギー27品目'
];
/**
*
* @param {object} obj オブジェクトの中にプロパティの値が配列かどうか
* @returns {boolean}
*/
const isEmptyObj = (obj)=> {
for(const array of Object.values(obj)){
if(array.length !== 0){
return false;
}
}
// console.log(obj);
return true;
}
/**
* 配列を参考に配列をソート
* @param {*} array
* @param {*} exampleArray
* @returns {Array}
*/
const sortArray = (array,exampleArray) => {
let correctArray = [];
let incorrectArray = [];
array.map((item)=>{
if(exampleArray.includes(item)){
correctArray = [...correctArray,item];
}else{
incorrectArray = [...incorrectArray,item];
}
});
correctArray.sort((x,y)=>{
if(exampleArray.indexOf(x)){}
return exampleArray.indexOf(x) - exampleArray.indexOf(y);
});
return [...correctArray,...incorrectArray];
}
const App = () => {
const [postHeader,setPostHeader] = useState([]);//栄養素ヘッダー、物性ヘッダー、名称ヘッダーを束ねたもの。
const [post,setPost] = useState([]);
const [freeWord,setFreeWord] = useState('');
const [postType,setPostType] = useState('care');
const [taxnomy,setTaxnomy] = useState([]);
const [selectedTaxnomy,setSelectedTaxnomy] = useState([]);
const [loading,setLoading] = useState(false);
const tableEl = useRef(null);
const query = {
free_word:freeWord,
post_type:postType,
selected_taxnomy:selectedTaxnomy,
}
const resetTerm = () => {
setSelectedTaxnomy([]);
}
useEffect(()=>{
setLoading(true);
axios.post(`${window.location.origin}/0foricasm/wp-content/themes/forica05/check/check.php`,query,{
headers:{
'Access-Control-Allow-Origin': '*',
'content-type': 'Access-Control-Allow-Headers'
}
}).then((response)=>{
console.log(response.data);
//項目名の並び順を変更
// console.log(response.data.post_header);
const eiyou_header = response.data.eiyou_header;
const butsusei_header = response.data.butsusei_header;
const meisyou_header = response.data.meisyou_header;
const newHeader = ['header',...response.data.eiyou_header,'物性値',...response.data.butsusei_header,'その他製品情報',...response.data.meisyou_header,]
// const newHeaderArray = sortArray(response.data.post_header,postHeaderExample);
// console.log(response.data.post_header);
setPostHeader(newHeader);
setPost(response.data.post);
setTaxnomy(response.data.taxnomy);
//ローディング終了
setLoading(false);
}).catch((error)=>{
console.log('error');
const { status, statusText } = error.response;
setLoading(false);
console.log(`Error! HTTP Status: ${status} ${statusText}`);
});
},[freeWord,postType,selectedTaxnomy]);
return (
栄養成分表示 | ) }else if(postHeaderItem === '物性値'){ return (物性値 | ) }else if(postHeaderItem === 'その他製品情報'){ return (その他製品情報 | ) }else{ return ({postHeaderItem} | ) } })() } { post.map((postItem,index)=>{ let roop = 0; let hit = 0; return( postItem.map((obj)=>{ // console.log(`${obj['label']}:${postHeaderItem}`); roop++; if(obj['label'] === postHeaderItem){ hit++; if(obj['label'] === 'header'){ return() }else{ return ( | {obj['value']} | ) } }else if(postItem.length === roop && hit === 0){ if(postHeaderItem === '物性値' || postHeaderItem === 'その他製品情報'){ return () }else{ return | } } }) ); }) } |
---|