MCPcopy Create free account
hub / github.com/dajie111/nodeseek-userscript / getFilteredItems

Function getFilteredItems

nodeImage.js:2704–2746  ·  view source on GitHub ↗

获取经过分类筛选 + 置顶排序后的图片列表

()

Source from the content-addressed store, hash-verified

2702
2703 /** 获取经过分类筛选 + 置顶排序后的图片列表 */
2704 function getFilteredItems() {
2705 var items = galleryAllItems;
2706 var imgCatMap = niGetImgCatMap();
2707 var pinnedIds = niGetPinnedIds();
2708
2709 // 按分类筛选
2710 if (currentCatFilter === 'pinned') {
2711 items = items.filter(function (it) {
2712 var pid = pickId(it);
2713 var u = pickUrl(it);
2714 var id = pid || extractIdFromCdnUrl(u);
2715 return id && pinnedIds.indexOf(id) >= 0;
2716 });
2717 } else if (currentCatFilter && currentCatFilter !== 'all') {
2718 items = items.filter(function (it) {
2719 var pid = pickId(it);
2720 var u = pickUrl(it);
2721 var id = pid || extractIdFromCdnUrl(u);
2722 return id && imgCatMap[id] === currentCatFilter;
2723 });
2724 }
2725
2726 // 置顶排前:置顶图片排在前面,非置顶保持原序
2727 items = items.slice().sort(function (a, b) {
2728 var pidA = pickId(a);
2729 var uA = pickUrl(a);
2730 var idA = pidA || extractIdFromCdnUrl(uA);
2731 var pidB = pickId(b);
2732 var uB = pickUrl(b);
2733 var idB = pidB || extractIdFromCdnUrl(uB);
2734 var pinA = idA && pinnedIds.indexOf(idA) >= 0 ? 0 : 1;
2735 var pinB = idB && pinnedIds.indexOf(idB) >= 0 ? 0 : 1;
2736 if (pinA !== pinB) return pinA - pinB;
2737 // 同为置顶的按置顶顺序
2738 if (pinA === 0) {
2739 var idxA = pinnedIds.indexOf(idA);
2740 var idxB = pinnedIds.indexOf(idB);
2741 return idxA - idxB;
2742 }
2743 return 0;
2744 });
2745 return items;
2746 }
2747
2748 var filtered = getFilteredItems();
2749 var total = filtered.length;

Callers 1

renderGalleryPageFunction · 0.85

Calls 5

niGetImgCatMapFunction · 0.85
niGetPinnedIdsFunction · 0.85
pickIdFunction · 0.85
pickUrlFunction · 0.85
extractIdFromCdnUrlFunction · 0.85

Tested by

no test coverage detected