127 lines
5.0 KiB
JavaScript
127 lines
5.0 KiB
JavaScript
let _trace_bin=[];
|
|
const utils = {
|
|
/* To avoid checking element and global css tasks handling
|
|
utils.css('toggle','main-header','',document,'h-10!')
|
|
utils.css('get','img','tag:3')
|
|
*/
|
|
css: (task, css_target, typ='object', root=document, css_name=['hidden'] ) => {
|
|
let target = typeof css_target == 'string' ? undefined : css_target;
|
|
let is_array = false;
|
|
const elem_toggle = (elem, css_class) => {
|
|
if (elem.classList) {
|
|
if (elem.classList.contains(css_class)) {
|
|
elem.classList.remove(css_class);
|
|
} else {
|
|
elem.classList.add(css_class);
|
|
}
|
|
}
|
|
}
|
|
let css_typ = typ;
|
|
if (task == 'get' && typ === 'object') { css_typ='id';}
|
|
let pos = -1;
|
|
if (css_typ.includes(':')) {
|
|
const arr_css = typ.split(':');
|
|
css_typ = arr_css[0];
|
|
pos = arr_css[1];
|
|
}
|
|
if (typeof target === 'undefined') {
|
|
switch(css_typ) {
|
|
case 'object':
|
|
case 'id':
|
|
target = document.getElementById(css_target);
|
|
break;
|
|
case 'class':
|
|
if (root.getElementsByClassName) {
|
|
is_array=true;
|
|
if (pos != -1) {
|
|
const class_targets = root.getElementsByClassName(css_target);
|
|
if (class_targets && class_targets[pos]) { target = class_targets[pos]; }
|
|
} else {
|
|
target = root.getElementsByClassName(css_target);
|
|
}
|
|
}
|
|
break;
|
|
case 'tag':
|
|
if (root.getElementsByClassName) {
|
|
is_array=true;
|
|
if (pos != -1) {
|
|
const tag_targets = root.getElementsByTagName(css_target);
|
|
if (tag_targets && tag_targets[pos]) { target = tag_targets[pos]; }
|
|
} else {
|
|
target = root.getElementsByTagName(css_target);
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
target = document.getElementById(css_target);
|
|
}
|
|
}
|
|
if (target) {
|
|
if (typeof target.classList == 'undefined') { is_array = true;}
|
|
switch (task) {
|
|
case 'get':
|
|
return target;
|
|
break;
|
|
case 'is_add':
|
|
case 'is_hide':
|
|
if (is_array) {
|
|
return target[0].classList && target[0].classList.contains(css_name) ? true : false;
|
|
} else {
|
|
return target.classList && target.classList.contains(css_name) ? true : false;
|
|
}
|
|
break;
|
|
case 'add':
|
|
case 'hide':
|
|
if (is_array) {
|
|
[...target].forEach(it => { if (it.classList) { it.classList.add(css_name);} });
|
|
} else {
|
|
if (target.classList) target.classList.add(css_name);
|
|
}
|
|
return target;
|
|
break;
|
|
case 'remove':
|
|
case 'show':
|
|
if (is_array) {
|
|
[...target].forEach(it => { if (it.classList) { it.classList.remove(css_name);} } );
|
|
} else {
|
|
if (target.classList) target.classList.remove(css_name);
|
|
}
|
|
return target;
|
|
break;
|
|
case 'is_show':
|
|
case 'is_show':
|
|
if (is_array) {
|
|
return target[0].classList && !target[0].classList.contains(css_name) ? true : false;
|
|
} else {
|
|
return target.classList && !target.classList.contains(css_name) ? true : false;
|
|
}
|
|
break;
|
|
case 'toggle':
|
|
if (is_array) {
|
|
[...target].forEach(it => elem_toggle(it, css_name));
|
|
} else {
|
|
elem_toggle(target, css_name);
|
|
}
|
|
return target;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
return target;
|
|
},
|
|
update_session: async (data) => {
|
|
if (UPDATE_SESSION_URL) {
|
|
const response = await fetch(UPDATE_SESSION_URL, {
|
|
method: 'POST',
|
|
body: JSON.stringify(data),
|
|
headers: {
|
|
'Content-type': 'application/json; charset=UTF-8',
|
|
}
|
|
});
|
|
if (!response.ok && response.status != 200 ) {
|
|
throw new Error('Update session was not OK');
|
|
return false;
|
|
}
|
|
}
|
|
},
|
|
}; |