PageSourceSearch

https://www.cathaysec.com.tw/cathaysec/Scripts/js/news.js?0711

js cathaysec.com.tw collected 2026-09-24 10:47:28 UTC 11,218 bytes, 271 lines download raw bytes

1function getPager(pageIndex, totalPage, gap) {
2    var result = [];
3    var i = 0;
4    if (totalPage > 0) {
5        var space = gap * 2 + 5;
6        if (totalPage > space) {
7            var s = (space + 1) / 2;
8            var f = ((pageIndex - s) <= 0) ? 2 : 0;
9            var l = (pageIndex > (totalPage - s)) ? (totalPage - 1) : 0;
10            var sP = 0, eP = 0;
11            if (f === 0) {
12                if (l === 0) {
13                    sP = pageIndex - gap;
14                    eP = pageIndex + gap;
15                } else {
16                    sP = totalPage - ((gap + 1) * 2);
17                    eP = sP + (2 * gap);
18                }
19            } else {
20                if (l === 0) {
21                    sP = 3;
22                    eP = sP + (2 * gap);
23                } else {
24                    //impossiable
25                }
26            }
27            result.push(1);
28            result.push(f === 0 ? "." : f);
29            for (i = sP; i <= eP; i++) {
30                result.push(i);
31            }
32            result.push(l === 0 ? "." : l);
33            result.push(totalPage);
34        } else {
35            for (i = 1; i <= totalPage; i++) {
36                result.push(i);
37            }
38        }
39    }
40    return result;
41}
42
43function setPager(pageIdx, totalPage) {
44    var $pager = $("#pager");
45    var prevPage = pageIdx - 1;
46    var nextPage = pageIdx + 1;
47    var $prev = $pager.find(".m-pagination-prev");
48    var $next = $pager.find(".m-pagination-next");
49
50    if (pageIdx <= prevPage || prevPage < 1) {
51        $prev.addClass("disabled");
52    } else {
53        $prev.removeClass("disabled").data("page", prevPage);
54    }
55    if (pageIdx >= nextPage || nextPage > totalPage) {
56        $next.addClass("disabled");
57    } else {
58        $next.removeClass("disabled").data("page", nextPage);
59    }
60    var pager = getPager(pageIdx, totalPage, 1);
61    var pagerHtml = $.map(pager,
62        function (v) {
63            var result;
64            if (v === ".") {
65                result = '<li class="m-pagination-item"><em>...</em >';
66            } else {
67                var active = (v === pageIdx) ? " active" : "";
68                result = '<li class="m-pagination-item' + active + '" data-page="' + v + '"><a href="javascript:;">' + v + '</a></li>';
69            }
70            return result;
71        });
72    $pager.find("ol.m-pagination-number").empty().html(pagerHtml.join(""));
73}
74
75function getCtNewsByPage(pageIndex) {
76    return makeApiCall("../api/News/GetCtNewsByPage", { PageSize: 10, PageIndex: pageIndex });
77}
78
79function getCtNewsList(pageIndex) {
80    getCtNewsByPage(pageIndex).then(data => {
81        if (data.NewsList && data.NewsList.length) {
82            var items = $.map(data.NewsList,
83                function (v) {
84                    var url = "../News/nContent.aspx?" + $.param({ NewsDate: v.NewsDate, CSeqNO: v.CSeqNO });
85                    var time = ((v.NewsTime || "").length === 17) ? v.NewsTime.substr(4, 10) : v.NewsTime;
86                    time = (time.length === 10) ? (time.substring(0, 2) + "/" + time.substring(2)) : time;
87                    return getNewsItem(url, v.Title, time);
88                });
89            $("#newsList").empty().append(items.join(""));
90            setPager(data.PageIndex, data.TotalPage);
91        } else {
92            alertMsg({ content: "目前無「新聞直播」資料!" });
93        }
94    }).fail(() => {
95        alertMsg({ content: "無法取得「新聞直播」資料!" });
96    });
97}
98
99function getNewsItem(url, title, time, target) {
100    var t = target || "_self";
101    var pattern = '' +
102        '<li class="m-timeline-item">\n' +
103        '  <div class="m-timeline-title">\n' +
104        '    <a href="Url" class="m-timeline-link text-x3 hover:text-x094e">\n' +
105        '      <h3 class="$after:bg-x094e pt:text-18 m:text-16">Title</h3>\n' +
106        '    </a>' +
107        '  </div>' +
108        '  <time class="m-timeline-time text-x8 pt:text-18 m:text-14">Time</time>' +
109        '</li>';
110    return $(pattern).find("a.m-timeline-link").attr("href", url).attr("target",t).find("h3").text(title).end().end().find("time").text(time).end().prop("outerHTML");
111}
112
113function getCtNewsDetailsData(newsDate, cSeqNo) {
114    return makeApiCall("../api/News/GetCtNewsDetails", { NewsDate: newsDate, CSeqNO: cSeqNo });
115}
116
117function getCtNewsDetails(newsDate, cSeqNo) {
118    getCtNewsDetailsData(newsDate, cSeqNo).then((data) => {
119        if (data) {
120            var time = data.NewsTime.substr(0, 4) + "-" + data.NewsTime.substr(4, 2) + "-" + data.NewsTime.substring(6);
121            var newsContent = (data.Source === "T" ? "【公開資訊觀測站】<br/>" : "") + (data.NewsContent || "").replace(/\n/g, "<br/>");
122            $("#title").text(data.Title);
123            $("#time").text(time);
124            $("#reporter").text(data.Reporter);
125            $("#newsContent").html(newsContent);
126            if (data.PrvNewsDate && data.PrvCSeqNo) {
127                $("#prev").removeClass("disabled").one("click", function () {
128                    window.location.href = window.location.pathname + "?NewsDate=" + data.PrvNewsDate + "&CSeqNO=" + data.PrvCSeqNo;
129                });
130            } else {
131                $("#prev").addClass("disabled");
132            }
133            if (data.NxtNewsDate && data.NxtCSeqNo) {
134                $("#next").removeClass("disabled").one("click", function () {
135                    window.location.href = window.location.pathname + "?NewsDate=" + data.NxtNewsDate + "&CSeqNO=" + data.NxtCSeqNo;
136                });
137            } else {
138                $("#next").addClass("disabled");
139            }
140            window.scrollTo(0, 0);
141        } else {
142            alertMsg({ content: "您所查詢的新聞已過期!<br/> [SeqNo:" + htmlEncode(newsDate + "_" + cSeqNo) + "]" });
143        }
144    });
145}
146
147function getCcNewsByPage(pageIndex) {
148    return makeApiCall("../api/News/GetCcNewsByPage", { PageSize: 10, PageIndex: pageIndex });
149}
150
151function getCcNewsList(pageIndex) {
152    getCcNewsByPage(pageIndex).then(data => {
153        if (data.NewsList && data.NewsList.length) {
154            var items = $.map(data.NewsList,
155                function (v) {
156                    var url = v.IsOpen === "Y" ? v.OpenUrl : "../Bulletin/bContent.aspx?" + $.param({ NewsId: v.NewsId });
157                    var target = v.IsOpen === "Y" ? "_blank" : "";
158                    var date = v.NewsDate ? new Date(v.NewsDate) : null;
159                    var time = date ? date.format("yyyy-MM-dd") : "";
160                    return getNewsItem(url, v.NewsTitle, time, target);
161                });
162            $("#newsList").empty().append(items.join(""));
163            setPager(data.PageIndex, data.TotalPage);
164        } else {
165            alertMsg({ content: "目前無「重要公告」資料!" });
166        }
167    }).fail(() => {
168        alertMsg({ content: "無法取得「重要公告」資料!" });
169    });
170}
171
172function getCcNewsDetailsData(newsId) {
173    return makeApiCall("../api/News/GetCcNewsDetails", { NewsId: newsId });
174}
175
176function getCcNewsDetails(newsId) {
177    getCcNewsDetailsData(newsId).then((data) => {
178        if (data) {
179            var $prev = $("#prev");
180            var $next = $("#next");
181            var title = data.NewsTitle;
182            var date = data.NewsDate ? new Date(data.NewsDate) : "";
183            var time = date ? date.format("yyyy-MM-dd hh:mm:ss") : "";
184            var newsContent = data.NewsContent;
185            $("#title").text(title);
186            $("#time").text("發表時間: " + time);
187            $("#newsContent").html(newsContent);
188            $prev.data("newsId", data.PrvNewsId);
189            $next.data("newsId", data.NxtNewsId);
190
191            if (data.PrvNewsId) {
192                $prev.removeClass("disabled");
193            } else {
194                $prev.addClass("disabled");
195            }
196            if (data.NxtNewsId) {
197                $next.removeClass("disabled");
198            } else {
199                $next.addClass("disabled");
200            }
201            history.replaceState(data, "", location.pathname + location.search.replace(/(NewsId)=\d+/i, "$1=" + data.NewsId));
202            window.scrollTo(0, 0);
203        } else {
204            alertMsg({ content: "您所查詢的「重要公告」不存在或已過期!<br/> [NewsId:" + htmlEncode(newsId) + "]" });
205        }
206    });
207}
208
209
210function getCathaySecNewsByPage(pageIndex) {
211    return makeApiCall("../api/News/GetCathaySecNewsByPage", { PageSize: 10, PageIndex: pageIndex });
212}
213
214function getCathaySecNewsList(pageIndex) {
215    getCathaySecNewsByPage(pageIndex).then(data => {
216        if (data.NewsList && data.NewsList.length) {
217            var items = $.map(data.NewsList,
218                function (v) {
219                    var url = v.IsOpen === "Y" ? v.OpenUrl : "../CathaySecNews/cContent.aspx?" + $.param({ NewsId: v.NewsId });
220                    var target = v.IsOpen === "Y" ? "_blank" : "";
221                    var date = v.NewsDate ? new Date(v.NewsDate) : null;
222                    var time = date ? date.format("yyyy-MM-dd") : "";
223                    return getNewsItem(url, v.NewsTitle, time, target);
224                });
225            $("#newsList").empty().append(items.join(""));
226            setPager(data.PageIndex, data.TotalPage);
227        } else {
228            alertMsg({ content: "目前無「國證新聞」資料!" });
229        }
230    }).fail(() => {
231        alertMsg({ content: "無法取得「國證新聞」資料!" });
232    });
233}
234
235
236function getCathaySecNewsDetailsData(newsId) {
237    return makeApiCall("../api/News/GetCathaySecNewsDetails", { NewsId: newsId });
238}
239
240function getCathaySecNewsDetails(newsId) {
241    getCathaySecNewsDetailsData(newsId).then((data) => {
242        if (data) {
243            var $prev = $("#prev");
244            var $next = $("#next");
245            var title = data.NewsTitle;
246            var date = data.NewsDate ? new Date(data.NewsDate) : "";
247            var time = date ? date.format("yyyy-MM-dd hh:mm:ss") : "";
248            var newsContent = data.NewsContent.replace(/(<(strong|h2|p)>)(\s*&nbsp;\s*){5,}([\s\S]+?<\/\2>)/g, "$1$4");
249            $("#title").text(title);
250            $("#time").text("發表時間: " + time);
251            $("#newsContent").html(newsContent);
252            $prev.data("newsId", data.PrvNewsId);
253            $next.data("newsId", data.NxtNewsId);
254
255            if (data.PrvNewsId) {
256                $prev.removeClass("disabled");
257            } else {
258                $prev.addClass("disabled");
259            }
260            if (data.NxtNewsId) {
261                $next.removeClass("disabled");
262            } else {
263                $next.addClass("disabled");
264            }
265            history.replaceState(data, "", location.pathname + location.search.replace(/(NewsId)=\d+/i, "$1=" + data.NewsId));
266            window.scrollTo(0, 0);
267        } else {
268            alertMsg({ content: "您所查詢的「國證新聞」不存在或已過期!<br/> [NewsId:" + htmlEncode(newsId) + "]" });
269        }
270    });
271}

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.