', {'class':'rank'})
.append($('', {'class':'fa fa-inline fa-c-kpi'}))
.append(asItemInfo.rank)
);
}
//Icon
$verHtml.find('#type_logo').addClass('fa-c-'+asItemInfo.type);
//Link
var sItemLink = self.getInternalLink(asItemInfo.type, asItemInfo.id_item);
$verHtml.find('#item_link').attr('href', sItemLink).attr('title', 'Lien vers '+sItemLink);
$verHtml = self.setElemTags($verHtml, asItemInfo.id_item, false, asItemInfo.type);
//Display
$bAnimation = (typeof $bAnimation != 'undefined')?$bAnimation:true;
var $Container = self.getMainElem('#list_container');
if($bAnimation) $verHtml.hide().appendTo($Container).slideDown('fast');
else $verHtml.appendTo($Container);
};
this.getActionLink = function(sAction, oVars)
{
if(!oVars) oVars = {};
sVars = '';
for(i in oVars)
{
sVars += '&'+i+'='+oVars[i];
}
return self.consts.process_url+'?a='+sAction+sVars;
};
this.getInternalLink = function(sPage, iItemId, bAbsolute)
{
bAbsolute = bAbsolute || false;
if(sPage.length==1) sPage = self.vars.hash_to_page[sPage]; //if hash is provided instead of page
return (bAbsolute?self.vars.serv_name:'')+'#'+sPage+((iItemId>0 || iItemId!='')?'-'+escape($.trim(iItemId)):'');
};
this.goToInternalLink = function(sPage, iItemId, bFade)
{
self.vars2('fade', bFade || false);
iItemId = iItemId || 0;
var sHash = self.getInternalLink(sPage, iItemId).substr(1);
if(sHash==self.hash()) self.onHashChange({force:true});
else self.hash(sHash);
};
this.refresh = function()
{
self.tmp("refresh", true);
//self.goToInternalLink(databap.vars.current_page, databap.vars.id);
location.reload(true);
};
this.goToExternalLink = function(sUrl)
{
window.location = sUrl;
};
this.appendCode = function(codeBox, info)
{
self.vars.id = info.id_code;
self.vars.phrase = (!info.phrase)?info.id_code:info.phrase;
//#code_reader
$codeBox = self.setElemTags($(codeBox), [self.vars.id]);
//About code
self.getMainElem('#'+self.getElemTag('code_lines', self.vars.id)).html(info.code);
self.getMainElem('#'+self.getElemTag('description', self.vars.id)).html(info.description);
//About author
self.getMainElem('#'+self.getElemTag('author_name', self.vars.id)).text(info.name);
self.getMainElem('#'+self.getElemTag('author_company', self.vars.id)).text(info.company);
self.getMainElem('#'+self.getElemTag('led', self.vars.id)).text(info.led);
self.getMainElem('#'+self.getElemTag('item_link', self.vars.id))
.prop('href', self.getInternalLink('code', info.id_code))
.find('.fa').addClass('fa-c-code');
};
this.setElemTags = function($CodeBox, aiIds, bUpdate, sType)
{
self.setElemTag($CodeBox, aiIds, bUpdate, sType);
$CodeBox.find('[id]').each(function(){self.setElemTag($(this), aiIds, bUpdate, sType);});
return $CodeBox;
};
this.setElemTag = function($Tag, aiIds, bUpdate, sType)
{
var sCurTagId = $Tag.attr('id');
//Replace only ids existing in aiIds, keep the others
if(bUpdate)
{
var aiCurTagIds = self.getElemIds(sCurTagId);
for(i in aiIds)
{
aiCurTagIds[i] = aiIds[i];
}
aiIds = aiCurTagIds;
}
var sNewTagId = self.getElemTag(self.stripElemIds(sCurTagId), aiIds, sType);
$Tag.attr('id', sNewTagId);
if($Tag.attr('name') != undefined) $Tag.attr('name', sNewTagId);
};
this.getElemTag = function(sTag, aiIds, sType)
{
if(!sType) sType = 'c';
if(typeof aiIds != 'object') aiIds = [aiIds];
return sType+implode(self.consts.id_sep, aiIds)+self.consts.id_sep+sTag;
};
this.getFirstElemId = function(sTag)
{
var aiIds = self.getElemIds(sTag);
return aiIds[0];
};
this.getElemIds = function(sTag)
{
return array_filter(explode(self.consts.id_sep, sTag.substr(1)), isNumeric);
};
this.stripElemIds = function(sTag)
{
//var sPattern = 'c\\d+'+self.consts.id_sep;
var sType = sTag.substr(0, 1);
var sPattern = self.getElemTag('', '\\d+', sType);
if(self.checkRegExMatch(sPattern, sTag))
{
sTag = sTag.substr(self.getElemTag('', self.getElemIds(sTag), sType).length);
}
return sTag;
};
this.checkRegExMatch = function(sPattern, sText)
{
var oRegEx = new RegExp(sPattern, 'i');
return sText.match(oRegEx);
};
this.setCodeContainer = function(fOnSuccess, containerId)
{
if(typeof self.vars.code_container === 'undefined' || self.vars.code_container == '')
{
self.getInfo
(
'code_block',
function(code_block)
{
self.vars.code_container = code_block;
if(containerId) self.appendContainer(containerId);
fOnSuccess();
}
);
}
else
{
if(containerId) self.appendContainer(containerId);
fOnSuccess();
}
};
this.appendContainer = function(containerId, codeId)
{
if(containerId != '')
{
if(!codeId)
{
codeBoxId = 'code_reader';
container = self.vars.code_container;
}
else
{
codeBoxId = self.getElemTag('code_reader', codeId);
container = self.vars.code_container.replace('id="code_reader"', 'id="'+codeBoxId+'"');
}
self.getMainElem(containerId).append(container);
return codeBoxId;
}
else
{
return false;
}
};
this.getImagePath = function(imageName)
{
return 'url("'+self.consts.app_image_folder+imageName+'")';
};
this.getPagePath = function(sPageName)
{
return self.consts.mask_folder+sPageName+'.html?'+self.consts.time;
};
this.addPunctuation = function(sMsg)
{
var asPunctuations = ['?', '!', '.', ',', ':', ';', '-', '/'];
return sMsg+($.inArray(sMsg.slice(-1), asPunctuations)==-1?'.':'');
};
this.addErrorBefore = function(msg, elem)
{
self.addMsgBefore(this.addPunctuation(msg), 'error', elem);
};
this.addWarningBefore = function(msg, elem)
{
msg = 'Attention : '+this.addPunctuation(msg);
self.addMsgBefore(msg, 'warning', elem);
};
this.addSuccessBefore = function(msg, elem)
{
self.addMsgBefore(this.addPunctuation(msg), 'success', elem);
};
this.addMsgBefore = function(msg, msgClass, elem)
{
var $msg = $('', {'class':msgClass}).append($('', {'class':'fa fa-inline fa-c-'+msgClass})).append(msg);
$msg.hide().insertBefore(elem).slideDown('fast', function(){databap.updateScrollBar('bottom');}).delay(5000).slideUp('fast', function(){$(this).remove();databap.updateScrollBar();});
};
this.feedback = function(sClass, sMsg, bClean)
{
bClean = bClean || false;
if(sClass=='error' && sMsg=='') sMsg = 'Aïe ! Une erreur inconnue est suvenue';
else if(sClass=='error' && $.inArray(sMsg, self.consts.errors.system)!=-1) sMsg = 'Une erreur interne est survenue. Merci de contacter l\'admin';
//clean box
$Box = $('#title_feedback');
if(bClean) $Box.empty();
$('', {'class':'feedback '+sClass})
.append($('', {'class':'fa fa-inline fa-c-'+sClass}))
.append(self.addPunctuation(sMsg))
.appendTo($Box)
.slideDown('fast')
.delay(5000)
.slideUp('fast', function(){$(this).remove();});
};
this.setTitle = function(extra)
{
extra = extra || '';
if(extra!='') extra += ' | ';
var page = self.vars.page_titles[self.vars.current_page];
if(self.vars.id) page += ' '+self.vars.id;
document.title = extra+'Databap '+chr('8226')+' '+page;
};
this.initScrollBar = function(sBox, sSubBox, sContent)
{
self.tmp('scrollbar', {}); //TODO in page switch
$(sSubBox)
.before('')
.addClass('scrollbar_box round');
$(sContent).addClass('scrollbar_subbox');
self.tmp('scrollbar', $(sBox).tinyscrollbar({viewport:sSubBox, overview:sContent}));
};
this.setScrollBarSize = function(iBoxSize)
{
if(self.tmp('scrollbar'))
{
var $Box = self.tmp('scrollbar').find('.scrollbar_box');
if(iBoxSize=='optimize') self.maximizeElem($Box, true);
else if(iBoxSize=='maximize') self.maximizeElem($Box, false);
else $Box.height(iBoxSize);
self.updateScrollBar();
}
};
this.updateScrollBar = function(sPos)
{
sPos = sPos || 'relative';
if(self.tmp('scrollbar')) self.tmp('scrollbar').tinyscrollbar_update(sPos);
};
this.isScrollBarAtBottom = function()
{
return self.tmp('scrollbar').tinyscrollbar_isBottom();
};
this.unifyWidth = function($ItemsSet)
{
var iMaxWidth = 0;
$ItemsSet.each(function(){iMaxWidth = Math.max(iMaxWidth, $(this).width());});
$ItemsSet.each(function(){if($(this).width() < iMaxWidth) $(this).width(iMaxWidth);});
};
this.shareEvent = function(sType, iId)
{
if(iId!='')
{
$('#share')
.hide()
.text(self.getInternalLink(sType, iId, true))
.addClass('addr')
.slideDown('fast')
.unbind('click');
}
};
}