• R/O
  • HTTP
  • SSH
  • HTTPS

feedblog: 提交

JavaScriptのみで記述されたブログツール・ソフトウェアです。


Commit MetaInfo

修訂34856c2948ebec9a74fe63fd11328af6d4b0b33b (tree)
時間2014-03-15 17:21:09
作者Kureha Hisame <kureha@gmai...>
CommiterKureha Hisame

Log Message

- enhance tag search speed.
- change function names.

Change Summary

差異

--- a/js/lunardial/feedblog.js
+++ b/js/lunardial/feedblog.js
@@ -268,7 +268,7 @@ function executingEffect() {
268268 /**
269269 * 呼び出すとDIV:id名:feedblog_drawpanel_info上に、処理完了の記事を表示します
270270 */
271-function executingEffectComplete() {
271+function executingEffectCompleteEffect() {
272272 $("#feedblog_drawpanel_info").html('<div id="feedblog_drawitem_info" class="feedblog_drawitem">&nbsp;<\/div><\/div>');
273273
274274 // 検索処理完了用のパネルを生成
@@ -276,21 +276,32 @@ function executingEffectComplete() {
276276 systemEntry.title = "検索完了";
277277 systemEntry.content = '<br/>検索処理が完了しました。(該当記事:' + fetchEntriesSemaphore.entryCount + '件)<br/><br/>';
278278 generateSystemPanel(systemEntry, "feedblog_drawitem_info", "feedblog_drawpanel_info", false);
279+}
279280
280- // 状況に応じて「全件表示」パネルを生成
281- if (fetchEntriesSemaphore.showLimit == true && fetchEntriesSemaphore.entryIndex != fetchEntriesSemaphore.entryCount) {
282- $("#feedblog_writearea").html($("#feedblog_writearea").html() + '<div id="feedblog_drawpanel_abort" class="feedblog_drawpanel"><div id="feedblog_drawitem_abort" class="feedblog_drawitem">&nbsp;<\/div><\/div>');
283- systemEntry = new SystemEntry();
284- systemEntry.title = "以降、" + (fetchEntriesSemaphore.entryCount - fetchEntriesSemaphore.entryIndex) + "件の記事が省略されています。";
285- systemEntry.content = '<br/><a style="cursor: pointer;" onclick="javascript: var tag = getParamFromUrl(\'tag\'); searchTagMode(tag, false);">全ての記事を表示する。</a><br/><br/>';
286- generateSystemPanel(systemEntry, "feedblog_drawitem_abort", "feedblog_drawpanel_abort", false);
287- }
281+/**
282+ * 呼び出すとDIV:id名:feedblog_drawpanel_abort上に、省略記事がある旨を描画します
283+ */
284+function showLimitedInfoEffect() {
285+ $("#feedblog_writearea").html($("#feedblog_writearea").html() + '<div id="feedblog_drawpanel_abort" class="feedblog_drawpanel"><div id="feedblog_drawitem_abort" class="feedblog_drawitem">&nbsp;<\/div><\/div>');
286+
287+ // 記事省略用のパネルを生成
288+ var systemEntry = new SystemEntry();
289+ systemEntry.title = "以降、" + (fetchEntriesSemaphore.entryCount - fetchEntriesSemaphore.entryIndex) + "件の記事が省略されています。";
290+ systemEntry.content = '<br/><a style="cursor: pointer;" onclick="javascript: fetchTagHiddenEntries();">全ての記事を表示する。</a><br/><br/>';
291+ generateSystemPanel(systemEntry, "feedblog_drawitem_abort", "feedblog_drawpanel_abort", false);
292+}
293+
294+/**
295+ * 呼び出すとDIV:id名:feedblog_drawpanel_abortを消去します
296+ */
297+function showLimitedInfoRemoveEffect() {
298+ $("#feedblog_drawpanel_abort").remove();
288299 }
289300
290301 /**
291302 * 記事データのエラー時の処理を行います
292303 */
293-function showError() {
304+function showErrorEffect() {
294305 $("#feedblog_writearea").html('<div id="feedblog_drawpanel" class="feedblog_drawpanel"><div id="feedblog_drawitem" class="feedblog_drawitem">&nbsp;<\/div><\/div>');
295306
296307 // エラー内容をパネルに描画
@@ -312,7 +323,7 @@ function showError() {
312323 /**
313324 * 記事データのエラー時の処理を行います
314325 */
315-function notFoundError() {
326+function notFoundErrorEffect() {
316327 $("#feedblog_writearea").html('<div id="feedblog_drawpanel" class="feedblog_drawpanel"><div id="feedblog_drawitem" class="feedblog_drawitem">&nbsp;<\/div><\/div>');
317328
318329 // エラー内容をパネルに描画
@@ -427,7 +438,7 @@ function logXMLLoader() {
427438 jQuery.ajax({
428439 url : logXmlUrl + '?time=' + urlSuffix,
429440 method : "GET",
430- error : showError,
441+ error : showErrorEffect,
431442 success : function(xmlData) {
432443 var separateTag = xmlData.getElementsByTagName("file");
433444
@@ -473,7 +484,7 @@ function fullWriteMode(fileName) {
473484 // 表示ロジック呼び出し
474485 showEntriesRange(showLength, 0);
475486 },
476- error : showError
487+ error : showErrorEffect
477488 });
478489 }
479490
@@ -489,7 +500,7 @@ function searchHashMode(urlhash) {
489500 var loader = new jQuery.ajax({
490501 url : logXmlUrl + '?time=' + urlSuffix,
491502 method : "GET",
492- error : showError,
503+ error : showErrorEffect,
493504 success : function(xmlData) {
494505 // ファイルパスの要素のみを抽出する
495506 var separateTag = xmlData.getElementsByTagName("file");
@@ -558,7 +569,7 @@ function fetchHashEntries(xmlData) {
558569 var entries = fetchEntriesSemaphore.buf;
559570
560571 if (entries.length == 0) {
561- notFoundError();
572+ notFoundErrorEffect();
562573 return false;
563574 }
564575 }
@@ -576,7 +587,7 @@ function searchIdMode(urlhash) {
576587 var loader = new jQuery.ajax({
577588 url : logXmlUrl + '?time=' + urlSuffix,
578589 method : "GET",
579- error : showError,
590+ error : showErrorEffect,
580591 success : function(xmlData) {
581592 // ファイルパスの要素のみを抽出する
582593 var separateTag = xmlData.getElementsByTagName("file");
@@ -646,7 +657,7 @@ function fetchIdEntries(xmlData) {
646657 var entries = fetchEntriesSemaphore.buf;
647658
648659 if (entries.length == 0) {
649- notFoundError();
660+ notFoundErrorEffect();
650661 return false;
651662 }
652663 }
@@ -666,7 +677,7 @@ function searchTagMode(tag, showLimit) {
666677 var loader = new jQuery.ajax({
667678 url : logXmlUrl + '?time=' + urlSuffix,
668679 method : "GET",
669- error : showError,
680+ error : showErrorEffect,
670681 success : function(xmlData) {
671682 // ファイルパスの要素のみを抽出する
672683 var separateTag = xmlData.getElementsByTagName("file");
@@ -685,6 +696,7 @@ function searchTagMode(tag, showLimit) {
685696 fetchEntriesSemaphore.entryIndex = 0;
686697 fetchEntriesSemaphore.entryCount = 0;
687698 fetchEntriesSemaphore.showLimit = showLimit;
699+ fetchEntriesSemaphore.hiddenEntries = [];
688700
689701 // ファイルパス配列に格納されているすべての記事に対し、探索を開始する
690702 for (var i = 0; i < separateTag.length; i++) {
@@ -725,6 +737,8 @@ function fetchTagEntries(xmlData) {
725737 if (fetchEntriesSemaphore.showLimit == true && fetchEntriesSemaphore.entryIndex >= showLength) {
726738 // 検索一致件数をカウント
727739 fetchEntriesSemaphore.entryCount++;
740+ // entryを非表示配列に格納する
741+ fetchEntriesSemaphore.hiddenEntries.push(entry);
728742 } else {
729743 // 検索一致件数をカウント
730744 fetchEntriesSemaphore.entryCount++;
@@ -740,16 +754,33 @@ function fetchTagEntries(xmlData) {
740754
741755 if (fetchEntriesSemaphore.count == 0) {
742756 if (fetchEntriesSemaphore.entryIndex == 0) {
743- notFoundError();
757+ notFoundErrorEffect();
744758 return false;
745759 } else {
746- executingEffectComplete();
760+ executingEffectCompleteEffect();
761+ // 省略記事がある場合は、省略パネルを表示する
762+ if (fetchEntriesSemaphore.entryIndex != fetchEntriesSemaphore.entryCount) {
763+ showLimitedInfoEffect();
764+ }
747765 return true;
748766 }
749767 }
750768 }
751769
752770 /**
771+ * 省略表示されている記事一覧を描画します
772+ */
773+function fetchTagHiddenEntries() {
774+ // 省略パネルを消去する
775+ showLimitedInfoRemoveEffect();
776+
777+ // 省略されている記事を描画する
778+ for (var i = 0; i < fetchEntriesSemaphore.hiddenEntries.length; i++) {
779+ fetchEntriesSemaphore.entryIndex = showEntriesAdd(fetchEntriesSemaphore.hiddenEntries[i], fetchEntriesSemaphore.entryIndex);
780+ }
781+}
782+
783+/**
753784 * 検索結果を分割して表示します
754785 * class - div.feedblog_pager, ul.feedblog_pager, li.feedblog_pager などなど
755786 * @param {int} showLength 一回の画面に表示する記事数
@@ -761,7 +792,7 @@ function showEntriesRange(showLength, startIndex) {
761792
762793 // 表示インデックスが範囲外の場合はエラーパネルを表示して終了
763794 if (startIndex < 0 || (entries.length <= startIndex && entries.length != 0)) {
764- showError();
795+ showErrorEffect();
765796 return;
766797 }
767798
--- a/js/lunardial/feedblog_generator.js
+++ b/js/lunardial/feedblog_generator.js
@@ -252,7 +252,7 @@ function logXMLLoader() {
252252 // 最新の日記をローディングする
253253 xmlLoader(initUrl);
254254 },
255- error : showError
255+ error : showErrorEffect
256256 });
257257 }
258258
@@ -266,7 +266,7 @@ function xmlLoader(url) {
266266 url : url + "?time=" + (+new Date()),
267267 method : "GET",
268268 success : analyzeTargetXml,
269- error : showError
269+ error : showErrorEffect
270270 });
271271 }
272272
@@ -520,7 +520,7 @@ function closePanel(id) {
520520 /**
521521 * エラー画面を表示します
522522 */
523-function showError() {
523+function showErrorEffect() {
524524 alert("XMLファイルのローディング中にエラーが発生しました!");
525525 }
526526
--- a/js/lunardial/feedblog_search.js
+++ b/js/lunardial/feedblog_search.js
@@ -293,7 +293,7 @@ function loadingEffect() {
293293 /**
294294 * 記事データのエラー時の処理を行います
295295 */
296-function showError() {
296+function showErrorEffect() {
297297 $("#feedblog_writearea").html('<div id="feedblog_drawpanel" class="feedblog_drawpanel"><div id="feedblog_drawitem" class="feedblog_drawitem">&nbsp;<\/div><\/div>');
298298
299299 // エラー内容をパネルに描画
@@ -315,7 +315,7 @@ function showError() {
315315 /**
316316 * 記事データのエラー時の処理を行います
317317 */
318-function notFoundError() {
318+function notFoundErrorEffect() {
319319 $("#feedblog_writearea").html('<div id="feedblog_drawpanel" class="feedblog_drawpanel"><div id="feedblog_drawitem" class="feedblog_drawitem">&nbsp;<\/div><\/div>');
320320 $("#feedblog_drawitem").html('<br/>検索条件に一致する記事は見つかりませんでした。<br/><br/>');
321321
@@ -431,7 +431,7 @@ function logXMLLoader() {
431431 jQuery.ajax({
432432 url : logXmlUrl + '?time=' + urlSuffix,
433433 method : "GET",
434- error : showError,
434+ error : showErrorEffect,
435435 success : function(xmlData) {
436436 var separateTag = xmlData.getElementsByTagName("file");
437437 logData = new Array(separateTag.length);
@@ -526,7 +526,7 @@ function showEntriesRange(showLength, startIndex) {
526526
527527 // 表示インデックスが範囲外の場合はエラーパネルを表示して終了
528528 if (startIndex < 0 || entries.length <= startIndex) {
529- showError();
529+ showErrorEffect();
530530 return;
531531 }
532532
@@ -630,7 +630,7 @@ function fetchEntries(xmlData) {
630630
631631 // 一軒も検索にヒットしなかった場合は専用のパネルを表示して終了
632632 if (entries.length == 0) {
633- notFoundError();
633+ notFoundErrorEffect();
634634 return;
635635 }
636636
@@ -689,7 +689,7 @@ function searchDiary() {
689689 method : "GET",
690690 async : true,
691691 success : fetchEntries,
692- error : showError
692+ error : showErrorEffect
693693 });
694694 fetchEntriesSemaphore.xhrs.push(xhr);
695695 }
Show on old repository browser