nyx_server
Version:
Node内容发布
82 lines (68 loc) • 2.67 kB
JavaScript
(function ($, lib, conf) {
'use strict';
var fragmentGroup = {
fragments: {},
focusFragment: null,
add: function (fragment) {
fragmentGroup.fragments[fragment.uid] = fragment;
},
createAll: function () {
var comments = lib.getComments('chip:start');
for (var i = 0, iLen = comments.length; i < iLen; i++) {
fragmentGroup.create(comments[i]);
}
},
create: function (commentElm) {
var uid = commentElm.data.split(';')[1].split('=')[1];
// 创建前需要先判断该碎片是否存在,因为每次刷重建通栏时,
// 都是基于对整个页面上的通栏注释节点进行重建的。
if (typeof fragmentGroup.fragments[uid] === 'undefined') {
fragmentGroup.add(new topic.module.Fragment(commentElm));
}
},
// 对所有通栏的蒙层进行重置,主要是对位置和是否显示进行重新计算。
layoutResetAll: function () {
if (topic.state.get('pageModel') === 'bannerEdit') {
return;
}
for (var key in fragmentGroup.fragments) {
fragmentGroup.fragments[key].layoutReset();
fragmentGroup.fragments[key].show();
}
},
// 隐藏所有碎片蒙层。
layoutHideAll: function () {
for (var key in fragmentGroup.fragments) {
fragmentGroup.fragments[key].hide();
}
},
// 这里删除一个碎片,需要将所有碎片进行一次重置
// isReset的作用是如果在批量删除碎片的时候,可以先不进行重置
// 在全部删除完,再进行一次重置,提高性能。
remove: function (fragmentId, isReset) {
if (typeof isReset === 'undefined') {
isReset = true;
}
if (typeof fragmentGroup.fragments[fragmentId] !== 'undefined') {
fragmentGroup.fragments[fragmentId].destory();
delete fragmentGroup.fragments[fragmentId];
if (isReset) {
fragmentGroup.layoutResetAll();
}
}
},
// 移除一个通栏内的所有碎片对象
// 使用方法是,遍历fragments对象,将bannerUid跟传入参数相同的碎片进行清除。
removeByBanner: function (bannerUid) {
var fragment;
for (var key in fragmentGroup.fragments) {
fragment = fragmentGroup.fragments[key];
if (fragment.bannerUid === bannerUid) {
fragmentGroup.remove(fragment.uid, false);
}
}
fragmentGroup.layoutResetAll();
}
};
lib.ns('topic').fragmentGroup = fragmentGroup;
}(topicJquery, topic.utils, topic.conf));