//******************************* // casesearch //******************************* //URL末尾が#の場合、ロケーション再設定 (function(){ var locat = location.href; if(locat.slice(-1) == "#") { location.href = locat.slice(0,-1); } }()); (function($) { // コンフリクト対策 // OIC不具合対応:実行済みかどうかを判断する。 $(function(){ if($('body.casesearch').length) { } else { // search file path var searchPath = '/downloads/JP/jbp/resources/businessprogram/company/searchdata.csv'; // casestudy data file path var casePath = '/downloads/JP/jbp/resources/businessprogram/company/casedata.csv'; // const var resetItem = '.c-lyt-casestudy-search-clearbtn'; // resetButton var resetItem_m = '.c-list-casestudy-categorys-navi-clearbtn'; // resetButton(mobile) //global var $searchItem = $(); //検索エリア var $outputItem = $(); //検索結果エリア var $resultItem = $(); //件数 var $resultItem2 = $(); //件数 var $moreItem = $(); //もっと表示ボタン var numItem = ''; //ターゲットの表示条件 var searchIdArray = []; //ターゲットの絞り込み条件 var targetName = ''; //ターゲットのネーム var targetClass = ''; //ターゲットのクラス var checkClickArray = []; //ターゲットのクリック対象 var searchAreaVisible = Boolean; /* 件数ゼロ文言 ----------------------------------------------------------------------*/ var txtZero = '
該当データがありません
'; /* エラー文言 ----------------------------------------------------------------------*/ var txtError = '該当データがありません
'; /* もっと表示 ----------------------------------------------------------------------*/ var moreView = 'もっと見る'; // handler //html cut $(function(){ //dummy Elementを削除する $('.dummy-li').remove(); }); $(loadAjax); function loadAjax() { getAllData(); } // メイン処理(初回) function getAllData() { // searchArea text $.ajax({ url: searchPath }) .then( // callback function (searchdata) { // dataArea text $.ajax({ url: casePath }) .then( // callback function (casedata) { $('.result-area').each(function() { var classArray = $(this).attr('class').split(' '); targetName = $.grep(classArray,function(element,index) { return element.match(/search-result-/); })[0]; targetClass = "." + targetName; $searchItem = $(targetClass).find('.c-list-casestudy-categorys'); $resultItem = $(targetClass).find('.c-lyt-casestudy-search-numbers-total-number'); $resultItem2 = $(targetClass).find('.c-list-casestudy-categorys-navi-numbers-total-number'); $outputItem = $(targetClass).find('.c-list-article-a'); $moreItem = $(targetClass).find('.btn-casestudy-more'); var _searchId = $('.result-area' + targetClass).find('[name="searchid"]').val(); if(_searchId) searchIdArray = _searchId.split(','); numItem = Number($('.result-area' + targetClass).find('[name="num"]').val()); searchAreaVisible = $('.result-area' + targetClass).find('[name="visible"]').val() == "true" ? true : false; searchSet(searchdata, casedata); caseSet(searchdata, casedata); $(checkClickArray).each(function(index, element) { $('#' + element).click(); }) if(!searchAreaVisible) $('.c-lyt-casestudy-search' + targetClass).hide(); //初期化 targetName = ''; targetClass = ''; $searchItem = $(); $resultItem = $(); $resultItem2 = $(); $outputItem = $(); $moreItem = $(); searchIdArray = []; numItem = ''; checkClickArray = []; }) }, // errorback function () { outputError(); } ); }, // errorback function () { outputError(); } ); } // メイン処理(絞り込み) function getAjaxData($this) { // searchArea text $.ajax({ url: searchPath }) .then( // callback function (searchdata) { // dataArea text $.ajax({ url: casePath }) .then( // callback function (casedata) { var classArray = $this.closest('.c-lyt-casestudy-search').attr('class').split(' '); targetName = $.grep(classArray,function(element,index) { return element.match(/search-result-/); })[0]; targetClass = "." + targetName; $searchItem = $(targetClass).find('.c-list-casestudy-categorys'); $resultItem = $(targetClass).find('.c-lyt-casestudy-search-numbers-total-number'); $resultItem2 = $(targetClass).find('.c-list-casestudy-categorys-navi-numbers-total-number'); $outputItem = $(targetClass).find('.c-list-article-a'); $moreItem = $(targetClass).find('.btn-casestudy-more'); numItem = Number($(targetClass).find('[name="num"]').val()); caseSet(searchdata, casedata) //初期化 targetName = ''; targetClass = ''; $searchItem = $(); $resultItem = $(); $resultItem2 = $(); $outputItem = $(); $moreItem = $(); numItem = ''; }, // errorback function () { outputError(); } ); }, // errorback function () { outputError(); } ); } // メイン処理(もっと見る) function getAjaxMoreData($this) { // searchArea text $.ajax({ url: searchPath }) .then( // callback function (searchdata) { // dataArea text $.ajax({ url: casePath }) .then( // callback function (casedata) { var classArray = $this.closest('.result-area').attr('class').split(' '); targetName = $.grep(classArray,function(element,index) { return element.match(/search-result-/); })[0]; targetClass = "." + targetName; $searchItem = $(targetClass).find('.c-list-casestudy-categorys'); $resultItem = $(targetClass).find('.c-lyt-casestudy-search-numbers-total-number'); $resultItem2 = $(targetClass).find('.c-list-casestudy-categorys-navi-numbers-total-number'); $outputItem = $this.parent().parent().siblings('.c-list-article-a'); $moreItem = $this.parent('.btn-casestudy-more'); numItem = Number($this.closest('.result-area').find('[name="num"]').val()); caseMoreSet(searchdata, casedata); //初期化 targetName = ''; targetClass = ''; $searchItem = $(); $resultItem = $(); $resultItem2 = $(); $outputItem = $(); $moreItem = $(); numItem = ''; }, // errorback function () { outputError(); } ); }, // errorback function () { outputError(); } ); } /* getAjaxData / error時処理 ----------------------------------------------------------------------*/ function outputError() { // $('.c-list-casestudy-items').hide().html(txtError); $('.c-list-article-a').hide().html(txtError); $('.total-number').html('0'); // $('.c-list-casestudy-items').fadeIn(300); $('.c-list-article-a').fadeIn(300); } /* getAjaxData / success時処理 ----------------------------------------------------------------------*/ //チェックボックスを生成 function searchSet(data, casedata) { var categoryList = makeArrOfCheckBox(data); var src = makeSrcOfCheckBox(categoryList, casedata); // $(searchItem).append(src); $searchItem.append(src); } //検索結果を生成 function caseSet(catedata, casedata) { var cate = makeArrCategory(catedata); var arr = makeArr(casedata); var src = makeSrc(arr, cate, 'new'); $outputItem.hide().html(src); // 検索結果件数表示 $resultItem.html(arr.length); $resultItem2.html(arr.length); $outputItem.fadeIn(300); } //検索結果を生成(追加) function caseMoreSet(catedata, casedata) { var cate = makeArrCategory(catedata); var arr = makeArr(casedata); var src = makeSrc(arr, cate, 'add'); $(src).appendTo($outputItem).hide().fadeIn(300); $outputItem.find('li').removeAttr('style'); } //////////////////////////////////////////////////////////////////////////////// // 配列生成 //////////////////////////////////////////////////////////////////////////////// var makeArrOfCheckBox = function (data) { var obj = data.split('\n'); var header = true; var categoryList = []; $(obj).each(function () { //ヘッダー(先頭行)は処理しない if (header) { header = false; return true; //continueと同義 } var objElm = this.split('\t'); if (objElm.length >= 3) { //列数 if (isHadCategory(categoryList, objElm[0])) { //カテゴリに要素を追加 for (var i in categoryList) { var category = categoryList[i]; if (category.CATEGORY == objElm[0]) { category.LIST.push({ ID: objElm[1], NAME: objElm[2] }); } } } else { //カテゴリを追加 categoryList.push({ CATEGORY: objElm[0], LIST: [{ ID: objElm[1], NAME: objElm[2] }] }); } } }); return categoryList; //既にカテゴリーが設定済みか否かを判定 function isHadCategory(categoryList, str) { for (var i in categoryList) { var category = categoryList[i]; if (category.CATEGORY == str) return true; //設定済み } return false; //未設定 } } var makeArrCategory = function (data) { var obj = data.split('\n'); var header = true; var categoryList = []; $(obj).each(function () { //ヘッダー(先頭行)は処理しない if (header) { header = false; return true; //continueと同義 } var objElm = this.split('\t'); if (objElm.length >= 3) { //列数 categoryList.push({ ID: objElm[1], NAME: objElm[2] }); } }); return categoryList; } var makeArr = function (data) { //チェック状態のオブジェクトを生成 //{ ID先頭1文字: チェックされたIDの配列 , // ... //} var chk = $searchItem.find('input:checkbox'); var objCheckedId = {}; $(chk).each(function () { if (this.checked == true) { if (objCheckedId.hasOwnProperty(this.dataset.id.slice(0, 1))) { objCheckedId[this.dataset.id.slice(0, 1)].push(this.dataset.id); } else { objCheckedId[this.dataset.id.slice(0, 1)] = []; objCheckedId[this.dataset.id.slice(0, 1)].push(this.dataset.id); } } }); var header = true; var obj = data.split('\n'); var searchList = []; $(obj).each(function () { //ヘッダー(先頭行)は処理しない if (header) { header = false; return true; //continueと同義 } //表示対象を取得 var objElm = this.split('\t'); if (objElm.length >= 5) { //列数 var idList = trimArray(objElm[4].split(',')); //末尾IDの空文字を除去 if (idList.length > 0) { if (isDisp(idList, objCheckedId)) { //チェックボックスIDとcasedata1行のIDを比較 var cateList = []; for (var x = 0; x < idList.length; x++) { cateList.push(idList[x]); } searchList.push({ DATE: objElm[0], TITLE: objElm[1], IMAGE_PATH: objElm[2], DETAILPAGE_PATH: objElm[3], ID: objElm[4], CATEGORYS: cateList }); } } } }); return searchList; //表示対象のデータが否かを判定する //casedata1行のID配列, チェックIDオブジェクト function isDisp(idList, objCheckedId) { //大項目同士はAND条件、小項目同士はOR条件 //例) (製造ON OR 流通ON) AND (ビッグデータON) AND (~500人 OR 500人~1,000人) var result = true; for (var key in objCheckedId) { //条件(チェック)が一つでも指定された場合のみ検索 result = false var checkedIdList = objCheckedId[key]; for (var i in checkedIdList) { if (idList.indexOf(checkedIdList[i]) != -1) { //チェックされたIDのいずれかが一致する場合、OR条件 = true //※条件を満たす小項目が一つでも存在する場合は表示判定 result = true; break; } } if (!result) { //チェックされたIDのいずれも一致しない場合、AND条件 = false //※条件を一切満たさない大項目が一つでも存在する場合は非表示 break; } } return result; } } //////////////////////////////////////////////////////////////////////////////// // ソース生成 //////////////////////////////////////////////////////////////////////////////// var makeSrcOfCheckBox = function (categoryList, casedata) { var src = ''; src += '