1216 lines
29 KiB
JavaScript
Executable File
1216 lines
29 KiB
JavaScript
Executable File
/* Handling the communication between php processing server and local ajax engine */
|
|
|
|
/* Databap class */
|
|
|
|
var databap =
|
|
{
|
|
/* Constants defined with PHP
|
|
* - pages
|
|
* - vars.serv_name
|
|
* - consts.opt_type_text
|
|
* - consts.opt_type_select
|
|
* - consts.max_size
|
|
* - consts.authorized_exts
|
|
* - consts.mask_folder
|
|
*/
|
|
|
|
//on load init
|
|
init: function (defaultPage)
|
|
{
|
|
//Global constants
|
|
this.consts.default_page = this.pages.chat;
|
|
this.consts.process_url = 'index.php';
|
|
this.consts.app_image_folder = 'images/';
|
|
this.consts.add_code_text = 'Copier le code ici.';
|
|
this.consts.search_box_text = 'Recherche...';
|
|
this.consts.versionHtml = '<div id="author_box" class="author_box clickable round"><a id="item_link" href="#" target="_blank"><span id="description"></span> • <span id="author_name"></span> (<span id="author_company"></span>) • <span id="led"></span></a></div>';
|
|
this.consts.maxHeight = $(window).height();
|
|
this.consts.maxWidth = $(window).width();
|
|
this.consts.time = (new Date()).getTime();
|
|
|
|
//Global variables
|
|
this.vars.$main = $('#main');
|
|
this.vars.$menu = $('#menu');
|
|
this.initVar('tmp', 'object');
|
|
this.initVar('loading', 'boolean');
|
|
this.initVar('pageIcon', 'string');
|
|
this.initVar('current_page', 'string');
|
|
this.initVar('current_user', 'object');
|
|
this.initVar('profile_user', 'string');
|
|
this.initVar('code', 'integer');
|
|
this.initVar('proc_id', 'integer');
|
|
this.initVar('doc_id', 'integer');
|
|
this.initVar('phrase', 'string');
|
|
this.initVar('code_container', 'string');
|
|
this.initVar('focus', 'boolean', true);
|
|
this.initVar('disconnected', 'boolean');
|
|
this.initVar('mode', 'string', '');
|
|
this.initVar('search_words', 'string');
|
|
this.initVar('initLoaded', 'boolean');
|
|
this.initVar('chans_list', 'object');
|
|
|
|
//shortcuts
|
|
this.$main = this.vars.$main;
|
|
this.$menu = this.vars.$menu;
|
|
this.consts.pageMaxHeight = databap.$main.height();
|
|
this.consts.pageMaxWidth = databap.$main.width();
|
|
|
|
//Global Events Listeners
|
|
this.initSearch();
|
|
$('#form_header').submit(function(event){event.preventDefault();});
|
|
|
|
//Left menu
|
|
this.initMenu();
|
|
|
|
//Events handler
|
|
this.initEventHandlers();
|
|
$(document).keyup(function(e){databap.onKeyUp(e);});
|
|
$(document).keydown(function(e){databap.onKeyDown(e);});
|
|
$(document).mouseenter(function(){databap.onMouveEnter();});
|
|
$(document).mouseleave(function(){databap.onMouveLeave();});
|
|
$(window).unload(function(){databap.onQuit();});
|
|
//window.onbeforeunload = databap.onQuit;
|
|
$(window).resize(databap.resizeMain);
|
|
$(window).resize();
|
|
|
|
//load default page
|
|
defaultPage = databap.pages[(defaultPage in databap.pages)?defaultPage:'error'];
|
|
databap.switchPage(defaultPage, {}, true);
|
|
},
|
|
|
|
initVar: function(varName, type, defaultValue, bForceValue)
|
|
{
|
|
if(typeof databap.vars[varName] === 'undefined' || bForceValue)
|
|
{
|
|
switch(type)
|
|
{
|
|
case 'boolean' :databap.vars[varName] = false;break;
|
|
case 'string' :databap.vars[varName] = '';break;
|
|
case 'integer' :databap.vars[varName] = 0;break;
|
|
case 'array' :databap.vars[varName] = [];break;
|
|
case 'object' :databap.vars[varName] = {};break;
|
|
default:databap.vars[varName] = '';
|
|
}
|
|
if(defaultValue)
|
|
{
|
|
databap.vars[varName] = defaultValue;
|
|
}
|
|
}
|
|
},
|
|
|
|
tmp: function(sVarName, sType, oValue)
|
|
{
|
|
//Get
|
|
if(typeof sType === 'undefined')
|
|
{
|
|
return (typeof databap.vars.tmp[sVarName] !== 'undefined')?databap.vars.tmp[sVarName]:'error';
|
|
}
|
|
//Init
|
|
else if(sType && typeof databap.vars.tmp[sVarName] === 'undefined')
|
|
{
|
|
switch(sType)
|
|
{
|
|
case 'boolean' :databap.vars.tmp[sVarName] = false;break;
|
|
case 'string' :databap.vars.tmp[sVarName] = '';break;
|
|
case 'integer' :databap.vars.tmp[sVarName] = 0;break;
|
|
case 'array' :databap.vars.tmp[varName] = [];break;
|
|
case 'object' :databap.vars.tmp[sVarName] = {};break;
|
|
default:databap.vars.tmp[sVarName] = '';
|
|
}
|
|
if(oValue)
|
|
{
|
|
databap.vars.tmp[sVarName] = oValue;
|
|
}
|
|
return databap.vars.tmp[sVarName];
|
|
}
|
|
//Set
|
|
else if(typeof sType !== 'undefined' && typeof databap.vars.tmp[sVarName] !== 'undefined')
|
|
{
|
|
databap.vars.tmp[sVarName] = sType;
|
|
return databap.vars.tmp[sVarName];
|
|
}
|
|
return null;
|
|
},
|
|
|
|
initEventHandlers: function()
|
|
{
|
|
//Reset specific pages event catchers
|
|
databap.onResize = function(){};
|
|
databap.resetSize = function(){};
|
|
databap.onKeyUp = function(e){};
|
|
databap.onKeyDown = function(e){};
|
|
databap.onMouveEnter = function(){};
|
|
databap.onMouveLeave = function(){};
|
|
databap.onQuit = function(){};
|
|
},
|
|
|
|
initSearch: function()
|
|
{
|
|
$SearchInputBox = $('#form_header :input#query');
|
|
$SearchInputBox.val(databap.consts.search_box_text);
|
|
$SearchInputBox.css('color', databap.vars.search_words==''?'#D9E5F2':'#04357B');
|
|
$SearchInputBox.focus
|
|
(
|
|
function()
|
|
{
|
|
if($(this).val()==databap.consts.search_box_text) $(this).val('').css('color', '#04357B');
|
|
}
|
|
);
|
|
$SearchInputBox.blur
|
|
(
|
|
function()
|
|
{
|
|
if($(this).val()=='') $(this).val(databap.consts.search_box_text).css('color', '#D9E5F2');;
|
|
}
|
|
);
|
|
$SearchInputBox.keyup(function(e){databap.loadSearchPage();});
|
|
$('#form_header :input#search_btn_submit').click(function(){databap.loadSearchPage();});
|
|
},
|
|
|
|
initMenu: function()
|
|
{
|
|
databap.$menu.hover
|
|
(
|
|
databap.openMenu,
|
|
function()
|
|
{
|
|
//if(typeof closeMenu == 'undefined' || closeMenu != true)
|
|
//{
|
|
closeMenu = true;
|
|
if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);
|
|
oMenuTimer = setTimeout(databap.closeMenu, 1000);
|
|
//}
|
|
}
|
|
);
|
|
databap.$menu.find('#add_ln').click(function(){databap.loadAddPage();});
|
|
databap.$menu.find('#procedure_ln').click(function(){databap.loadProcedurePage();});
|
|
databap.$menu.find('#list_ln').click(function(){databap.loadListPage();});
|
|
databap.$menu.find('#profile_ln').click(function(){databap.loadProfilePage();});
|
|
databap.$menu.find('#chat_ln').click(function(){databap.loadChatPage();});
|
|
databap.$menu.find('#options_ln').click(function(){databap.loadOptionsPage();});
|
|
databap.$menu.find('#doc_ln').click(function(){databap.loadDocPage();});
|
|
databap.$menu.find('#log_me_out_ln').click(function(){databap.logMeOut();});
|
|
|
|
//Close menu on click
|
|
databap.$menu.find('li').click(function(){closeMenu=true;if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);databap.closeMenu();});
|
|
//databap.$menu.click(function(){closeMenu=true;if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);databap.closeMenu();});
|
|
},
|
|
|
|
openMenu: function()
|
|
{
|
|
//Disable closing
|
|
closeMenu = false;
|
|
if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);
|
|
|
|
//If not already opened / about to open
|
|
if(typeof openedMenu == 'undefined' || openedMenu != true)
|
|
{
|
|
openedMenu = true;
|
|
databap.$menu.find('#menu_title').hide();
|
|
|
|
//Main shadow
|
|
databap.$main.fadeTo('fast', 0.5);
|
|
|
|
//Switch useless button
|
|
databap.$menu.find('.useless_button').removeClass('round').addClass('tiny_top_right');
|
|
|
|
//Move menu items
|
|
var iVPos = Math.max(0, $(window).scrollTop() - 46 - 46);
|
|
databap.$menu.find('#menu_items').css('margin-top', iVPos);
|
|
|
|
//Expand menu
|
|
databap.$menu
|
|
.stop()
|
|
.animate
|
|
(
|
|
{width:'300px'/*, borderWidth:'10px'*/},
|
|
'fast',
|
|
function()
|
|
{
|
|
databap.$menu.find('#menu_box').show('fast');
|
|
}
|
|
);
|
|
}
|
|
},
|
|
|
|
closeMenu: function()
|
|
{
|
|
if(closeMenu == true)
|
|
{
|
|
if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);
|
|
|
|
//Switch uselecc button
|
|
databap.$menu.find('.useless_button').removeClass('tiny_top_right').addClass('round');
|
|
|
|
//Main shadow
|
|
databap.$main.fadeTo('fast', 1);
|
|
|
|
//Reduce menu
|
|
databap.$menu
|
|
.stop()
|
|
.animate
|
|
(
|
|
{width:'20px'/*, borderWidth:'0'*/},
|
|
'fast',
|
|
function()
|
|
{
|
|
databap.$menu.find('#menu_box').hide
|
|
(
|
|
'fast',
|
|
function()
|
|
{
|
|
databap.$menu.find('#menu_title').show('fast');
|
|
}
|
|
);
|
|
}
|
|
);
|
|
openedMenu = false;
|
|
closeMenu = false;
|
|
}
|
|
},
|
|
|
|
setInitEnd: function(bEnded, bAddScrollBar)
|
|
{
|
|
//debug('initLoaded='+bEnded);
|
|
databap.vars.initLoaded = bEnded;
|
|
if(databap.vars.initLoaded===true)
|
|
{
|
|
//this.resizeMain();
|
|
debug('resizing from setInitEnd');
|
|
databap.onResize();
|
|
//setTimeout(databap.onResize, 500);
|
|
}
|
|
},
|
|
|
|
addDefaultValue: function($elem, sDefaultValue)
|
|
{
|
|
$elem.val(sDefaultValue).css('color', '#D9E5F2');
|
|
$elem.focus
|
|
(
|
|
function()
|
|
{
|
|
if($(this).val()==sDefaultValue) $(this).val('').css('color', '#04357B');
|
|
}
|
|
);
|
|
$elem.blur
|
|
(
|
|
function()
|
|
{
|
|
if($(this).val()=="") $(this).val(sDefaultValue).css('color', '#D9E5F2');;
|
|
}
|
|
);
|
|
},
|
|
|
|
getMainElem:function(elem)
|
|
{
|
|
return databap.$main.find(elem);
|
|
},
|
|
|
|
logMeOut:function()
|
|
{
|
|
databap.getInfo('log_me_out', function(){document.location='';});
|
|
},
|
|
|
|
//switch to a new page with animation, without processing image
|
|
switchPage: function(sNextPage, vars, bNoFade)
|
|
{
|
|
switch_page = true;
|
|
|
|
//Init's Start
|
|
databap.setInitEnd(false);
|
|
|
|
if(vars===undefined)
|
|
{
|
|
vars = {};
|
|
}
|
|
databap.vars.loading = true;
|
|
$.get
|
|
(
|
|
databap.getPagePath(sNextPage),
|
|
vars,
|
|
function(data)
|
|
{
|
|
databap.vars.loading = false;
|
|
if(databap.vars.current_page!='') databap.onQuit();
|
|
databap.vars.current_page = sNextPage;
|
|
databap.setTitle();
|
|
databap.switchContent(data, bNoFade);
|
|
}
|
|
);
|
|
},
|
|
|
|
switchContent: function(sContent, bNoFade)
|
|
{
|
|
if(bNoFade === undefined)
|
|
{
|
|
//fadeout every elements
|
|
index=1;
|
|
var $elems = databap.$main.children();
|
|
var count = $elems.size();
|
|
|
|
$elems.fadeOut
|
|
(
|
|
'fast',
|
|
function()
|
|
{
|
|
$(this).remove();
|
|
if(index==count)
|
|
{
|
|
$(sContent).appendTo(databap.$main);
|
|
databap.loadInit();
|
|
}
|
|
else index++;
|
|
}
|
|
);
|
|
}
|
|
else if (bNoFade == true)
|
|
{
|
|
databap.$main.html(sContent);
|
|
databap.loadInit();
|
|
}
|
|
switch_page = false;
|
|
},
|
|
|
|
loadInit: function()
|
|
{
|
|
//save page icon
|
|
this.vars.pageIcon = this.pageIcon();
|
|
|
|
//Reset specific pages event catchers
|
|
this.initEventHandlers();
|
|
|
|
//Reset specific page variables
|
|
this.initVar('tmp', 'object', {}, true);
|
|
|
|
//Page specific Actions
|
|
this.pageInit();
|
|
},
|
|
|
|
pageIcon: function(pageIcon, comment)
|
|
{
|
|
var $title = this.getMainElem('h1');
|
|
if ($title.size() > 0)
|
|
{
|
|
if(!pageIcon)
|
|
{
|
|
var url = $title.css('backgroundImage');
|
|
var image = url.slice(url.lastIndexOf('/'));
|
|
image = image.substr(1, image.lastIndexOf(')') - 1);
|
|
if(image.substr(image.length-1, 1)=='"') image=image.substr(0, image.length - 1); //bug chrome
|
|
return image;
|
|
}
|
|
else
|
|
{
|
|
$title.css('backgroundImage', databap.getImagePath(pageIcon));
|
|
if(typeof comment !== undefined)
|
|
{
|
|
$title.attr('title', comment);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
addBufferIcon: function()
|
|
{
|
|
this.pageIcon('processing_48.gif', 'Processing...');
|
|
},
|
|
|
|
addSuccessIcon: function()
|
|
{
|
|
this.pageIcon('yes_48.png', 'Opération réussie');
|
|
setTimeout('databap.resetIcon()', 2000);
|
|
},
|
|
|
|
addFailIcon: function(sMsg)
|
|
{
|
|
if(!sMsg) sMsg = 'Echec de connexion. Essaie de refresh la page';
|
|
this.pageIcon('no_48.png', sMsg);
|
|
setTimeout('databap.resetIcon()', 5000);
|
|
},
|
|
|
|
resetIcon: function()
|
|
{
|
|
this.pageIcon(this.vars.pageIcon, '');
|
|
},
|
|
|
|
resizeMain: function()
|
|
{
|
|
//Back to the minimal size
|
|
//databap.$main.height('auto');
|
|
//databap.resetSize();
|
|
//debug('Resize Main triggered');
|
|
|
|
//Maximize main div height to fill up the page
|
|
var iPageHeight = $('body').outerHeight(true);
|
|
var iWindowHeight = $(window).outerHeight(true);
|
|
var iDelta = iWindowHeight - iPageHeight;
|
|
if(iDelta != 0)
|
|
{
|
|
databap.$main.height('+='+iDelta);
|
|
databap.vars.$menu.height(databap.$main.height());
|
|
}
|
|
|
|
//Update size
|
|
databap.consts.maxHeight = $(window).height();
|
|
databap.consts.maxWidth = $(window).width();
|
|
databap.consts.pageMaxHeight = databap.$main.height();
|
|
databap.consts.pageMaxWidth = databap.$main.width();
|
|
|
|
//Page event
|
|
debug('resizing from resizeMain');
|
|
databap.onResize();
|
|
},
|
|
|
|
saveForm: function(action, $form, fOnSuccess, bProcessIcon, dataType)
|
|
{
|
|
var sFormVars = $form.serialize();
|
|
if(typeof bProcessIcon != 'undefined') databap.addBufferIcon();
|
|
if(!dataType) dataType = 'text';
|
|
|
|
databap.vars.loading = true;
|
|
$.ajax
|
|
(
|
|
{
|
|
type: 'POST',
|
|
url: this.getActionLink(action),
|
|
data: sFormVars,
|
|
success:function(result)
|
|
{
|
|
databap.vars.loading = false;
|
|
databap.vars.disconnected = false;
|
|
if(typeof bProcessIcon != 'undefined') databap.resetIcon();
|
|
fOnSuccess(result);
|
|
},
|
|
error: function(jqXHR, textStatus, errorThrown)
|
|
{
|
|
databap.vars.loading = false;
|
|
databap.vars.disconnected = true;
|
|
debug('Error handler.js 331');
|
|
databap.showError(textStatus);
|
|
},
|
|
dataType: dataType
|
|
}
|
|
);
|
|
},
|
|
|
|
getInfo: function(action, fOnSuccess, vars, type, fOnError, bProcessIcon)
|
|
{
|
|
if(!vars) vars = {};
|
|
if(!type) type = 'html';
|
|
if(typeof bProcessIcon != 'undefined') databap.addBufferIcon();
|
|
|
|
vars['a'] = action;
|
|
databap.vars.loading = true;
|
|
$.ajax
|
|
(
|
|
{
|
|
url: databap.consts.process_url,
|
|
data: vars,
|
|
success:function(result)
|
|
{
|
|
if(result==databap.consts.disconnected) databap.goTo(databap.vars.current_page);
|
|
else if((result==databap.consts.error || typeof result.success != 'undefined' && result.success==databap.consts.error) && typeof fOnError !== 'undefined') fOnError();
|
|
else
|
|
{
|
|
databap.vars.loading = false;
|
|
databap.vars.disconnected = false;
|
|
if(typeof bProcessIcon != 'undefined') databap.resetIcon();
|
|
fOnSuccess(result);
|
|
}
|
|
},
|
|
error: function(jqXHR, textStatus, errorThrown)
|
|
{
|
|
if(jqXHR.responseText==databap.consts.disconnected) databap.goTo(databap.vars.current_page);
|
|
|
|
databap.vars.loading = false;
|
|
databap.vars.disconnected = true;
|
|
debug('Error handler.js 361');
|
|
if(typeof bProcessIcon != 'undefined') databap.resetIcon();
|
|
if(!fOnError)
|
|
{
|
|
databap.showError(textStatus);
|
|
debug(textStatus+' '+errorThrown);
|
|
}
|
|
else fOnError(textStatus);
|
|
},
|
|
dataType: type
|
|
}
|
|
);
|
|
},
|
|
|
|
getSyncInfo: function(action, vars)
|
|
{
|
|
if(!vars) vars = {};
|
|
vars['a'] = action;
|
|
return $.ajax
|
|
(
|
|
{
|
|
url: databap.consts.process_url,
|
|
type: "GET",
|
|
data: vars,
|
|
dataType: "html",
|
|
async:false,
|
|
success: function(r){debug('getSyncInfo: Ok');}
|
|
}
|
|
).responseText;
|
|
},
|
|
|
|
showError: function(textStatus)
|
|
{
|
|
//debug('ERROR : '+textStatus);
|
|
databap.addFailIcon();
|
|
},
|
|
|
|
getUserInfo: function(fOnSuccess)
|
|
{
|
|
if(typeof databap.vars.current_user.name == 'undefined')
|
|
{
|
|
databap.getInfo
|
|
(
|
|
'user_info',
|
|
function(user)
|
|
{
|
|
databap.vars.current_user = user;
|
|
fOnSuccess(user);
|
|
},
|
|
{},
|
|
'json'
|
|
);
|
|
}
|
|
else fOnSuccess(this.vars.current_user);
|
|
},
|
|
|
|
/* Loading Pages */
|
|
|
|
loadProfilePage: function()
|
|
{
|
|
databap.vars.profile_user = '';
|
|
databap.switchPage(databap.pages.profile);
|
|
},
|
|
|
|
loadChatPage: function()
|
|
{
|
|
databap.switchPage(databap.pages.chat);
|
|
},
|
|
|
|
loadOptionsPage: function()
|
|
{
|
|
databap.switchPage(databap.pages.options);
|
|
},
|
|
|
|
loadProcedurePage: function(iProcId)
|
|
{
|
|
//Reset display
|
|
databap.vars.mode = '';
|
|
this.vars.proc_id = 0;
|
|
|
|
//load new page
|
|
if(iProcId && iProcId>0)
|
|
{
|
|
this.vars.proc_id = iProcId;
|
|
}
|
|
databap.switchPage(databap.pages.procedure);
|
|
},
|
|
|
|
loadDocPage: function()
|
|
{
|
|
databap.vars.doc_id = 0;
|
|
databap.switchPage(databap.pages.doc);
|
|
},
|
|
|
|
loadAddPage: function ()
|
|
{
|
|
databap.switchPage(databap.pages.add_code);
|
|
},
|
|
|
|
loadListPage: function()
|
|
{
|
|
databap.switchPage(databap.pages.list);
|
|
},
|
|
|
|
loadReadPage: function(idCode)
|
|
{
|
|
databap.vars.code = idCode;
|
|
databap.switchPage(databap.pages.read_code);
|
|
},
|
|
|
|
loadSearchPage: function ()
|
|
{
|
|
if(databap.vars.current_page != databap.pages.search)
|
|
{
|
|
searchedWords = '';
|
|
databap.switchPage(databap.pages.search);
|
|
}
|
|
else
|
|
{
|
|
databap.search();
|
|
}
|
|
},
|
|
|
|
search:function()
|
|
{
|
|
//search words
|
|
var searchWords = $.trim($('#query').val());
|
|
|
|
//check already searched words
|
|
if((window.searchedWords === undefined || searchedWords!=searchWords) && searchWords.length > 2)
|
|
{
|
|
//filter requests to not flood the server
|
|
if(window.tempWords !== undefined && tempWords == searchWords && !databap.vars.loading)
|
|
{
|
|
//debug('launching search for : '+searchWords);
|
|
|
|
//saving searched words
|
|
searchedWords = searchWords;
|
|
|
|
databap.addBufferIcon();
|
|
databap.getInfo
|
|
(
|
|
'search',
|
|
function(asItems)
|
|
{
|
|
$Container = databap.$main.find('#list_container');
|
|
$Container.empty();
|
|
if(asItems.length==0)
|
|
{
|
|
$Container.append('Aucun résultat trouvé.');
|
|
}
|
|
else
|
|
{
|
|
for(iRankId in asItems) databap.appendItem(asItems[iRankId], $Container);
|
|
}
|
|
databap.addSuccessIcon();
|
|
},
|
|
{keywords:searchWords},
|
|
'json'
|
|
);
|
|
}
|
|
else
|
|
{
|
|
//debug('delayed for checking : '+searchWords);
|
|
tempWords = searchWords;
|
|
setTimeout('databap.loadSearchPage()', 500);
|
|
}
|
|
}
|
|
//else debug('same words');
|
|
},
|
|
|
|
appendItem: function(asItemInfo, $Container)
|
|
{
|
|
//Filling up the item line
|
|
$verHtml = $(databap.consts.versionHtml);
|
|
$verHtml.find('#description').html(asItemInfo.description);
|
|
$verHtml.find('#author_name').html(asItemInfo.name);
|
|
$verHtml.find('#author_company').html(asItemInfo.company);
|
|
$verHtml.find('#led').html(asItemInfo.led);
|
|
|
|
//Link
|
|
var sItemLink = databap.getExternalLink(asItemInfo.type, asItemInfo.id_item);
|
|
$verHtml.find('#item_link').attr('href', sItemLink).attr('title', 'Lien vers '+sItemLink);
|
|
$verHtml = databap.setElemTags($verHtml, asItemInfo.id_item, false, asItemInfo.type);
|
|
|
|
//Display
|
|
$verHtml.hide().appendTo(databap.getMainElem('#list_container')).slideDown('fast');
|
|
},
|
|
|
|
getCodeLink: function(code)
|
|
{
|
|
return databap.getExternalLink('code', code);
|
|
},
|
|
|
|
getProcLink: function(nb)
|
|
{
|
|
return databap.getExternalLink('proc', nb);
|
|
},
|
|
|
|
getExternalLink: function(page, id)
|
|
{
|
|
return databap.vars.serv_name+page+'-'+escape($.trim(id));
|
|
},
|
|
|
|
appendCode: function(codeBox, info)
|
|
{
|
|
databap.vars.code = info.id_code;
|
|
databap.vars.phrase = (!info.phrase)?info.id_code:info.phrase;
|
|
//#code_reader
|
|
$codeBox = databap.setElemTags($(codeBox), [databap.vars.code]);
|
|
|
|
//About code
|
|
databap.getMainElem('#'+databap.getElemTag('code_lines', databap.vars.code)).html(info.code);
|
|
databap.getMainElem('#'+databap.getElemTag('description', databap.vars.code)).html(info.description);
|
|
|
|
//About author
|
|
databap.getMainElem('#'+databap.getElemTag('author_name', databap.vars.code)).text(info.name);
|
|
databap.getMainElem('#'+databap.getElemTag('author_company', databap.vars.code)).text(info.company);
|
|
databap.getMainElem('#'+databap.getElemTag('led', databap.vars.code)).text(info.led);
|
|
},
|
|
|
|
setElemTags: function($CodeBox, aiIds, bUpdate, sType)
|
|
{
|
|
databap.setElemTag($CodeBox, aiIds, bUpdate, sType);
|
|
$CodeBox.find('[id]').each(function(){databap.setElemTag($(this), aiIds, bUpdate, sType);});
|
|
return $CodeBox;
|
|
},
|
|
|
|
setElemTag: function($Tag, aiIds, bUpdate, sType)
|
|
{
|
|
var sCurTagId = $Tag.attr('id');
|
|
|
|
//Replace only ids existing in aiIds, keep the others
|
|
if(bUpdate)
|
|
{
|
|
var aiCurTagIds = this.getElemIds(sCurTagId);
|
|
for(i in aiIds)
|
|
{
|
|
aiCurTagIds[i] = aiIds[i];
|
|
}
|
|
aiIds = aiCurTagIds;
|
|
}
|
|
|
|
var sNewTagId = databap.getElemTag(databap.stripElemIds(sCurTagId), aiIds, sType);
|
|
|
|
$Tag.attr('id', sNewTagId);
|
|
if($Tag.attr('name') != undefined) $Tag.attr('name', sNewTagId);
|
|
},
|
|
|
|
getElemTag: function(sTag, aiIds, sType)
|
|
{
|
|
if(!sType) sType = 'c';
|
|
if(typeof aiIds != 'object') aiIds = [aiIds];
|
|
return sType+implode(databap.consts.id_sep, aiIds)+databap.consts.id_sep+sTag;
|
|
},
|
|
|
|
getFirstElemId: function(sTag)
|
|
{
|
|
var aiIds = this.getElemIds(sTag);
|
|
return aiIds[0];
|
|
},
|
|
|
|
getElemIds: function(sTag)
|
|
{
|
|
return array_filter(explode(databap.consts.id_sep, sTag.substr(1)), isNumeric);
|
|
},
|
|
|
|
stripElemIds: function(sTag)
|
|
{
|
|
//var sPattern = 'c\\d+'+databap.consts.id_sep;
|
|
var sType = sTag.substr(0, 1);
|
|
var sPattern = this.getElemTag('', '\\d+', sType);
|
|
if(this.checkRegExMatch(sPattern, sTag))
|
|
{
|
|
sTag = sTag.substr(this.getElemTag('', this.getElemIds(sTag), sType).length);
|
|
}
|
|
return sTag;
|
|
},
|
|
|
|
checkRegExMatch: function(sPattern, sText)
|
|
{
|
|
var oRegEx = new RegExp(sPattern, 'i');
|
|
return sText.match(oRegEx);
|
|
},
|
|
|
|
setCodeContainer: function(fOnSuccess, containerId)
|
|
{
|
|
if(typeof databap.vars.code_container === 'undefined' || databap.vars.code_container == '')
|
|
{
|
|
databap.getInfo
|
|
(
|
|
'code_block',
|
|
function(code_block)
|
|
{
|
|
databap.vars.code_container = code_block;
|
|
if(containerId) databap.appendContainer(containerId);
|
|
fOnSuccess();
|
|
}
|
|
);
|
|
}
|
|
else
|
|
{
|
|
if(containerId) databap.appendContainer(containerId);
|
|
fOnSuccess();
|
|
}
|
|
},
|
|
|
|
appendContainer: function(containerId, codeId)
|
|
{
|
|
if(containerId != '')
|
|
{
|
|
if(!codeId)
|
|
{
|
|
codeBoxId = 'code_reader';
|
|
container = databap.vars.code_container;
|
|
}
|
|
else
|
|
{
|
|
codeBoxId = databap.getElemTag('code_reader', codeId);
|
|
container = databap.vars.code_container.replace('id="code_reader"', 'id="'+codeBoxId+'"');
|
|
}
|
|
databap.getMainElem(containerId).append(container);
|
|
return codeBoxId;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
},
|
|
|
|
getImagePath: function(imageName)
|
|
{
|
|
return 'url("'+databap.consts.app_image_folder+imageName+'")';
|
|
},
|
|
|
|
getPagePath: function(sPageName)
|
|
{
|
|
return databap.consts.mask_folder+sPageName+'.html?'+databap.consts.time;
|
|
},
|
|
|
|
addErrorBefore: function(msg, elem)
|
|
{
|
|
var msg = 'Erreur : '+msg+'.';
|
|
databap.addMsgBefore(msg, 'error', elem);
|
|
},
|
|
|
|
addWarningBefore: function(msg, elem)
|
|
{
|
|
var msg = 'Attention : '+msg+'.';
|
|
databap.addMsgBefore(msg, 'warning', elem);
|
|
},
|
|
|
|
addSuccessBefore: function(msg, elem)
|
|
{
|
|
var msg = 'Succès : '+msg+'.';
|
|
databap.addMsgBefore(msg, 'success', elem);
|
|
},
|
|
|
|
addMsgBefore: function(msg, msgClass, elem)
|
|
{
|
|
var $msg = $('<p class="'+msgClass+'">'+msg+'</p>');
|
|
$msg.hide().insertBefore(elem).slideDown('fast').delay(5000).slideUp('fast', function(){$(this).remove();});
|
|
},
|
|
|
|
setTitle: function(extra)
|
|
{
|
|
if(!extra)
|
|
{
|
|
extra = '';
|
|
}
|
|
else
|
|
{
|
|
extra = extra+' | ';
|
|
}
|
|
var page = ucwords(databap.vars.current_page.replace('_', ' '));
|
|
document.title = extra+'Databap '+chr('8226')+' '+page;
|
|
},
|
|
|
|
goTo: function(page)
|
|
{
|
|
window.location = this.getPageLink(page);
|
|
},
|
|
|
|
getPageLink: function(page)
|
|
{
|
|
return this.vars.serv_name+'?p='+page;
|
|
},
|
|
|
|
getActionLink: function(sAction, oVars)
|
|
{
|
|
if(!oVars) oVars = {};
|
|
sVars = '';
|
|
for(i in oVars)
|
|
{
|
|
sVars += '&'+i+'='+oVars[i];
|
|
}
|
|
return this.consts.process_url+'?a='+sAction+sVars;
|
|
}
|
|
};
|
|
|
|
/* general methods */
|
|
|
|
String.prototype.stripVowelAccent = function()
|
|
{
|
|
var sText = this;
|
|
var rExps=
|
|
[
|
|
{re:/[\xC0-\xC6]/g, ch:'A'},
|
|
{re:/[\xE0-\xE6]/g, ch:'a'},
|
|
{re:/[\xC8-\xCB]/g, ch:'E'},
|
|
{re:/[\xE8-\xEB]/g, ch:'e'},
|
|
{re:/[\xCC-\xCF]/g, ch:'I'},
|
|
{re:/[\xEC-\xEF]/g, ch:'i'},
|
|
{re:/[\xD2-\xD6]/g, ch:'O'},
|
|
{re:/[\xF2-\xF6]/g, ch:'o'},
|
|
{re:/[\xD9-\xDC]/g, ch:'U'},
|
|
{re:/[\xF9-\xFC]/g, ch:'u'},
|
|
{re:/[\xD1]/g, ch:'N'},
|
|
{re:/[\xF1]/g, ch:'n'}
|
|
];
|
|
for(var i=0, len=rExps.length; i<len; i++)
|
|
{
|
|
sText=sText.replace(rExps[i].re, rExps[i].ch);
|
|
}
|
|
return sText;
|
|
};
|
|
|
|
String.prototype.replaceAll = function(regex, text)
|
|
{
|
|
return this.replace(new RegExp(regex, 'g'), text);
|
|
};
|
|
|
|
function switchValue(elem, value)
|
|
{
|
|
sValue = elem.val();
|
|
if(sValue == value)
|
|
{
|
|
elem.val('');
|
|
}
|
|
else if(sValue == '')
|
|
{
|
|
elem.val(value);
|
|
}
|
|
}
|
|
|
|
function clearDefaultValue(elem, value)
|
|
{
|
|
if(elem.val() == value)
|
|
{
|
|
elem.val('');
|
|
}
|
|
}
|
|
|
|
function expand($eventElem)
|
|
{
|
|
var tag = '.'+$eventElem.attr('id').substr(7);
|
|
if($eventElem.hasClass('minus'))
|
|
{
|
|
$eventElem.removeClass('minus');
|
|
$eventElem.addClass('plus');
|
|
$(tag).hide('fast');
|
|
}
|
|
else
|
|
{
|
|
$eventElem.removeClass('plus');
|
|
$eventElem.addClass('minus');
|
|
$(tag).show('fast');
|
|
}
|
|
}
|
|
|
|
function array_filter(arr, func)
|
|
{
|
|
var retObj = {}, k;
|
|
for(k in arr)
|
|
{
|
|
if(func(arr[k]))
|
|
{
|
|
retObj[k] = arr[k];
|
|
}
|
|
}
|
|
|
|
return retObj;
|
|
}
|
|
|
|
function isNumeric(input)
|
|
{
|
|
return (input - 0) == input && input.length > 0;
|
|
}
|
|
|
|
function ucwords(text)
|
|
{
|
|
return (t = text + '').replace
|
|
(
|
|
/^([a-z])|\s+([a-z])/g,
|
|
function($1)
|
|
{
|
|
return $1.toUpperCase();
|
|
}
|
|
);
|
|
}
|
|
|
|
function getTimeString()
|
|
{
|
|
var currentTime = new Date();
|
|
var hours = currentTime.getHours();
|
|
var minutes = currentTime.getMinutes();
|
|
var secondes = currentTime.getSeconds();
|
|
|
|
hours = sprintf(hours, 2, '0');
|
|
minutes = sprintf(minutes, 2, '0');
|
|
secondes = sprintf(secondes, 2, '0');
|
|
|
|
return hours+':'+minutes+':'+secondes;
|
|
}
|
|
|
|
function sprintf(value, length, char)
|
|
{
|
|
var buffer = '';
|
|
missingCharsNb = Math.max(0, length - value.length);
|
|
for(var i=0;i<=missingCharsNb;i++)
|
|
{
|
|
buffer += char;
|
|
}
|
|
|
|
return buffer+value;
|
|
}
|
|
|
|
function chr(codePt)
|
|
{
|
|
if (codePt > 0xFFFF)
|
|
{
|
|
return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 + (codePt & 0x3FF));
|
|
}
|
|
return String.fromCharCode(codePt);
|
|
}
|
|
|
|
function explode(delimiter, string, limit)
|
|
{
|
|
var emptyArray = {0:''};
|
|
|
|
if(arguments.length < 2 || typeof arguments[0] == 'undefined' || typeof arguments[1] == 'undefined') {return null;}
|
|
|
|
if(delimiter === '' || delimiter === false || delimiter === null) {return false;}
|
|
|
|
if(typeof delimiter == 'function' || typeof delimiter == 'object' || typeof string == 'function' || typeof string == 'object') {return emptyArray;}
|
|
|
|
if(delimiter === true) {delimiter = '1';
|
|
}
|
|
|
|
if(!limit) {return string.toString().split(delimiter.toString());}
|
|
else
|
|
{
|
|
// support for limit argument
|
|
var splitted = string.toString().split(delimiter.toString());
|
|
var partA = splitted.splice(0, limit - 1);
|
|
var partB = splitted.join(delimiter.toString());
|
|
partA.push(partB);
|
|
return partA;
|
|
}
|
|
}
|
|
|
|
function implode(glue, pieces)
|
|
{
|
|
var i = '', retVal = '', tGlue = '';
|
|
|
|
if(arguments.length === 1)
|
|
{
|
|
pieces = glue;
|
|
glue = '';
|
|
}
|
|
|
|
if(typeof(pieces) === 'object')
|
|
{
|
|
if(pieces instanceof Array)
|
|
{
|
|
return pieces.join(glue);
|
|
}
|
|
else
|
|
{
|
|
for (i in pieces)
|
|
{
|
|
retVal += tGlue + pieces[i];
|
|
tGlue = glue;
|
|
}
|
|
return retVal;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return pieces;
|
|
}
|
|
}
|
|
|
|
function file_exists(url)
|
|
{
|
|
var req = this.window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
|
|
if(!req)
|
|
{
|
|
throw new Error('XMLHttpRequest not supported');
|
|
}
|
|
|
|
// HEAD Results are usually shorter (faster) than GET
|
|
req.open('HEAD', url, false);
|
|
req.send(null); if (req.status == 200)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function basename(path, suffix)
|
|
{
|
|
var b = path.replace(/^.*[\/\\]/g, '');
|
|
if (typeof(suffix) == 'string' && b.substr(b.length - suffix.length) == suffix)
|
|
{
|
|
b = b.substr(0, b.length - suffix.length);
|
|
}
|
|
return b;
|
|
}
|
|
|
|
/*
|
|
//Queue element
|
|
(
|
|
function($)
|
|
{
|
|
$.fn.delaying = function(delay, reloadAction, minLength)
|
|
{
|
|
var options={delay:delay, reload_action:reloadAction, min_length:minLength};
|
|
this.each
|
|
(
|
|
function()
|
|
{
|
|
$(this).data('tsb',new Delayer($(this), options));
|
|
}
|
|
);
|
|
return this;
|
|
};
|
|
|
|
function Delayer(elem, options)
|
|
{
|
|
var self = this;
|
|
var delays, min_length, previous_values,
|
|
temp_values, reload_action, processing_requests;
|
|
|
|
this.init = function()
|
|
{
|
|
delays = options.delay;
|
|
min_length = options.min_length;
|
|
previous_values = '';
|
|
temp_values = '';
|
|
reload_action = options.reload_action;
|
|
processing_requests = false;
|
|
};
|
|
|
|
this.request = function(val)
|
|
{
|
|
var requestOk = false;
|
|
|
|
//Prevent from loading request with too few elements or twice the same request
|
|
if(val.length > queue.min_length[id] && val != queue.previous_values[id])
|
|
{
|
|
//Prevent from spamming server with requests and wait for value stabilization
|
|
if(queue.processing_requests[id] == false && val == queue.temp_values[id])
|
|
{
|
|
queue.previous_values[id] = val;
|
|
requestOk = true;
|
|
}
|
|
else
|
|
{
|
|
queue.temp_values[id] = val;
|
|
setTimeout(queue.reload_action[id], queue.delays[id]);
|
|
}
|
|
}
|
|
return requestOk;
|
|
};
|
|
}
|
|
|
|
|
|
|
|
}
|
|
)
|
|
(jQuery);
|
|
*/
|
|
|
|
function debug(text, bQuery)
|
|
{
|
|
if(window.console) console.log(text);
|
|
}
|