/* ########## Tell (copyright e2see.de) ##########
*/
$.fn.tell_connect = function(){
var thisOb = this;
if (thisOb.is('[data-tell-name]')){
var mainElem = thisOb,
name = mainElem.attr('data-tell-name'),
container = mainElem.closest('form');
if (container.length != 1){
var container = $('body');
}
if (mainElem.is('[data-tell-value]')){
// setze value ins form element
var value = mainElem.attr('data-tell-value'),
nameArr = name.split('|'),
valueArr = value.split('|');
$.each(nameArr, function(i, iName){
var targetElemList = container.find('input[name="'+iName+'"], select[name="'+iName+'"]');
mainElem.on('click.tell', function(){
var clickedElemValue = '';
if (i in valueArr){
clickedElemValue = valueArr[i];
}
targetElemList.each(function(){
if ($(this).is('select')){
var rightOption = $(this).find('option[value="'+clickedElemValue+'"]');
if (rightOption.length == 1){
$(this).val( clickedElemValue );
$(this).trigger('change');
$(this).trigger('tell.set');
}
} else if ($(this).is('input[type="checkbox"], input[type="radio"]')){
if ($(this).val() == clickedElemValue){
$(this).prop('checked', true);
$(this).trigger('change');
$(this).trigger('tell.set');
}
} else {
$(this).val( clickedElemValue );
$(this).trigger('change');
$(this).trigger('tell.set');
}
});
});
});
} else {
mainElem.attr('data-tell-content', 'clear');
//setze formvalue ins textelement
var targetElemList = container.find('input[name="'+name+'"], select[name="'+name+'"]');
setTimeout(function(){
/* damit document ready die später kommen hören könenn*/
targetElemList.eq(-1).tell_initText(mainElem, container); /*nur letzte sehr wichtig für vorschau, wegen array postnamen*/
}, 20);
targetElemList.each(function(){
if ($(this).is('select')){
$(this).on('change.tell', function(){
$(this).tell_initText(mainElem, container);
});
} else if ($(this).is('input[type="checkbox"], input[type="radio"]')){
$(this).on('change.tell', function(){
$(this).tell_initText(mainElem, container);
});
} else {
$(this).on('change.tell', function(){
$(this).tell_initText(mainElem, container);
});
}
});
}
}
}
$.fn.tell_initText = function(textElem, container){
var txt = '';
var formElem = $(this);
var formElemName = formElem.attr('name');
var previewBox = container.find('.tell').filter('[data-tell-preview="'+ formElemName +'"]');
if (previewBox.length > 0){
previewBox.empty();
}
if (formElem.is('[name$="[]"]')){
// name ist ein array element, nimm alle
formElemList = container.find('input,select,textarea').filter('[name="'+formElemName+'"]');
} else {
formElemList = formElem;
}
var arrTxt = [];
var arrFileCount = [];
var arrFileSize = [];
var arrFileList = [];
var arrFileBase64List = [];
formElemList.each(function(){
var txt = false;
if ($(this).is('select')){
var el = $(this).find('option[value="'+ $(this).val() +'"]').eq(0);
if (el.is('[data-tell]')){
txt = el.attr('data-tell');
} else {
txt = el.text();
}
if (txt != false){
arrTxt.push(txt);
}
} else if ($(this).is('input[type="checkbox"], input[type="radio"]')){
if ($(this).is(':checked')){
if ($(this).is('[data-tell]')){
txt = $(this).attr('data-tell');
}else if ($(this).parent('label').length == 1){
txt = $(this).parent('label').text();
}
}
if (txt != false){
arrTxt.push(txt);
}
} else if ($(this).is('input[type="range"]')){
if ($(this).val() != ''){
txt = $(this).val();
} else {
txt = 'drg';
}
arrTxt.push(txt);
} else if ($(this).is('input[type="file"]')){
var txt = '';
if ($(this).is('[data-tell]')){
txt = $(this).attr('data-tell');
} else {
var allCount = 0;
if ($(this)[0].files.length > 0){
arrFileCount.push($(this)[0].files.length);
$.each($(this)[0].files, function(key, fl){
// wenn meherer datein im input vorhanden
if (fl) {
arrFileSize.push(fl.size);
arrFileList.push(fl.name);
if (previewBox.length > 0){
/*#########################################################*/
var $thmb = $('');
if (fl.type.match('image.*')) {
// wenn bild
var reader = new FileReader();
reader.readAsDataURL(fl);
$thmb.appendTo(previewBox);
reader.addEventListener('load', function(){
$thmb.removeClass('tell-loading').css('background-image', 'url('+reader.result+')');
}, false);
} else {
//wenn kein bild
$thmb.removeClass('tell-loading').html(fl.name).appendTo(previewBox);
}
}
}
});
}
}
} else {
if ($(this).val() != ''){
txt = $(this).val();
}
if (txt != false){
arrTxt.push(txt);
}
}
});
if (formElem.is('[type="file"]')){
var completeCount = 0;
for (var i = 0; i < arrFileCount.length; i++) {
completeCount = completeCount + arrFileCount[i];
}
var completeSize = 0;
for (var i = 0; i < arrFileSize.length; i++) {
completeSize = completeSize + arrFileSize[i];
}
if (completeSize > 1000000000){
var sizeText = (completeSize / 1000000000).toFixed(2) + ' GB';
} else if (completeSize > 1000000){
var sizeText = (completeSize / 1000000).toFixed(2) + ' MB';
} else{
var sizeText = (completeSize / 1000).toFixed(2) + ' KB';
}
var endText = 'en';
if (completeCount == 1){
endText = '';
}
if (completeCount == 0){
textElem.attr('data-tell-content', 'clear');
textElem.text('');
textElem.trigger('tell.clear');
} else {
textElem.attr('data-tell-content', 'set');
textElem.text(completeCount+' Datei'+endText+' / '+sizeText);
textElem.trigger('tell.set', {
text: completeCount+' Datei'+endText+' / '+sizeText,
count: completeCount,
size: completeSize,
fileList: arrFileList,
fileBase64List:arrFileBase64List,
});
}
} else {
var completeTxt = arrTxt.join(', ');
textElem.text(completeTxt);
if (completeTxt == ''){
textElem.attr('data-tell-content', 'clear');
textElem.trigger('tell.clear');
} else {
textElem.attr('data-tell-content', 'set');
textElem.trigger('tell.set', {
text: completeTxt,
textList: arrTxt
});
}
}
}
/* cdn 1ms */