1const jefnowComponent = { 2 props: ["jefnowflag", "overlayflag", "jefnowclose"], 3 template: `<article class="l-jefnow" :class="{'-active': jefnowflag}"> 4 <div class="l-jefnow__inner"> 5 <div class="l-jefnow__head"> 6 <h3 class="l-jefnow__ttl">JEF NOW</h3> 7 <button class="l-jefnow__close" @click="$emit('jefnowclose')"></button> 8 <div class="l-jefnow__tab"> 9 <div class="l-jefnow__tab__list"> 10 <button @click="categorySelect('news')" class="l-jefnow__tab__btn" :class="{'-active': selectCategoryList.includes('news')}"> 11 <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" style="enable-background:new 0 0 26 26" xml:space="preserve"><path fill="#666" d="M22.2 24.5H3.8c-1.6 0-2.8-1.3-2.8-2.9V2.4c0-.5.4-.9.9-.9h18.3c.5 0 .9.4.9.9v9h4v10.2c-.1 1.6-1.4 2.9-2.9 2.9zM19.3 3.3H2.7v18.3c0 .6.5 1.1 1.1 1.1h15.5V3.3zm4 9.9h-2.2v8.4c0 .6.5 1.1 1.1 1.1s1.1-.5 1.1-1.1v-8.4zm-7.2-4.6H5.9V6.8h10.2v1.8zm0 4.3H5.9v-1.8h10.2v1.8zm-2.5 4.3H5.9v-1.8h7.6v1.8z"/></svg> 12 <span>NEWS</span> 13 </button> 14 <!-- 15 <button @click="categorySelect('twitter')" class="l-jefnow__tab__btn" :class="{'-active': selectCategoryList.includes('twitter')}"> 16 <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" style="enable-background:new 0 0 26 26" xml:space="preserve"><path fill="#666" d="M26 4.6c-1 .4-2 .7-3.1.9 1.1-.7 1.9-1.8 2.3-3.1-1 .6-2.2 1.1-3.4 1.3-.9-1-2.3-1.7-3.8-1.7-2.9 0-5.3 2.5-5.3 5.6 0 .4 0 .9.1 1.3-4.4-.3-8.4-2.5-11-5.9-.4.8-.7 1.8-.7 2.8 0 1.9.9 3.6 2.4 4.6-.9 0-1.7-.3-2.4-.7v.1c0 2.7 1.8 4.9 4.3 5.4-.4.1-.9.2-1.4.2-.3 0-.7 0-1-.1.7 2.2 2.6 3.8 5 3.8-1.8 1.5-4.1 2.4-6.6 2.4-.4 0-.9 0-1.3-.1C2.4 23.1 5.2 24 8.2 24c9.8 0 15.2-8.5 15.2-15.8v-.7c1-.8 1.9-1.8 2.6-2.9"/></svg> 17 <span>Twitter</span> 18 </button> 19 --> 20 <button @click="categorySelect('instagram')" class="l-jefnow__tab__btn" :class="{'-active': selectCategoryList.includes('instagram')}"> 21 <svg xmlns="http://www.w3.org/2000/svg" width="26.012" height="25.987" viewBox="0 0 26.012 25.987" xml:space="preserve"><path fill="#666" d="M13.006 3.155c3.204 0 3.583.012 4.849.07 1.17.054 1.806.249 2.228.414.56.218.96.478 1.38.897.42.42.68.82.897 1.38.164.423.36 1.058.414 2.228.058 1.266.07 1.645.07 4.849s-.012 3.584-.069 4.849c-.054 1.17-.249 1.806-.414 2.228-.218.56-.478.96-.897 1.38-.42.42-.82.68-1.38.897-.423.164-1.058.36-2.228.414-1.266.058-1.645.07-4.849.07s-3.584-.012-4.849-.07c-1.17-.054-1.806-.249-2.228-.414a3.734 3.734 0 0 1-1.38-.897 3.71 3.71 0 0 1-.897-1.38c-.164-.423-.36-1.058-.414-2.228-.058-1.266-.071-1.645-.071-4.849s.012-3.583.07-4.848c.054-1.17.249-1.806.414-2.228.218-.56.478-.96.897-1.38.42-.42.82-.68 1.38-.897.423-.164 1.058-.36 2.228-.414 1.266-.058 1.645-.071 4.849-.071m0-2.162c-3.259 0-3.667.014-4.948.072-1.278.058-2.15.261-2.913.558-.788.307-1.457.717-2.125 1.385S1.943 4.344 1.636 5.133c-.297.764-.5 1.636-.558 2.913-.058 1.28-.072 1.688-.072 4.948s.014 3.667.072 4.948c.058 1.278.261 2.15.558 2.913a5.885 5.885 0 0 0 1.384 2.126 5.881 5.881 0 0 0 2.126 1.384c.763.296 1.636.499 2.913.558 1.28.058 1.688.072 4.948.072s3.667-.014 4.948-.072c1.278-.058 2.15-.261 2.913-.558a5.885 5.885 0 0 0 2.126-1.384 5.881 5.881 0 0 0 1.384-2.126c.296-.763.499-1.636.558-2.913.058-1.28.072-1.688.072-4.948s-.014-3.667-.072-4.948
21c-.058-1.278-.261-2.15-.558-2.913-.306-.789-.717-1.458-1.384-2.126s-1.337-1.077-2.126-1.384c-.763-.296-1.636-.499-2.913-.558-1.282-.058-1.69-.072-4.949-.072zm0 5.838a6.162 6.162 0 1 0 0 12.324 6.162 6.162 0 0 0 0-12.324zm0 10.162a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm6.405-11.845a1.44 1.44 0 1 1 0 2.88 1.44 1.44 0 1 1 0-2.88z"/></svg> 22 <span>Instagram</span> 23 </button> 24 <button @click="categorySelect('youtube')" class="l-jefnow__tab__btn" :class="{'-active': selectCategoryList.includes('youtube')}"> 25 <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" style="enable-background:new 0 0 26 26" xml:space="preserve"><path fill="#666" d="M25.5 6.5c-.3-1.2-1.2-2.1-2.3-2.4-2.1-.6-10.2-.6-10.2-.6s-8.1 0-10.2.6C1.7 4.4.8 5.3.5 6.5 0 8.6 0 13 0 13s0 4.4.5 6.5c.3 1.2 1.2 2.1 2.3 2.4 2 .6 10.2.6 10.2.6s8.1 0 10.2-.6c1.1-.3 2-1.2 2.3-2.4.5-2.1.5-6.5.5-6.5s0-4.4-.5-6.5zM10.1 17.6V8.4l7.5 4.6-7.5 4.6z"/></svg> 26 <span>Youtube</span> 27 </button> 28 </div> 29 </div> 30 </div> 31 <div class="l-jefnow__body"> 32 <transition-group appear tag="div" name="jefnow" mode="out-in"> 33 <section class="l-jefnow__item" v-for="(item, index) in jefnowGetData()" :key="item.index"> 34 <template v-if="item.sns == 'news'"> 35 <div class="l-jefnow__item__inner"> 36 <h4 class="l-jefnow__news__ttl">NEWS</h4> 37 <a :href="item.link" class="l-jefnow__item__link"> 38 <figure class="l-jefnow__news__photo"><img :src="item.thumbnail" width="320" height="168" :alt="item.title"></figure> 39 <div class="l-jefnow__news__summary"> 40 <div class="l-jefnow__news__label"> 41 <span class="l-jefnow__news__data">{{ item.ymd }}</span> 42 <span class="l-jefnow__news__category">{{ item.category }}</span> 43 </div> 44 <p class="l-jefnow__news__txt">{{ item.title }}</p> 45 </div> 46 </a> 47 </div> 48 </template> 49 <template v-else-if="item.sns == 'twitter'"> 50 <div class="l-jefnow__item__inner"> 51 <a :href="'https://twitter.com/'+item.account_name+'/status/'+item.tweet_id" target="_blank" class="l-jefnow__item__link"> 52 <h4 class="l-jefnow__twitter__name">{{ item.user_name }}<span>@{{ item.account_name }}</span></h4> 53 <div class="l-jefnow__twitter__summary"> 54 <p style="white-space:pre-wrap; word-wrap:break-word;">{{ item.body }}</p> 55 </div> 56 <figure v-if="item.thumbnail != ''" class="l-jefnow__twitter__media"><img :src="item.thumbnail" width="320" alt=""></figure> 57 </a> 58 </div> 59 </template> 60 <template v-else-if="item.sns == 'instagram'"> 61 <div class="l-jefnow__item__inner"> 62 <a :href="item.url" target="_blank" class="l-jefnow__item__link"> 63 <h4 class="l-jefnow__instagram__name">{{ item.account_name }}<span>@{{ item.user_name }}</span></h4> 64 <figure v-if="item.thumbnail != ''" class="l-jefnow__twitter__media"><img :src="item.thumbnail" width="320" alt=""></figure> 65 <div class="l-jefnow__twitter__summary"> 66 <p style="white-space:pre-wrap; word-wrap:break-word;">{{ item.caption }}</p> 67 </div> 68 </a> 69 </div> 70 </template> 71 <template v-else-if="item.sns == 'youtube'"> 72 <div class="l-jefnow__item__inner"> 73 <a :href="item.url" target="_blank" class="l-jefnow__item__link"> 74 <h4 class="l-jefnow__youtube__name">{{ item.channel_name }} <span>{{ item.user_name }}</span></h4> 75 <figure v-if="item.thumbnail != ''" class="l-jefnow__news__photo"><img :src="item.thumbnail" width="320" height="168" :alt="item.title"></figure> 76 <div class="l-jefnow__news__summary"> 77 <div class="l-jefnow__news__label"> 78 <span class="l-jefnow__news__data">{{ item.ymd }}</span> 79 </div> 80 <p class="l-jefnow__news__txt">{{ item.title }}</p> 81 </div> 82 </a> 83 </div> 84 </template> 85 </section> 86 </transition-group> 87 </div> 88 <div ref="item_observe" style="opacity: 0;visibility: hidden;height:10px;"></div> 89 </div> 90</article> 91<div class="overlay" :class="{'-active': overlayflag}" @click="$emit('jefnowclose')"></div>`, 92 data() { 93 return { 94 selectCategoryList: [], 95 jefnowData: [], 96 jefnowNewsData: [], 97 jefnowYoutubeData: [], 98 jefnowInstagramData: [], 99 jefnowTwitterData: [], 100 observer: null, 101 limit: 0, 102 }; 103 }, 104 created() { 105 var cookie = ""; 106 if ((cookie = $cookies.get("jefnow"))) { 107 if (cookie.indexOf(",") != -1) { 108 this.selectCategoryList = cookie.split(","); 109 } else { 110 this.selectCategoryList.push(cookie); 111 } 112 } else { 113 this.selectCategoryList.push("news"); 114 } 115 }, 116 mounted() { 117 this.jefnowGetFunc(); 118 this.observer = new IntersectionObserver((entries) => { 119 const entry = entries[0]; 120 if (entry && entry.isIntersecting) { 121 this.jefnowLimitUpdate(); 122 } 123 }); 124 const item_observe = this.$refs.item_observe; 125 this.observer.observe(item_observe); 126 }, 127 methods: { 128 categorySelect(category) { 129 if (this.selectCategoryList.includes(category)) { 130 this.selectCategoryList = this.selectCategoryList.filter((item) => item != category); 131 } else { 132 this.selectCategoryList.push(category); 133 } 134 $cookies.set("jefnow", this.selectCategoryList, "1h"); 135 this.jefnowGetFunc(); 136 }, 137 jefnowLimitUpdate() { 138 this.limit = this.limit + 10; 139 this.jefnowGetFunc(); 140 }, 141 jefnowGetData() { 142 return this.jefnowData.slice(0, this.limit); 143 }, 144 jefnowGetFunc() { 145 if (this.jefnowflag) { 146 var apiUrl = ""; 147 var promises = []; 148 this.jefnowData = []; 149 if (this.selectCategoryList.length > 0) { 150 this.selectCategoryList.forEach( 151 function (item) { 152 promises.push( 153 new Promise((resolve) => { 154 switch (item) { 155 case "news": 156 if (this.jefnowNewsData.length == 0) {
157 apiUrl = "/api/jefnow/news"; 158 axios 159 .get(apiUrl, {}) 160 .then((response) => { 161 if (response.data) { 162 this.jefnowNewsData = response.data["news"]; 163 this.jefnowData = this.jefnowData.concat(this.jefnowNewsData); 164 } 165 }) 166 .catch((error) => { 167 // console.log(error); 168 }) 169 .finally((element) => { 170 resolve(); 171 }); 172 } 173 if (this.jefnowNewsData.length > 0) { 174 this.jefnowData = this.jefnowData.concat(this.jefnowNewsData); 175 resolve(); 176 } 177 break; 178 case "youtube": 179 if (this.jefnowYoutubeData.length == 0) { 180 apiUrl = "/api/jefnow/youtube"; 181 axios 182 .get(apiUrl, {}) 183 .then((response) => { 184 if (response.data) { 185 this.jefnowYoutubeData = response.data["youtube"]; 186 this.jefnowData = this.jefnowData.concat(this.jefnowYoutubeData); 187 } 188 }) 189 .catch((error) => { 190 // console.log(error) 191 }) 192 .finally((element) => { 193 resolve(); 194 }); 195 } 196 if (this.jefnowYoutubeData.length > 0) { 197 this.jefnowData = this.jefnowData.concat(this.jefnowYoutubeData); 198 resolve(); 199 } 200 break; 201 case "instagram": 202 if (this.jefnowInstagramData.length == 0) { 203 apiUrl = "/api/jefnow/instagram"; 204 axios 205 .get(apiUrl, {}) 206 .then((response) => { 207 if (response.data) { 208 this.jefnowInstagramData = response.data["instagram"]; 209 this.jefnowData = this.jefnowData.concat(this.jefnowInstagramData); 210 } 211 }) 212 .catch((error) => { 213 // console.log(error) 214 }) 215 .finally((element) => { 216 resolve(); 217 }); 218 } 219 if (this.jefnowInstagramData.length > 0) { 220 this.jefnowData = this.jefnowData.concat(this.jefnowInstagramData); 221 resolve(); 222 } 223 break; 224 case "twitter": 225 if (this.jefnowTwitterData.length == 0) { 226 apiUrl = "/api/jefnow/twitter"; 227 axios 228 .get(apiUrl, {}) 229 .then((response) => { 230 if (response.data) { 231 this.jefnowTwitterData = response.data["twitter"]; 232 this.jefnowData = this.jefnowData.concat(this.jefnowTwitterData); 233 } 234 }) 235 .catch((error) => { 236 // console.log(error) 237 }) 238 .finally((element) => { 239 resolve(); 240 }); 241 } 242 if (this.jefnowTwitterData.length > 0) { 243 this.jefnowData = this.jefnowData.concat(this.jefnowTwitterData); 244 resolve(); 245 } 246 break; 247 default: 248 resolve(); 249 break; 250 } 251 }) 252 ); 253 }.bind(this) 254 ); 255 Promise.all(promises).then(() => { 256 if (this.jefnowData.length > 0) { 257 this.jefnowData.sort((a, b) => b.unixtime - a.unixtime); 258 } 259 }); 260 } 261 } 262 }, 263 }, 264};
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.