Over half of Fortune 500 businesses trust Synology with their digital assets
Manufacturing
Toyota Motor Vietnam
Ensures Business Continuity with Synology Backup Solutions
Non-Profit
UNESCO
Centralizes Backup and Virtualization Across 70 Countries with Synology
Transportation
SK Shipping
Achieves 10x Faster Disaster Recovery with Synology Storage Solutions
Explore Customer Stories
Solution
Backup & Disaster Recovery
Business Productivity
Cloud
Infrastructure Security
On-Prem
Storage & File Management
Video Surveillance
Industry
Education
Government
Healthcare
Hospitality
Information Technology
Manufacturing
Media Entertainment
Non-Profit
Other
Retail
Transportation
Clear
More Stories
No results. You may select fewer filters to broaden your search.
Get Started
Product Inquiries
Ask our experts for demos, product recommendations, and deployment advice.
Learn more
Get a free plan
Do you have a procurement plan? We can customize our services to align with your objectives.
Learn more
Find a suitable NAS
Use NAS Selector to find your ideal NAS and purchase it from a Synology partner.
Learn more
${item.industry_label}
${item.description}
` ); }) } // reset printCaseItmes const resetPrintCaseItems = () => { caseSearchIdx = 0; exploreCase.innerHTML = ""; } // show case const showCase = (clickFromMore) => { // no any caseItemsData if(caseItemsDataLen <= 0) { hideMoreBtn(); return; } // no more case items if(caseSearchIdx >= caseItemsDataLen) return; // show more case const showCaseItems = []; let showCaseItemsNum = 0; let hasNextPage = false; // add showCaseItems const addShowCaseItems = () => { showCaseItemsNum < 9 ? showCaseItems.push(caseItemsData[caseSearchIdx]): hasNextPage = true; showCaseItemsNum++; } // filter case items for (let i = caseSearchIdx; i < caseItemsDataLen ; i++) { let isShowCase = true; // solution if(filter.solution.key.length !== 0 && !filter.solution.key.some((value) => caseItemsData[caseSearchIdx].solutions.includes(value))) isShowCase = false; // industry -- 要把 caseItemsData[caseSearchIdx].industry 轉陣列 if(filter.industry.key.length !== 0 && !filter.industry.key.some((value) => [caseItemsData[caseSearchIdx].industry].includes(value))) isShowCase = false; // meet the criteria -> addShowCaseItems if(isShowCase) addShowCaseItems(); // satisfy 9 case items and find next page if(showCaseItemsNum === 10) break; // record what is case items index now caseSearchIdx++; } // console.log(showCaseItems); // hide more btn if(caseSearchIdx >= caseItemsDataLen || !hasNextPage) { // console.log("All searches are complete."); hideMoreBtn(); } else { // show more btn if(!isShowMoreBtn) showMoreBtn(); } // 一起 print html -> CLS 才不會動來動去 printCaseItems(showCaseItems); // focus on the first new case item if(clickFromMore === true) { document.getElementById(`case-${showCaseItems[0].key.toLowerCase().replace(/_/g, '-')}`).focus(); } } // handle filterAllTitle data.filters.solutions.forEach(item => filterAllTitle.solution.push(item.name)); data.filters.industries.forEach(item => filterAllTitle.industry.push(item.name)); // console.log(filterAllTitle); // filter-soltion select click event filterSolutionSelect.addEventListener("click", () => { filterSolutionGroup.forEach(item => item.classList.toggle("active")); filterSolutionIsActive = !filterSolutionIsActive; }); // filter-industry select click event filterIndustrySelect.addEventListener("click", () => { filterIndustryGroup.forEach(item => item.classList.toggle("active")); filterIndustryIsActive = !filterIndustryIsActive; }); // filter select remove active situation document.addEventListener("click", () => { if(filterSolutionIsActive && !event.target.closest(".csi-explore__filter-container--solution")) { filterSolutionGroup.forEach(item => item.classList.remove("active")); filterSolutionIsActive = false; return; } if(filterIndustryIsActive && !event.target.closest(".csi-explore__filter-container--industry")) { filterIndustryGroup.forEach(item => item.classList.remove("active")); filterIndustryIsActive = false; return; } }); // filter checkbox click event filterCheckboxes.forEach(item => { item.addEventListener("change", (e) => { let type = e.target.dataset.type; // checked if(e.target.checked) { // console.log("checked"); filter[type].key.push(item.value); filter[type].name.push(item.dataset.name); item.classList.add("active"); } else { // unchecked // console.log("unchecked"); let typeIndex = filter[type].key.indexOf(item.value); filter[type].key.splice(typeIndex, 1); filter[type].name.splice(typeIndex, 1); item.classList.remove("active"); } // console.log(filter); // renew filter title / url if(filter[type].key.length === 0) { if(type === "solution") filterSolutionTitle.innerText = filterSolutionInitTitle; if(type === "industry") filterIndustryTitle.innerText = filterIndustryInitTitle; deleteUrlParameter(type); } else { let filterTitle = filterAllTitle[type].filter(item => filter[type].name.includes(item)).join(", "); // console.log(filterTitle) if(type === "solution") filterSolutionTitle.innerText = filterTitle; if(type === "industry") filterIndustryTitle.innerText = filterTitle; setUrlParameter(type, filter[type].key); } // reset printCaseItmes resetPrintCaseItems(); // run showCase showCase(false); }); }); // filter clear -> 讓 filter 歸 0 filterClearBtn.addEventListener("click", ()=>{ if(filter.solution.key.length === 0 && filter.industry.key.length === 0) return; // reset filter const filterCheckedboxes = document.querySelectorAll(".csi-explore__filter-checkbox:checked"); filterCheckedboxes.forEach(item => { item.checked = false; item.classList.remove("active"); }); filter.solution.key = []; filter.solution.name = []; filter.industry.key = []; filter.industry.name = []; filterSolutionTitle.innerText = filterSolutionInitTitle; filterIndustryTitle.innerText = filterIndustryInitTitle; // reset url removeUrlParameter(); // reset printCaseItmes resetPrintCaseItems(); // run showCase showCase(false); }) // show more click cevent exploreMore.addEventListener("click", ()=>{ showCase(true); }); // get url params to show case if(getUrlParameter("solution") === null && getUrlParameter("industry") === null) { showCase(false); } else { const solutionKeys = getUrlParameter("solution"); const industryKeys = getUrlParameter("industry"); const keysArr = [solutionKeys, industryKeys]; keysArr.forEach(keys => { if(keys) { keys = keys.split(","); keys.forEach(key => document.querySelector(`[value="${key}"]`).click()); } }) } })();
Continue