index-list-mb.js 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803
  1. let userAgent;
  2. let isSafari = false;
  3. let browserName;
  4. // pagination variables
  5. let num_per_page = 10;
  6. let n = 0;
  7. let n_video = 0;
  8. let n_columns = 0;
  9. let totalPages = {
  10. intro: 0,
  11. video: 0,
  12. columns: 0,
  13. vr360: 0,
  14. company: 0,
  15. };
  16. let filter;
  17. const urlParams = new URLSearchParams(window.location.search);
  18. let getfilter = urlParams.get('q');
  19. let cid = urlParams.get('cid');
  20. console.log(getfilter, cid);
  21. $('.likeSee__views').click(function () {
  22. window.location.href = `./index_designerList_mb.html?q=views&cid=${cid}`
  23. $(this).css('color', '#EE7800');
  24. })
  25. $('.likeSee__sort').click(function () {
  26. window.location.href = `./index_designerList_mb.html?cid=${cid}`
  27. $(this).css('color', '#EE7800');
  28. })
  29. function getpathId() {
  30. let query = window.location.search.split('?').pop();
  31. return query.split('=')[1];
  32. }
  33. function getQuery() {
  34. let query = getfilter;
  35. console.log(query);
  36. if (query == 'views') {
  37. filter = 'views';
  38. $('.likeSee__views').css('color', '#EE7800');
  39. } else {
  40. filter = 'dateSort';
  41. $('.likeSee__sort').css('color', '#EE7800');
  42. }
  43. }
  44. window.onload = function () {
  45. //window.scrollBy(0, 1);
  46. if (screen.width >= 901) {
  47. window.location.href = `../index_designerList.html?cid=${cid}`;
  48. }
  49. userAgent = navigator.userAgent;
  50. detectBrowser(userAgent);
  51. detectDirection();
  52. let result;
  53. let designer;
  54. let id = 0;
  55. $.ajax({
  56. method: "GET",
  57. // url: `./json/designers-${cid}.json`,
  58. url: `https://m3.hhh.com.tw:18686/gendesigner?id=${cid}&sort=new&page=1`,
  59. dataType: "json",
  60. }).done(function (msg) {
  61. getQuery();
  62. designer = [...msg][id];
  63. console.log(designer['Content']);
  64. if (filter == 'views') {
  65. designer['Content'][0]['Carddata'].sort(function (a, b) {
  66. return a[filter] > b[filter] ? -1 : 1;
  67. })
  68. } else {
  69. designer['Content'][0]['Carddata'].sort(function (a, b) {
  70. return a[filter] > b[filter] ? 1 : -1;
  71. })
  72. }
  73. renderinfoCard(designer);
  74. renderTab(designer['Content']);
  75. renderTabContent(designer['Content'], designer);
  76. renderModalTitle(designer['CompanyName']);
  77. console.log(filter);
  78. console.log(designer['Content'][0]['Carddata']);
  79. $(window).scroll(function () {
  80. let bottom = $("body").height() - $(window).height() - 1;
  81. if ($(window).scrollTop() >= bottom) {
  82. loadMoretest();
  83. }
  84. })
  85. // let bottom = $("body").height() - $(window).height() - 1;
  86. // if ($(window).scrollTop() >= bottom) {
  87. // loadMoretest();
  88. // }
  89. });
  90. }
  91. // var page = 1;
  92. // function loadMoretest() {
  93. // setTimeout(function () {
  94. // scroll_bottom_load_data(page);
  95. // page++;
  96. // return page
  97. // }, 500);
  98. // }
  99. function scroll_bottom_load_data(page) {
  100. $.ajax({
  101. method: "GET",
  102. url: `https://m3.hhh.com.tw:18686/gendesigner?id=${cid}&sort=new&page=${page}`,
  103. }).done(function (msg) {
  104. result = [...msg];
  105. let append = '';
  106. let d = result[0].Content[0].Carddata;
  107. // let cardcontent=[]
  108. let nowTab = document.querySelector('.infoContent .tab-pane.show');
  109. if (nowTab === document.querySelector('#pills-intro')) {
  110. for (let j = 0; j < d.length; j++) {
  111. let tagStr = ''
  112. for (let k = 0; k < d[j]['tag'].length; k++) {
  113. tagStr += `<a href="${d[j]['tag'][k]['link']}" class="card__tag" target="_blank">${d[j]['tag'][k]['name']}</a>`
  114. }
  115. append += `<div class="col-6 col-md-4">
  116. <a href="${d[j]['url']}" target="_blank">
  117. <div class="card">
  118. <div style="overflow: hidden;">
  119. <div class="card__bgImg" style="background-image: url(${d[j]['imgURL']});">
  120. </div>
  121. </div>
  122. <div class="card-body">
  123. <h5 class="card-title card__title mt-0">${d[j]['title']}</h5>
  124. <p class="card-text mb-0">
  125. ${tagStr}
  126. </p>
  127. </div>
  128. </div>
  129. </a>
  130. </div>`
  131. // var cardcontent2=cardcontent.push.d;
  132. }
  133. if (d.length === 0) {
  134. $('#loading_img').css("display", "none")
  135. }
  136. // console.log(cardcontent2);
  137. $('#pills-intro .work__row').append(append);
  138. }else if (nowTab === document.querySelector('#pills-video')) {
  139. let append = '';
  140. let d = result[0].Content[0].Carddata;
  141. for(let j = 0;j < d.length; j ++) {
  142. let tagStr = ''
  143. for(let k = 0;k < d[j]['tag'].length; k ++) {
  144. tagStr += `<a href="${d[j]['tag'][k]['link']}" class="card__tag" target="_blank">${d[j]['tag'][k]['name']}</a>`
  145. }
  146. append += `<div class="col-6 col-md-4">
  147. <a href="${d[j]['url']}" target="_blank">
  148. <div class="card">
  149. <div style="overflow: hidden;">
  150. <div class="card__bgImg" style="background-image: url(${d[j]['imgURL']});">
  151. <img src="https://hhh.com.tw/assets/images/rv_web/play.svg" alt="" width="50" height="50">
  152. </div>
  153. </div>
  154. <div class="card-body">
  155. <h5 class="card-title card__title mt-0">${d[j]['title']}</h5>
  156. <p class="card-text mb-0">
  157. ${tagStr}
  158. </p>
  159. </div>
  160. </div>
  161. </a>
  162. </div>`
  163. }
  164. if (d.length === 0) {
  165. $('#loading_img').css("display", "none")
  166. }
  167. $('#pills-video .work__row').append(append);
  168. }else if (nowTab === document.querySelector('#pills-columns')) {
  169. let append = '';
  170. let d = result[0].Content[0].Carddata;
  171. for(let j = 0;j < d.length; j ++) {
  172. let tagStr = ''
  173. for(let k = 0;k < d[j]['tag'].length; k ++) {
  174. tagStr += `<a href="${d[j]['tag'][k]['link']}" class="card__tag" target="_blank">${d[j]['tag'][k]['name']}</a>`
  175. }
  176. append += `<div class="col-6 col-md-4">
  177. <a href="${d[j]['url']}" target="_blank">
  178. <div class="card">
  179. <div style="overflow: hidden;">
  180. <div class="card__bgImg" style="background-image: url(${d[j]['imgURL']});">
  181. </div>
  182. </div>
  183. <div class="card-body">
  184. <h5 class="card-title card__title mt-0">${d[j]['title']}</h5>
  185. <p class="card-text mb-0">
  186. ${tagStr}
  187. </p>
  188. </div>
  189. </div>
  190. </a>
  191. </div>`
  192. }
  193. $('#pills-columns .work__row').append(append);
  194. }
  195. });
  196. }
  197. var page = 1;
  198. function loadMoretest() {
  199. setTimeout(function () {
  200. // let pageNum = 2;
  201. // if(page<=pageNum){
  202. // pageNum++;
  203. // page++;
  204. // }else{
  205. // }
  206. scroll_bottom_load_data(page);
  207. page++;
  208. return page
  209. }, 500);
  210. }
  211. let over = document.querySelector('.infoContent__navBlock').offsetTop;
  212. function detectBrowser(agent) {
  213. if (userAgent.match(/chrome|chromium|crios/i)) {
  214. browserName = "chrome";
  215. } else if (userAgent.match(/firefox|fxios/i)) {
  216. browserName = "firefox";
  217. } else if (userAgent.match(/safari/i)) {
  218. browserName = "safari";
  219. } else if (userAgent.match(/opr\//i)) {
  220. browserName = "opera";
  221. } else if (userAgent.match(/edg/i)) {
  222. browserName = "edge";
  223. } else {
  224. browserName = "No browser detection";
  225. }
  226. if (browserName === 'safari') {
  227. isSafari = true;
  228. }
  229. console.log(isSafari);
  230. }
  231. function detectDirection() {
  232. let height = (window.screen.width * 2) / 3;
  233. $('.sec-02 .slide-item').css('height', `${height}px`);
  234. let topHeight = (window.screen.width * 30) / 131;
  235. $('.sec-00 .slide-item').css('height', `${topHeight}px`);
  236. $('.sec-00 .container-fluid').css('height', `${topHeight}px`);
  237. }
  238. function renderinfoCard(designer) {
  239. $('.mb__hero__bgImg').attr('backgroundImage', `url(${designer['BannerImg']})`);
  240. $('.mb__infoCard__avatar').css('backgroundImage', `url(${designer['Designerimg']})`)
  241. $('.mb__infoCard__name').text(designer['DesignerName']);
  242. $('.mb__infoCard__seo').text(designer['Description']);
  243. $('.mb__infoCard__cmy').text(designer['CompanyName']);
  244. if (designer['Approve'] !== '') {
  245. $('.mb__infoCard__approve').html(designer['Approve']);
  246. }
  247. // Basics
  248. let str = '';
  249. for (let i = 0; i < designer['Basics'].length; i++) {
  250. str += `<aside class="d-flex">
  251. <div class="mb__infoCard__detail__l">
  252. <div>${designer['Basics'][i].title}</div>
  253. </div>
  254. <div class="mb__infoCard__detail__r">
  255. <a href="${designer['Basics'][i].link}">${designer['Basics'][i].data}</a>
  256. </div>
  257. </aside>`
  258. }
  259. $('.mb__infoCard__basics').html(str);
  260. // Branches
  261. let otherStr = '';
  262. for (let i = 0; i < designer['Branches'].length; i++) {
  263. otherStr += `<aside class="d-flex">
  264. <div class="mb__infoCard__detail__l">
  265. <div>${designer['Branches'][i].title}</div>
  266. </div>
  267. <div class="mb__infoCard__detail__r">
  268. <a href="${designer['Branches'][i].link}" >${designer['Branches'][i].data}</a>
  269. </div>
  270. </aside>`
  271. }
  272. $('.mb__infoCard__branches').html(otherStr);
  273. // scMedia
  274. let mediaStr = '';
  275. for (let i = 0; i < designer['scMedia'].length; i++) {
  276. if (i === 4) {
  277. mediaStr += `<span>
  278. <img src="${designer['scMedia'][i].img}" class="dislike" alt="">
  279. <img src="https://hhh.com.tw/assets/images/rv_web/like.svg" class="like" alt="">
  280. </span>`;
  281. } else if (i === 3) {
  282. mediaStr += `<span class="send" data-bs-toggle="modal" data-bs-target="#emailModal">
  283. <img src="${designer['scMedia'][i].img}" alt="">
  284. </span>`;
  285. } else {
  286. mediaStr += `<a href="${designer['scMedia'][i].link}">
  287. <img src="${designer['scMedia'][i].img}" alt="">
  288. </a>`;
  289. }
  290. }
  291. $('.scMedia').html(mediaStr);
  292. // document.querySelector('.dislike').addEventListener('click', function() {
  293. // $('.dislike').css('display', 'none');
  294. // $('.like').css('display', 'block');
  295. // })
  296. // document.querySelector('.like').addEventListener('click', function() {
  297. // $('.dislike').css('display', 'block');
  298. // $('.like').css('display', 'none');
  299. // })
  300. // term condition
  301. let termStr = '';
  302. for (let i = 0; i < designer['Terms'].length; i++) {
  303. termStr += `<aside class="d-flex">
  304. <div class="mb__infoCard__detail__l">
  305. <div>${designer['Terms'][i].title}</div>
  306. </div>
  307. <div class="mb__infoCard__detail__r">
  308. <div>${designer['Terms'][i].data}</div>
  309. </div>
  310. </aside>`
  311. }
  312. $('.mb__infoCard__terms').html(termStr);
  313. }
  314. function renderTab(content) {
  315. let tabTitleStr = '';
  316. for (let i = 0; i < content.length; i++) {
  317. if (content[i]['Carddata'] == "" & content[i]['info'] == undefined) {
  318. tabTitleStr += ``
  319. } else {
  320. if (i == 0) {
  321. tabTitleStr += `<li class="nav-item p-0 active" role="presentation">
  322. <a class="nav-item-link nav-item-active bg-transparent active" id="pills-${content[i]['Tabtag']}-tab"
  323. data-bs-toggle="pill" data-bs-target="#pills-${content[i]['Tabtag']}" type="button" role="tab"
  324. aria-controls="pills-${content[i]['Tabtag']}" aria-selected="false" data-link="https://hhh.com.tw/videos/lists/">${content[i]['mb_title']}</a>
  325. </li>`
  326. } else if (content[i]['Display_mb']) {
  327. tabTitleStr += `<li class="nav-item p-0" role="presentation">
  328. <a class="nav-item-link nav-item-active bg-transparent" id="pills-${content[i]['Tabtag']}-tab"
  329. data-bs-toggle="pill" data-bs-target="#pills-${content[i]['Tabtag']}" type="button" role="tab"
  330. aria-controls="pills-${content[i]['Tabtag']}" aria-selected="false" data-link="https://hhh.com.tw/videos/lists/">${content[i]['mb_title']}</a>
  331. </li>`
  332. }
  333. }
  334. }
  335. $('#pills-tab').html(tabTitleStr);
  336. $('.pill-aside').html(tabTitleStr);
  337. }
  338. function renderTabContent(content, meta) {
  339. let tabStr = '';
  340. for (let i = 0; i < content.length; i++) {
  341. let cardData = ''
  342. if (content[i].info) {
  343. for (let j = 0; j < content[i].info.length; j++) {
  344. cardData += `<div class="company__block">
  345. <h4 class="company__title">${content[i].info[j].title}</h4>
  346. <div class="company__text">
  347. ${content[i].info[j].data}
  348. </div>
  349. </div>`
  350. }
  351. tabStr += `<div class="tab-pane fade " id="pills-${content[i]['Tabtag']}" role="tabpanel"
  352. aria-labelledby="pills-${content[i]['Tabtag']}-tab">
  353. <div class="row justfy-content-between">
  354. <div class="col-md-8">
  355. <article class="company__article">
  356. ${cardData}
  357. </article>
  358. </div>
  359. </div>
  360. </div>`
  361. } else {
  362. for (let j = 0; j < (content[i].Carddata.length < num_per_page ? content[i].Carddata.length : num_per_page); j++) {
  363. let tagStr = '';
  364. for (let k = 0; k < content[i].Carddata[j].tag.length; k++) {
  365. tagStr += `<a href="${content[i].Carddata[j].tag[k]['link']}" class="card__tag" target="_blank">${content[i].Carddata[j].tag[k]['name']}</a>`
  366. }
  367. // for(let j = 0;j < content[i].Carddata.length; j ++) {
  368. cardData += `<div class="col-6 col-md-4">
  369. <a href="${content[i].Carddata[j]['url']}" target="_blank">
  370. <div class="card">
  371. <div class="card__bgImg" style="background-image: url(${content[i].Carddata[j]['imgURL']});">
  372. </div>
  373. <div class="card-body">
  374. <h5 class="card-title card__title mt-0">${content[i].Carddata[j]['title']}</h5>
  375. <p class="card-text mb-0">
  376. ${tagStr}
  377. </p>
  378. </div>
  379. </div>
  380. </a>
  381. </div>`
  382. }
  383. if (content[i].Display_mb) {
  384. tabStr += `<div class="tab-pane fade " id="pills-${content[i]['Tabtag']}" role="tabpanel"
  385. aria-labelledby="pills-${content[i]['Tabtag']}-tab">
  386. <div class="row work__row">
  387. ${cardData}
  388. </div>
  389. </div>`
  390. let key = content[i]['Tabtag'];
  391. totalPages[key] = content[i].Carddata.length;
  392. }
  393. }
  394. }
  395. console.log(tabStr);
  396. //console.log(totalPages);
  397. $('#pills-tabContent').html(tabStr);
  398. $('#pills-tabContent').append('<div style="padding: 20px;"></div>');
  399. $("#pills-intro").append(` <div class="d-flex justify-content-center py-1 py-md-5">
  400. <div id="loading_img">
  401. <svg class="loading-move" xmlns="http://www.w3.org/2000/svg" width="40" height="41.965"
  402. viewBox="0 0 40 41.965">
  403. <defs>
  404. <style>
  405. .a {
  406. fill: #ee751b;
  407. }
  408. </style>
  409. </defs>
  410. <circle class="a" cx="4.89" cy="4.89" r="4.89" transform="translate(16.094)" />
  411. <ellipse class="a" cx="2.933" cy="2.933" rx="2.933" ry="2.933"
  412. transform="translate(18.05 36.099)" />
  413. <ellipse class="a" cx="4.401" cy="4.401" rx="4.401" ry="4.401" transform="translate(4.487 5.464)" />
  414. <circle class="a" cx="2.445" cy="2.445" r="2.445" transform="translate(30.626 31.609)" />
  415. <ellipse class="a" cx="3.911" cy="3.911" rx="3.911" ry="3.911" transform="translate(0 18.056)" />
  416. <circle class="a" cx="1.955" cy="1.955" r="1.955" transform="translate(36.091 20.01)" />
  417. <path class="a" d="M5.065,20.213a3.422,3.422,0,1,0,4.839,0A3.419,3.419,0,0,0,5.065,20.213Z"
  418. transform="translate(1.403 11.424)" />
  419. <ellipse class="a" cx="1.466" cy="1.466" rx="1.466" ry="1.466"
  420. transform="translate(31.603 8.434)" />
  421. </svg>
  422. </div>
  423. </div>`)
  424. $("#pills-video").append(` <div class="d-flex justify-content-center py-1 py-md-5">
  425. <div id="loading_img">
  426. <svg class="loading-move" xmlns="http://www.w3.org/2000/svg" width="40" height="41.965"
  427. viewBox="0 0 40 41.965">
  428. <defs>
  429. <style>
  430. .a {
  431. fill: #ee751b;
  432. }
  433. </style>
  434. </defs>
  435. <circle class="a" cx="4.89" cy="4.89" r="4.89" transform="translate(16.094)" />
  436. <ellipse class="a" cx="2.933" cy="2.933" rx="2.933" ry="2.933"
  437. transform="translate(18.05 36.099)" />
  438. <ellipse class="a" cx="4.401" cy="4.401" rx="4.401" ry="4.401" transform="translate(4.487 5.464)" />
  439. <circle class="a" cx="2.445" cy="2.445" r="2.445" transform="translate(30.626 31.609)" />
  440. <ellipse class="a" cx="3.911" cy="3.911" rx="3.911" ry="3.911" transform="translate(0 18.056)" />
  441. <circle class="a" cx="1.955" cy="1.955" r="1.955" transform="translate(36.091 20.01)" />
  442. <path class="a" d="M5.065,20.213a3.422,3.422,0,1,0,4.839,0A3.419,3.419,0,0,0,5.065,20.213Z"
  443. transform="translate(1.403 11.424)" />
  444. <ellipse class="a" cx="1.466" cy="1.466" rx="1.466" ry="1.466"
  445. transform="translate(31.603 8.434)" />
  446. </svg>
  447. </div>
  448. </div>`)
  449. $("#pills-columns").append(` <div class="d-flex justify-content-center py-1 py-md-5">
  450. <div id="loading_img">
  451. <svg class="loading-move" xmlns="http://www.w3.org/2000/svg" width="40" height="41.965"
  452. viewBox="0 0 40 41.965">
  453. <defs>
  454. <style>
  455. .a {
  456. fill: #ee751b;
  457. }
  458. </style>
  459. </defs>
  460. <circle class="a" cx="4.89" cy="4.89" r="4.89" transform="translate(16.094)" />
  461. <ellipse class="a" cx="2.933" cy="2.933" rx="2.933" ry="2.933"
  462. transform="translate(18.05 36.099)" />
  463. <ellipse class="a" cx="4.401" cy="4.401" rx="4.401" ry="4.401" transform="translate(4.487 5.464)" />
  464. <circle class="a" cx="2.445" cy="2.445" r="2.445" transform="translate(30.626 31.609)" />
  465. <ellipse class="a" cx="3.911" cy="3.911" rx="3.911" ry="3.911" transform="translate(0 18.056)" />
  466. <circle class="a" cx="1.955" cy="1.955" r="1.955" transform="translate(36.091 20.01)" />
  467. <path class="a" d="M5.065,20.213a3.422,3.422,0,1,0,4.839,0A3.419,3.419,0,0,0,5.065,20.213Z"
  468. transform="translate(1.403 11.424)" />
  469. <ellipse class="a" cx="1.466" cy="1.466" rx="1.466" ry="1.466"
  470. transform="translate(31.603 8.434)" />
  471. </svg>
  472. </div>
  473. </div>`)
  474. $('#pills-intro').addClass('active');
  475. $('#pills-intro').addClass('show');
  476. $('#pills-video .card__bgImg').append('<img src="https://hhh.com.tw/assets/images/rv_web/play.svg" alt="" width="50" height="50">')
  477. $('.infoContent .nav-item-link').click(checkTab);
  478. checkTab();
  479. $(`<div id="fb-container" style="width: 320px;" class="mx-auto">
  480. <div class="fb-page" data-href="${meta['FB_link']}" data-tabs="timeline" data-width="320" data-height="700" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true">
  481. <blockquote cite="${meta['FB_link']}" class="fb-xfbml-parse-ignore">
  482. <a href="${meta['FB_link']}">${meta['CompanyName']}</a>
  483. </blockquote>
  484. </div>
  485. </div>
  486. <script async defer crossorigin="anonymous" src="https://connect.facebook.net/zh_TW/sdk.js#xfbml=1&version=v9.0" nonce="7TsDzQN7"></script>
  487. `).insertAfter($('.company__article > .company__block:nth-of-type(1)'));
  488. }
  489. window.addEventListener('scroll', fixedOnScroll);
  490. const navBlock = document.querySelector('.infoContent__navBlock');
  491. function fixedOnScroll() {
  492. if (window.innerHeight < window.innerWidth) {
  493. } else {
  494. detectDirection();
  495. }
  496. if (window.pageYOffset >= over) {
  497. navBlock.classList.add('tab_sticky');
  498. } else if (window.pageYOffset < over) {
  499. navBlock.classList.remove('tab_sticky');
  500. }
  501. }
  502. $('.navbar-toggler').click(function () {
  503. $(".sec-menu").css('display', 'block');
  504. $(".wholeBody").css('overflow-y', 'hidden');
  505. $('.sec-menu-block').addClass('slidein');
  506. $('.sec-menu-block').removeClass('slideout');
  507. });
  508. $('.navbar-back').click(function () {
  509. $(".sec-menu").css('display', 'none');
  510. $(".wholeBody").css('overflow-y', 'scroll');
  511. $('.sec-menu-block').removeClass('slidein');
  512. $('.sec-menu-block').addClass('slideout');
  513. });
  514. $('.subexpand').click(function () {
  515. $(this).parent().next().toggleClass('show');
  516. $(this).parent().toggleClass('show');
  517. });
  518. $('.navbar-search').click(function () {
  519. $(".sec-search").css('display', 'block');
  520. $(".wholeBody").css('overflow-y', 'hidden');
  521. })
  522. $('.navbar-backs').click(function () {
  523. $(".sec-search").css('display', 'none');
  524. $(".wholeBody").css('overflow-y', 'scroll');
  525. });
  526. $('.navbar-back-fav').click(function () {
  527. $(".sec-favor").css('display', 'none');
  528. })
  529. $('.btn-gotop').click(function () {
  530. $('html, body').animate({
  531. scrollTop: 0
  532. }, 500)
  533. });
  534. $(window).scroll(function () {
  535. if ($(this).scrollTop() > 500) {
  536. $('.fixed-btn').fadeIn(222);
  537. $('.freeCall').fadeIn(222);
  538. } else {
  539. $('.fixed-btn').stop().fadeOut(222);
  540. $('.freeCall').stop().fadeOut(222);
  541. }
  542. }).scroll();
  543. const searchBtn = document.querySelector('.searchBtn');
  544. const searchBar = document.querySelector('.searchBar');
  545. const searchHotLink = document.querySelectorAll('.sec-search-hots__link');
  546. searchBtn.addEventListener('click', search);
  547. searchBar.addEventListener('keyup', pressSearch);
  548. function search() {
  549. if (searchBar.value == '') {
  550. window.location.href = 'https://m.hhh.com.tw/search/lists/case/';
  551. } else {
  552. window.location.href = `https://m.hhh.com.tw/search/lists/case/${searchBar.value}-keyword/`;
  553. }
  554. }
  555. function pressSearch(e) {
  556. if (e.keyCode === 13) {
  557. e.preventDefault();
  558. search();
  559. }
  560. }
  561. searchHotLink.forEach((item, i) => {
  562. item.addEventListener('click', function () {
  563. window.location.href = `https://m.hhh.com.tw/search/lists/case/${this.textContent}-keyword/`;
  564. })
  565. })
  566. document.addEventListener('lazybeforeunveil', function (e) {
  567. var bg = e.target.getAttribute('data-bg');
  568. if (bg) {
  569. e.target.style.backgroundImage = 'url(' + bg + ')';
  570. }
  571. });
  572. $('.mb__infoCard__more').click(function () {
  573. $(this).hide();
  574. $('.other').css('display', 'block');
  575. over = document.querySelector('.infoContent__navBlock').offsetTop;
  576. })
  577. checkTab()
  578. $('.infoContent .nav-item-link').click(checkTab);
  579. function checkTab() {
  580. if ($('#pills-intro-tab').hasClass('active')) {
  581. $('.likeSee').attr('hidden', false)
  582. } else {
  583. $('.likeSee').attr('hidden', true)
  584. }
  585. }
  586. function renderModalTitle(title) {
  587. $('#emailModal #title').val(title);
  588. }
  589. function loadMore(designer) {
  590. let nowTab = document.querySelector('.infoContent .tab-pane.show');
  591. if (nowTab === document.querySelector('#pills-intro')) {
  592. let last = document.querySelector('#pills-intro .work__row>div:last-child');
  593. let pageNum = Math.ceil(totalPages.intro / 10) - 1;
  594. if ($(window).scrollTop() + $(window).height() >= ($(document).height() - 100)) {
  595. console.log('over');
  596. if (n >= pageNum) {
  597. n = pageNum;
  598. return;
  599. } else {
  600. n++;
  601. let append = '';
  602. let d = designer['Content'][0].Carddata.slice(10 * n, (10 * n) + 10);
  603. for (let j = 0; j < d.length; j++) {
  604. append += `<div class="col-6 col-md-4">
  605. <a href="" target="_blank">
  606. <div class="card">
  607. <div style="overflow: hidden;">
  608. <div class="card__bgImg" style="background-image: url(${d[j]['imgURL']});">
  609. </div>
  610. </div>
  611. <div class="card-body">
  612. <h5 class="card-title card__title mt-0">${d[j]['title']}</h5>
  613. <p class="card-text mb-0">
  614. <a href="" class="card__tag" target="_blank">混搭風</a>
  615. <a href="" class="card__tag" target="_blank">混搭風</a>
  616. <a href="" class="card__tag" target="_blank">混搭風</a>
  617. </p>
  618. </div>
  619. </div>
  620. </a>
  621. </div>`
  622. }
  623. $('#pills-intro .work__row').append(append);
  624. }
  625. }
  626. } else if (nowTab === document.querySelector('#pills-video')) {
  627. let pageNum = Math.ceil(totalPages.video / 10) - 1;
  628. console.log(totalPages.video);
  629. let last = document.querySelector('#pills-video .work__row>div:last-child');
  630. if ($(window).scrollTop() + $(window).height() >= ($(document).height() - 100)) {
  631. if (n_video >= pageNum) {
  632. n_video = pageNum;
  633. console.log('n-video:', n_video);
  634. console.log('pageNum', pageNum);
  635. return;
  636. } else {
  637. console.log('pass-video');
  638. n_video++;
  639. console.log('test');
  640. let append = '';
  641. let d = designer['Content'][1].Carddata.slice(10 * n_video, (10 * n_video) + 10);
  642. for (let j = 0; j < d.length; j++) {
  643. append += `<div class="col-6 col-md-4">
  644. <a href="" target="_blank">
  645. <div class="card">
  646. <div style="overflow: hidden;">
  647. <div class="card__bgImg" style="background-image: url(${d[j]['imgURL']});">
  648. <img src="https://hhh.com.tw/assets/images/rv_web/play.svg" alt="" width="50" height="50">
  649. </div>
  650. </div>
  651. <div class="card-body">
  652. <h5 class="card-title card__title mt-0">${d[j]['title']}</h5>
  653. <p class="card-text mb-0">
  654. <a href="" class="card__tag" target="_blank">混搭風</a>
  655. <a href="" class="card__tag" target="_blank">混搭風</a>
  656. <a href="" class="card__tag" target="_blank">混搭風</a>
  657. </p>
  658. </div>
  659. </div>
  660. </a>
  661. </div>`
  662. }
  663. $('#pills-video .work__row').append(append);
  664. }
  665. }
  666. } else if (nowTab === document.querySelector('#pills-columns')) {
  667. let last = document.querySelector('#pills-columns .work__row>div:last-child');
  668. let pageNum = Math.ceil(totalPages.columns / 10) - 1;
  669. if ($(window).scrollTop() + $(window).height() >= ($(document).height() - 100)) {
  670. if (n_columns >= pageNum) {
  671. n_columns = pageNum;
  672. return;
  673. } else {
  674. n_columns++;
  675. console.log('test');
  676. let append = '';
  677. let d = designer['Content'][2].Carddata.slice(10 * n_columns, (10 * n_columns) + 10);
  678. for (let j = 0; j < d.length; j++) {
  679. append += `<div class="col-6 col-md-4">
  680. <a href="" target="_blank">
  681. <div class="card">
  682. <div style="overflow: hidden;">
  683. <div class="card__bgImg" style="background-image: url(${d[j]['imgURL']});">
  684. </div>
  685. </div>
  686. <div class="card-body">
  687. <h5 class="card-title card__title mt-0">${d[j]['title']}</h5>
  688. <p class="card-text mb-0">
  689. <a href="" class="card__tag" target="_blank">混搭風</a>
  690. <a href="" class="card__tag" target="_blank">混搭風</a>
  691. <a href="" class="card__tag" target="_blank">混搭風</a>
  692. </p>
  693. </div>
  694. </div>
  695. </a>
  696. </div>`
  697. }
  698. $('#pills-columns .work__row').append(append);
  699. }
  700. }
  701. }
  702. }
  703. function putEmail() {
  704. const emailPattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  705. if ($('#email').val() !== null && emailPattern.test($('#email').val())) {
  706. $('#error').hide();
  707. $('#putEmail_hidden').css('display', 'block');
  708. $('#add_email').text($('#email').val());
  709. $('#email').val('');
  710. } else {
  711. $('#error').show();
  712. $('#error').text('email 格式有誤');
  713. }
  714. }
  715. // $(function(){
  716. // var len = 10;
  717. // $(".JQellipsis").each(function(i){
  718. // if($(this).text().length>len){
  719. // $(this).attr("title",$(this).text());
  720. // var text=$(this).text().substring(0,len-1)+"...";
  721. // $(this).text(text);
  722. // }
  723. // });
  724. // });