/*........./components/item_table/item_table.js......*/
item_tableTemplete = document.createElement(`yeagerbot`);
ajax("get", "inc/components/item_table/item_table.html", item_tableLoadTemp);
class cls_item_table_wrapper extends HTMLElement {
constructor() {
super();
// this.attachShadow({mode:'open'});
// this.style.display = "none"
// setTimeout(this.loadData,1000,this);
this.loadData(this)
}
async loadData(obj) { //
//
let newObj = [];
let data = JSON.parse(obj.getAttribute("data"));
if(data==null)return;
let showHeaders=obj.getAttribute("showHeaders")||false
let headerRow = document.createElement("div");
headerRow.classList.add("tableHeader")
let Table = item_tableTemplete.querySelector(".item_table__mainBox").cloneNode(true);
if (Table==null) return;
Array.prototype.forEach.call(Object.values(data), async row => {
let itemRow, item;
itemRow = document.createElement("div");
itemRow.classList.add("tableRow");
if (headerRow.innerHTML == "" && showHeaders) {
for (let x of Object.keys(row)) {
item = document.createElement("div");
item.classList.add("tableCellHeader");
item.setAttribute("id",x);
item.innerHTML = x;
await headerRow.appendChild(item)
}
await Table.appendChild(headerRow)
}
for (let x of Object.values(row)) {
item = document.createElement("div");
item.classList.add("tableCellValue")
item.innerHTML = x;
await itemRow.appendChild(item)
}
await itemRow.appendChild(item_tableTemplete.querySelector(".item_table__toolBox").cloneNode(true))
await Table.appendChild(itemRow)
});
if (typeof data == "undefined") return;
obj.innerHTML = "";
obj.appendChild(item_tableTemplete.querySelector("link").cloneNode(true))
//obj.appendChild(obj.parentElement.querySelector("link").cloneNode(true))
obj.appendChild(Table);
obj.style.display = "";
if(this.getAttribute("allNew")=="true"){
let item =document.createElement("div");
item.innerHTML=`
new`;
await Table.appendChild(item)
}
}
}
function item_tableLoadTemp(retobj, arg) {
item_tableTemplete.innerHTML = retobj.responseText;
//console.log(UserServerTemplete);
item_tableReady()
}
function item_tableReady() {
window.customElements.define("item-table", cls_item_table_wrapper);
}
/*........./components/check-list/check-list.js......*/
class cls_check_list_wrapper extends HTMLElement {
constructor(){
super();
// this.attachShadow({mode:'open'});
this.style.display="none"
setTimeout(this.loadData,1000,this);
}
async loadData(obj){//
//
let newObj=[];
await getTarget();
let data=window.Channels[myP.m][obj.getAttribute("data")];
if (typeof data=="undefined") return;
let idKey=obj.getAttribute("idKey");
let valueKey=obj.getAttribute("valueKey");
let bigW=document.createElement("div")
let inputName=obj.getAttribute("name");
let name=(obj.getAttribute("name")+"Wrapper");
let data_org=obj.getAttribute("data-org");
let tag=obj.getAttribute("tag");
bigW.classList.add("flexCheckBox");
let baseval=[];
baseval.channelName="No-Options";
baseval.ChannelID="";
baseval.roleName="No-Options";
baseval.roleID="";
if(data.length==0) data.unshift(baseval);
for(let x of data){
let p=document.createElement(`p`);
let input=document.createElement(`input`);
let label=document.createElement(`label`);
p.classList.add("flexCheckBoxItem");
input.setAttribute("name",inputName);
input.setAttribute("type","checkbox");
let id=(typeof tag !="undefined" && (tag==false ||tag.toLowerCase()=='false'))? x[idKey].replace("@","").replace("#","").replace("&","") : x[idKey];
input.setAttribute("value",id)
if(data_org.includes(id)) input.setAttribute("checked","")
input.setAttribute("id",id)
label.setAttribute("for",id)
label.innerHTML=x[valueKey]
p.appendChild(input);
p.appendChild(label);
bigW.appendChild(p);
}
orderSelectChecked(bigW,true);
obj.appendChild(bigW);
obj.style.display="";
}
}
window.customElements.define("check-list", cls_check_list_wrapper);
/*........./elements/userProfile/userProfile.js......*/
UserProfleTemplete=document.createElement(`yeagerbot`);
ajax("get","inc/elements/userProfile/userProfile.html",userProfileLoadTemp);
class cls_userProfile extends HTMLElement {
constructor(){
super();
this.attachShadow({mode:'open'});
this.shadowRoot.appendChild(UserProfleTemplete.cloneNode(true));
if(userData!=null && typeof userData=="object"){
this.shadowRoot.querySelector('#userName').innerText=userData.username;
this.shadowRoot.querySelector('#img').src="https://cdn.discordapp.com/avatars/" + userData.id + "/" + userData.avatar + ".png";
let imgURL="https://cdn.discordapp.com/banners/" + userData.id + "/" + userData.banner + ".png"
this.shadowRoot.querySelector('#userWrapper').style=`background-image: url(${imgURL})`;
}
}
setValues(obj, values){
}
}
function userProfileLoadTemp(retobj,arg){
// console.log(retobj);
//console.log("inside loadTemp");
if (myP.show && myP.show.toLowerCase()=='help') return;
UserProfleTemplete.innerHTML=retobj.responseText;
ajax("get","inc/elements/userProfile/userProfile.php",userProfileReady);
}
function userProfileReady(retobj, arg){
if(typeof retobj.responseText=="string"){
userData=JSON.parse(retobj.responseText);
window.customElements.define("user-profile", cls_userProfile);
}
}
/*........./elements/help/help.js......*/
var urlParams = new URLSearchParams(window.location.search);
myP = {};
myP.m = urlParams.get('m');
myP.show = urlParams.get('show');
if(urlParams.get('database')){
myP.database = urlParams.get('database');
}
help_bodyTemplete = document.createElement(`yeagerbot`);
let outstr="inc/elements/help/help.php?show=" + myP.show
if(myP.database){
outstr=outstr +"&database=" + myP.database;
}
ajax("get", outstr, help_bodyLoadTemp);
class cls_help_body extends HTMLElement {
constructor() {
super();
this.attachShadow({
mode: 'open'
});
//this.shadowRoot.appendChild(help_bodyTemplete.cloneNode(true));
this.outerHTML = help_bodyTemplete.innerHTML;
helpLoaded();
}
}
function help_bodyLoadTemp(retobj, arg) {
help_bodyTemplete.innerHTML = retobj.responseText;
window.customElements.define("help-body", cls_help_body);
}
function helpLoaded() {
eCat = document.getElementById('catList');
console.log(f);
console.log(eCat);
fCat = [];
eCat.innerHTML = '
Categories';
(f.forEach(d => {
if (fCat.indexOf(d.category) == -1) {
fCat.push(d.category);
};
}));
console.log(fCat);
fCat.forEach(d => {
let li = document.createElement(`li`);
li.innerHTML = "" + d + "";
eCat.querySelector("ul").appendChild(li);
});
doLocation();
}
function doLocation() {
l = window.location.href;
if (l.indexOf('#') > -1) {
let element = document.createElement('a');
element.setAttribute('value', l.split('#')[1]);
doCommand(element);
};
}
function doCat(t) {
console.log(t);
cmdInfo.innerHTML = '';
cmdList.innerHTML = 'Commands';
cmdList.classList.remove('hidden');
f.forEach(d => {
if (d.category == t.getAttribute('value')) {
console.log(d);
cmdList.innerHTML = cmdList.innerHTML + "- " + d.command + "
";
};
});
}
function doCommand(t) {
console.log(t);
console.log('HIHIHIHIIHIH');
cmdList.classList.add('hidden');
//cmdInfo.innerHTML='Command Info
';
let hideCat = false;
f.forEach(d => {
if (d.command == t.getAttribute('value')) {
hideCat = true;
console.log(d);
cmdList.innerHTML = '';
cmdInfo.innerHTML = '' + d.category + '
' + d.command + '
Permission: ' + d.permlevel + '
'
+ 'Aliases: ' + d.aliases + '
Usage:
' + String(d.usage).replace(/\n/g, '
') + '
Description: ' + d.description + '
Extra Details: ' + d.details;
}
});
if (hideCat) {
eCat.querySelector("ul").classList.add('hidden');
document.querySelector("#showCatList").classList.remove('hidden')
}
}
function showCatList(obj){
eCat.querySelector("ul").classList.remove('hidden');
obj.classList.add('hidden');
cmdList.innerHTML="";
cmdInfo.innerHTML="";
return false;
}
/*........./elements/main_body/main_body.js......*/
main_bodyTemplete=document.createElement(`yeagerbot`);
if (myP.show==null || myP.show.toLowerCase()!='help') ajax("get","inc/elements/main_body/main_body.html",main_bodyLoadTemp);
class cls_main_body extends HTMLElement {
constructor(){
super();
this.attachShadow({mode:'open'});
this.shadowRoot.appendChild(main_bodyTemplete.cloneNode(true));
if(main_bodyData!=null && typeof userData=="object"){
}
}
}
function main_bodyLoadTemp(retobj,arg){
if (myP.show && myP.show.toLowerCase()=='help') return;
main_bodyTemplete.innerHTML=retobj.responseText;
ajax("get","inc/elements/main_body/main_body.php",main_bodyReady);
}
function main_bodyReady(retobj, arg){
//if(typeof retobj.responseText=="string"){
main_bodyData=JSON.parse(retobj.responseText);
window.customElements.define("main-body", cls_main_body);
//}
}
/*........./elements/listview/listview.js......*/
if (myP.show!=null && myP.show.toLowerCase()!='help'){
urlindexTemplete=document.createElement(`yeagerbot`);
urlindexTemplete.ready=false;
listLinksTemplete=document.createElement(`yeagerbot`);
listLinksTemplete.ready=false;
listTimersTemplete=document.createElement(`yeagerbot`);
listTimersTemplete.ready=false;
CCommandTemplete=document.createElement(`yeagerbot`);
CCommandTemplete.ready=false;
listAlarmsTemplete=document.createElement(`yeagerbot`);
listAlarmsTemplete.ready=false;
settingsTemplete=document.createElement(`yeagerbot`);
settingsTemplete.ready=false;
listSharesTemplete=document.createElement(`yeagerbot`);
listSharesTemplete.ready=false;
uTubesTemplete=document.createElement(`yeagerbot`);
uTubesTemplete.ready=false;
ajax("get","inc/elements/tools/alarms/alarms_card.html",listviewLoadTemp);
ajax("get","inc/elements/tools/userCommands/userCommands.html",listviewLoadTemp);
ajax("get","inc/elements/tools/timers/timers_card.html",listviewLoadTemp);
ajax("get","inc/elements/tools/shares/shares.html",listviewLoadTemp);
ajax("get","inc/elements/tools/links/links.html",listviewLoadTemp);
ajax("get","inc/elements/tools/settings/settings.html",listviewLoadTemp);
ajax("get","inc/elements/tools/utubes/utubes.html",listviewLoadTemp);
ajax("get","inc/elements/tools/urlindex/urlindex_card.html",listviewLoadTemp);
}
var urlParams = new URLSearchParams(window.location.search);
myP={};
myP.m=urlParams.get('m');
myP.show=urlParams.get('show');
class cls_listview extends HTMLElement {
constructor(){
super();
this.attachShadow({mode:'open'});
if(myP && myP.show){
switch(myP.show.toLowerCase()){
case "timers":
listTimersTemplete.style.display="none";
this.shadowRoot.appendChild(listTimersTemplete.cloneNode(true));
break;
case "alarms":
listAlarmsTemplete.style.display="none";
this.shadowRoot.appendChild(listAlarmsTemplete.cloneNode(true));
break;
case "shares":
listSharesTemplete.style.display="none";
this.shadowRoot.appendChild(listSharesTemplete.cloneNode(true));
break;
case "links":
listLinksTemplete.style.display="none";
this.shadowRoot.appendChild(listLinksTemplete.cloneNode(true));
break;
case "settings":
settingsTemplete.style.display="none";
this.shadowRoot.appendChild(settingsTemplete.cloneNode(true));
break;
case "youtube":
uTubesTemplete.style.display="none";
this.shadowRoot.appendChild(uTubesTemplete.cloneNode(true));
break;
//here
case "user commands":
CCommandTemplete.style.display="none";
this.shadowRoot.appendChild(CCommandTemplete.cloneNode(true));
break;
case "urlindex":
urlindexTemplete.style.display="none";
this.shadowRoot.appendChild(urlindexTemplete.cloneNode(true));
break;
default: return;
}
this.go();
}
}
go(){
ajax("post","get.php", this.getData,"m=" + myP.m + "&show=" + myP.show,this);
}
getData(retobj,arg){
var obj=arg[1].shadowRoot.querySelector("div.listGroup");
var data=JSON.parse(retobj.responseText);
switch(arg[0].split("show=")[1].toLowerCase()){
case "timers":
setTimeout(doTimers,1000,retobj,arg);
break;
case "alarms":
setTimeout(doAlarms,1000,retobj,arg);
break;
case "shares":
setTimeout(doShares,1000,retobj,arg);
break;
case "links":
setTimeout(doLinks,1000,retobj,arg);
break;
case "settings":
setTimeout(doSetting,1000,retobj,arg);
break;
case "youtube":
setTimeout(doUtubes,1000,retobj,arg);
break;
case "user commands":
setTimeout(dousrcommands,1000,retobj,arg);
break;
case "urlindex":
setTimeout(doUrlIndex,1000,retobj,arg);
break;
}
}
}
async function listviewLoadTemp(retobj,arg){
if (myP.show && myP.show.toLowerCase()=='help') return;
switch(retobj.responseURL.split("/").pop()){
case "timers_card.html":
listTimersTemplete.innerHTML=retobj.responseText;
listTimersTemplete.ready=true;
break;
case "alarms_card.html":
listAlarmsTemplete.innerHTML=retobj.responseText;
listAlarmsTemplete.innerHTML=listAlarmsTemplete.innerHTML+(await ajax("get","inc/elements/tools/alarms/addAlarmTime.html"))
listAlarmsTemplete.ready=true;
break;
case "shares.html":
listSharesTemplete.innerHTML=retobj.responseText;
listSharesTemplete.ready=true;
break;
case "links.html":
listLinksTemplete.innerHTML=retobj.responseText;
listLinksTemplete.ready=true;
break;
case "settings.html":
settingsTemplete.innerHTML=retobj.responseText;
settingsTemplete.ready=true;
break;
case "utubes.html":
uTubesTemplete.innerHTML=retobj.responseText;
uTubesTemplete.ready=true;
break;
case "userCommands.html":
CCommandTemplete.innerHTML=retobj.responseText;
CCommandTemplete.ready=true;
break;
case "urlindex_card.html":
urlindexTemplete.innerHTML=retobj.responseText;
urlindexTemplete.ready=true;
break;
}
if( urlindexTemplete.ready && CCommandTemplete.ready && uTubesTemplete.ready && listTimersTemplete.ready && listAlarmsTemplete.ready && listLinksTemplete.ready && listSharesTemplete.ready && settingsTemplete.ready && typeof window.customElements.get("list-view")=="undefined"){
window.customElements.define("list-view", cls_listview);
}
}
/*........./elements/guildView_Main/guildView_Main.js......*/
guildView_MainTemplete=document.createElement(`yeagerbot`);
ajax("get","inc/elements/guildView_Main/guildView_Main.html",guildView_MainLoadTemp);
class cls_guildView_Main extends HTMLElement {
constructor(){
super();
if (urlParams.get('database')) {
myP.database = urlParams.get('database');
}
this.attachShadow({mode:'open'});
if(myP.show && myP.show!=""){
guildView_MainTemplete.querySelector("#guildView_text").classList.add("hidden")
}else {
ajax("post","get.php",addUserCount,"m=" + myP.m + "&show=roleMemberCount");
}
this.shadowRoot.appendChild(guildView_MainTemplete.cloneNode(true));
}
}
function addUserCount(retobj,arg){
guildView_main_stats=document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#guildView_main_stats");
let div =document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelectorAll("#userCbyR")
if(div.length==0) div = document.createElement(`div`);
div.id="userCbyR";
let title=document.createElement(`div`);
title.classList.add("title");
title.innerHTML="User Count by Role";
div.appendChild(title)
let data=JSON.parse(retobj.responseText);
for(let x=0;x= 5) {
//
location.reload()
};
return setTimeout(unHide, 10000, obj, unHide);
}
obj.shadowRoot.querySelector("#guildtools").style.display = "";
obj.shadowRoot.addEventListener("click", (event) => {
let target = event.target;
let bodyWrapper = document.querySelector("guildview-main").shadowRoot.querySelector("#guildView_Main");
if (target.innerText == "⬇" || true) {
document.querySelector("guild-tools").shadowRoot.querySelector("#guildtools").classList.toggle("hidden")
}
if (target.parentElement.classList.contains("guildtools__startTile") && bodyWrapper.querySelector("#guildView_text")) bodyWrapper.querySelector("#guildView_text").outerHTML = ""
if (target.nodeName == "A") {
if (bodyWrapper.querySelector("tool-wrapper")) {
bodyWrapper.querySelector("tool-wrapper").outerHTML = "";
}
myP.show = target.innerText;
let outstr = window.location.protocol + "//" + window.location.host + window.location.pathname + "?m=" + myP.m + "&show=" + myP.show;
if (myP.database) {
outstr = outstr + "&database=" + myP.database
}
window.history.pushState({
path: outstr
}, '', outstr);
let _elm = document.createElement("tool-wrapper");
_elm.setAttribute("id", target.id);
_elm.style = "z-index:-100";
//target.ownerDocument.querySelector("guildview-main").appendChild(_elm);
// let _elm2 = _elm.cloneNode(true);
_elm.style = "";
bodyWrapper.appendChild(_elm);
updateActive();
let test = _elm.shadowRoot.querySelector("list-view");
if (test.shadowRoot==null) {
setTimeout(()=>{window.location.reload()}, 10);
}
}
});
doClickToolMenu()
updateMain();
}
}
function doClickToolMenu() {
if (myP != null && myP.show != null) {
//setTimeout(updateMain, 1000 )
var t = document.querySelector("guild-tools").shadowRoot.querySelectorAll("a"); t = Array.from(t).find((x) => x.innerText.toLowerCase() == myP.show.toLowerCase());
console.log(t); setTimeout((t) => {
t.click()
}, 500, t);
}
}
function guildtoolsLoadTemp(retobj, arg) {
// console.log(retobj);
//console.log("inside loadTemp");
guildtoolsTemplete.innerHTML = retobj.responseText;
ajax("get", "inc/elements/guild-tools/guild-tools.php", guildtoolsReady);
}
function guildtoolsReady(retobj, arg) {
if (typeof retobj.responseText == "string") {
userData = JSON.parse(retobj.responseText);
window.customElements.define("guild-tools", cls_guildtools);
}
}
/*........./elements/guildSmallTile/guildSmallTile.js......*/
guildSmallTileTemplete=document.createElement(`yeagerbot`);
ajax("get","inc/elements/guildSmallTile/guildSmallTile.html",guildSmallTileLoadTemp);
class cls_guildSmallTile extends HTMLElement {
constructor(){
super();
// console.log("inside the class")
this.attachShadow({mode:'open'});
//console.log(guildSmallTileTemplete);
var newobj =this.shadowRoot.appendChild(guildSmallTileTemplete.cloneNode(true));
setTimeout(this.go,1000,this,newobj);
}
go(mainobj,newobj){
var data=JSON.parse( mainobj.getAttribute("data"),true);
if(typeof data.name=="string" ){
mainobj.shadowRoot.querySelector('.guildSmallTile__guildName').innerText=data.name;
mainobj.shadowRoot.querySelector('#guildSmallTileWrapper').setAttribute("title",data.name);
if(data.premium==1){
setTimeout((mainobj)=>{
console.log(mainobj.shadowRoot.querySelector('div').classList);
mainobj.shadowRoot.querySelector('div').classList.add("premium");
console.log(mainobj.shadowRoot.querySelector('div'));
},1000,mainobj)
}
if(data.active==0){
setTimeout((mainobj)=>{
console.log(mainobj.shadowRoot.querySelector('div').classList);
mainobj.shadowRoot.querySelector('div').classList.add("inactive");
console.log(mainobj.shadowRoot.querySelector('div'));
},1000,mainobj)
}
if (typeof data.icon=="string") {
mainobj.shadowRoot.querySelector('.guildSmallTile__img').src="https://cdn.discordapp.com/icons/" + data.id + "/" + data.icon + ".png";
}else {
let name=data.name
mainobj.shadowRoot.querySelector('.guildSmallTile__img').classList.add("smaller")
mainobj.shadowRoot.querySelector('.guildSmallTile__guildName').innerText=name;
mainobj.shadowRoot.querySelector('.guildSmallTile__guildName').classList.remove("hidden");
}
// console.log(`${data.id}==${myP.m}`);
if (myP && myP.m && data.id==myP.m) mainobj.shadowRoot.querySelector('#guildSmallTileWrapper').classList.add("guildSmallTile--active");
}
}
connectedCallback(){
this.shadowRoot.querySelector("#guildSmallTileWrapper").addEventListener("mouseenter",()=>this.isHover());
this.shadowRoot.querySelector("#guildSmallTileWrapper").addEventListener("mouseleave",()=>this.isHover());
this.shadowRoot.querySelector("#guildSmallTileWrapper").addEventListener("click",()=>this.doClick());
}
isHover(){
this.shadowRoot.querySelector("#guildSmallTileWrapper").classList.toggle("guildSmallTile--hover");
}
doClick(){
const data=JSON.parse( this.getAttribute("data"));
let outstr= window.location.protocol + "//" + window.location.host + window.location.pathname + "?m="+data.id;
if(myP.database ){
outstr=outstr + "&database=" & myP.database
}
window.history.pushState({path:outstr},'',outstr);
//window.history.replaceState({}, "Yeagerbot: ", outstr );
updateMain();
let el_list = this.parentElement.querySelectorAll("sm-gt").forEach((itm)=>{
if (itm!=this){
itm.classList.remove("guildSmallTile--active");
}else{
itm.classList.add("guildSmallTile--active");
}
});
}
}
function guildSmallTileLoadTemp(retobj,arg){
// console.log(retobj);
//console.log("inside loadTemp");
guildSmallTileTemplete.innerHTML=retobj.responseText;
// console.log(guildSmallTileTemplete);
ajax("get","inc/elements/guildSmallTile/guildSmallTile.php",guildSmallTileReady);
}
function guildSmallTileReady(retobj, arg){
guildData=JSON.parse(retobj.responseText);
window.customElements.define("sm-gt", cls_guildSmallTile);
}
/*........./elements/tool-wrapper/tool-wrapper.js......*/
tool_wrapperTemplete=document.createElement(`yeagerbot`);
ajax("get","inc/elements/tool-wrapper/tool-wrapper.html",toolwrapperLoadTemp);
class cls_tool_wrapper extends HTMLElement {
constructor(){
super();
this.attachShadow({mode:'open'});
tool_wrapperTemplete.querySelector("#title").innerText="";
this.shadowRoot.appendChild(tool_wrapperTemplete.cloneNode(true));
let id=this.getAttribute("id");
if(id){
// this.shadowRoot.querySelector("#title").innerHTML=document.querySelector("guild-tools").shadowRoot
// .querySelector(`#${id}`).innerHTML;
this.shadowRoot.querySelector("yeagerbot").style.backgroundImage="url('" +
document.querySelector("guild-tools").shadowRoot.querySelector(`#${id}>img`).src +"')" ;
this.shadowRoot.querySelector("yeagerbot").style.backgroundPosition="bottom right";
if(userData!=null && typeof userData=="object"){
}
}
}
}
function toolwrapperLoadTemp(retobj,arg){
// console.log(retobj);
//console.log("inside loadTemp");
tool_wrapperTemplete.innerHTML=retobj.responseText;
ajax("post","inc/elements/tool-wrapper/tool-wrapper.php",toolwrapperReady,JSON.stringify(myP));
}
function toolwrapperReady(retobj, arg){
if(typeof retobj.responseText=="string"){
userData=JSON.parse(retobj.responseText);
window.customElements.define("tool-wrapper", cls_tool_wrapper);
}
}
/*........./elements/tools/alarms/addAlarmTime.js......*/
function addAlarmTime_save(obj){
let data={};
data.id=obj.offsetParent.parentElement.getAttribute("id");
data.AlarmTime=obj.previousElementSibling.value;
data.handle=`W${myP.m}${moment().format('YYYYMMDdHHmmss')}`
if(data.AlarmTime!=""){
data=JSON.stringify(data)
}
if(obj.form.getAttribute("date-type") && obj.form.getAttribute("date-type")=="edit"){
ajax("post","get.php", dataTimersSaved,"m=" + myP.m + `&show=editAlarmTime&data=${data}`,this);
}else {
ajax("post","get.php", dataTimersSaved,"m=" + myP.m + `&show=addAlarmTime&data=${data}`,this);
}
}
function addAlarmTime_close(obj){
let formObj=document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#alarms").shadowRoot.querySelector("list-view").shadowRoot.querySelector(".shadowBox")
formObj.style.display=""
}
function addAlarmTime(obj,id,value){
let formObj=document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#alarms").shadowRoot.querySelector("list-view").shadowRoot.querySelector(".shadowBox")
formObj.setAttribute("id",id);
let mainform=formObj.querySelector("form")
if(value){
mainform.querySelector("#date").value=value;
mainform.setAttribute("date-type","edit");
mainform.querySelector("#id").value=id;
}
formObj.style.display="block"
}
/*........./elements/tools/alarms/alarms.js......*/
let AlarmRan = false;
function doAlarms(retobj, arg) {
console.log("in doAlarms");
var tWrapper = arg[1].parentElement.parentElement
var lGroup = arg[1].shadowRoot.querySelector("div.listGroup")
arg[1].shadowRoot.querySelector("yeagerbot").style.display = "";
tWrapper.querySelector("#title").innerHTML = myP.show;
var data = JSON.parse(retobj.responseText, true);
var x = 0;
lastCard = lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length - 1]
if (document.querySelector("#bodyWrapper > guildview-main") && document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#alarms").shadowRoot.querySelector("#new") == null) {
newCard = lastCard.cloneNode(true)
newCard.setAttribute("data-value", "new")
newCard.querySelector(".listGroup__desc").setAttribute("data-value", "")
newCard.setAttribute("id", "new")
newCard.classList.add("hidden")
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#alarms").shadowRoot.querySelector("#toolwrapper > div:nth-child(2)").appendChild(newCard)
}
for (const [key, value] of Object.entries(data)) {
console.log(value);
var card
if (x > 0) {
card = lastCard.cloneNode(true);
} else {
card = lastCard;
}
//set values
card.querySelector("div.listGroup__desc").innerHTML = deCode(value[0].Message);
card.querySelector("div.listGroup__desc").setAttribute("data-value", deCode(value[0].Message));
let id = "";
var timeList = {};
for (const x of value) {
if (id == "") {
id = x["id"];
card.setAttribute("id", id);
}
timeList[x["id"]] = {
"id": x["id"],
"alarm": x["AlarmTime2"]
};
}
timeList = JSON.stringify(timeList)
card.querySelector("div.listGroup__next").innerHTML = `(${value[0].timezone })
`;
card.querySelector("div.listGroup__where").innerHTML = value[0].ChannelID.charAt(0) + value[0].ChannelName;
card.querySelector("div.listGroup__where").setAttribute("data-value", value[0].ChannelID);
card.querySelector("div.listGroup__addBy").innerHTML = "added by:" + value[0].Uname;
//
if (x++ > 0) {
lGroup.appendChild(card);
}
}
if (data.length == 0) {
lastCard = lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length - 1];
lastCard.classList.add("hidden");
}
if (!AlarmRan) {
//AlarmRan=true;
setTimeout(setEventsAlarms, 1000, lGroup);
}
}
function setEventsAlarms(obj) {
obj.querySelectorAll("a").forEach(x => {
if (x.innerHTML != "new") x.onclick = doAlarmToolWork
})
}
function doAlarmToolWork(event) {
if (event.target.innerHTML == "edit" && event.target.className.includes('tool_btn')) {
editAlarms(event.target);
} else if (event.target.innerHTML == "edit" && !event.target.className.includes('tool_btn')) {
editAlarmsTime(event.path[3],
event.path[3].querySelectorAll("div.tableCellValue")[0].innerText, event.path[3].querySelectorAll("div.tableCellValue")[1].innerText);
} else if (event.target.innerHTML == "delete" || event.target.innerHTML == "X") {
delAlarms(event.path[3].querySelectorAll("div.tableCellValue")[0].innerText, event.target.innerHTML != "X");
} else if (event.target.innerHTML == "save") {
saveAlarms(event.target);
} else if (event.target.innerHTML == "cancel") {
if (!confirm("You may have unsaved. Hit cancel to stay")) {
return;
}
location.reload();
}
}
function editAlarmsTime(obj, id, value) {
addAlarmTime(obj, id, value);
}
function editAlarms(obj) {
let pobj = obj.parentElement.parentElement.parentElement.querySelectorAll(".listGroup__miniCard");
let type = obj.innerText;
obj = obj.parentElement.parentElement;
if (type == "cancel" && !confirm("You may have unsaved. Hit cancel to stay")) {
return;
}
if (type == "cancel" && obj.getAttribute("id") == "new") {
obj.outerHTML = "";
}
toggleList(pobj, obj, (type == "edit") ? "only" : "");
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#alarms").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.toggle("hidden")
}
function delAlarms(id, onlyOneTime = true) {
if (confirm("Are you sure you want to delete that Timer? \nThis can not be undone.")) {
ajax("post", "get.php", dataTimersSaved, "m=" + myP.m + `&show=delAlarms&id=${id}&onlyOneTime=${onlyOneTime}`, this);
}
}
function addAlarms(obj) {
obj.classList.add("hidden")
obj = document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#alarms").shadowRoot.querySelector("#new").cloneNode(true);
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#alarms").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("#listGroup").appendChild(obj);
let pobj = document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#alarms").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelectorAll(".listGroup__miniCard");
toggleList(pobj, obj, "only");
}
function saveAlarms(obj) {
ajax("post", "get.php", dataTimersSaved, "m=" + myP.m + `&show=saveAlarms&data=${obj.getAttribute("value")}`, this);
}
async function alarmsCommandsCard(card, d = "", type = "") {
console.log(d);
switch (type) {
case "view":
card.setAttribute("data-value", d.id);
card.querySelector("div.listGroup__desc").innerHTML = deCode(d.Message);
card.querySelector("div.listGroup__next").innerHTML = moment(d.AlarmTime ).format("yyyy-MM-DDThh:mm:ss A")+ "
(" + d.timezone + ")";
card.querySelector("div.listGroup__where").innerHTML = d.ChannelID.charAt(0) + d.ChannelName;
card.querySelector("div.listGroup__addBy").innerHTML = "added by: " + d.Uname;
card.querySelector("div.listGroup__desc").setAttribute("data-value", deCode(d.Message));
card.querySelector("div.listGroup__next").setAttribute("data-value", d.AlarmTime)
card.querySelector("div.listGroup__next").setAttribute("data-value2", d.timezone);
card.querySelector("div.listGroup__where").setAttribute("data-value", d.ChannelID.charAt(0) + d.ChannelName);
card.querySelector("div.listGroup__where").setAttribute("data-value2", d.ChannelID);
card.querySelector("div.listGroup__addBy").setAttribute("data-value", d.Uname);
card.querySelector("div.listGroup__addBy").setAttribute("data-value2", d.authorID);
break;
case "review":
card.querySelector("div.listGroup__desc").innerHTML = card.querySelector("div.listGroup__desc").getAttribute("data-value");
card.querySelector("div.listGroup__next").innerHTML = moment(card.querySelector("div.listGroup__next").getAttribute("data-value")).format("yyyy-MM-DD hh:mm:ss A") + " (" + card.querySelector("div.listGroup__next").getAttribute("data-value2") + ")";
card.querySelector("div.listGroup__where").innerHTML = card.querySelector("div.listGroup__where").getAttribute("data-value");
break;
case "edit":
card.querySelector("div.listGroup__desc").innerHTML = "";
if (card.id == "new") {
card.querySelector("div.listGroup__next").innerHTML =
"" + getDMZoptions("", card.querySelector("div.listGroup__next").getAttribute("data-value2"))
+ "
"
} else {
card.querySelector("div.listGroup__next").outerHTML = "";
}
card.querySelector("div.listGroup__where").innerHTML = "" + await buildSelectList(card.querySelector("div.listGroup__where").getAttribute("data-value"), "all", "ChannelID");
card.querySelectorAll("select,input,textarea").forEach((x) => {
x.addEventListener("change", validateAlarms);
x.addEventListener("select", validateAlarms);
})
break;
}
}
function validateAlarms(event) {
if (!event) return;
let card = event.target.offsetParent
let org = [],
newSet = [],
errSet = [],
saveSet = [];
let ready = false;
org.message = card.querySelector("div.listGroup__desc").getAttribute("data-value");
if (card.querySelector("div.listGroup__next") && event.path[2].classList.contains("edit")) {
org.AlarmTime = [];
newSet.AlarmTime = [];
org.AlarmTime.date = card.querySelector("div.listGroup__next").getAttribute("data-value")
newSet.AlarmTime.timezone = card.querySelector("[name='timeZone']").selectedOptions[0].value;
newSet.AlarmTime.date = card.querySelector("[name='AlarmTime']").value
}
org.ChannelID = card.querySelector("[name='ChannelID']").getAttribute("data-value");
newSet.message = card.querySelector("[name='message']").value;
newSet.ChannelID = card.querySelector("[name='ChannelID']").selectedOptions[0].value;
if (card.querySelector("div.listGroup__next") && event.path[2].classList.contains("edit") && (
newSet.AlarmTime.timezone == ""
|| newSet.AlarmTime.date == "")) return;
if (newSet.message != "" && newSet.ChannelID != "") {
if (newSet.message != org.message) {
ready = true;
saveSet.push(`"Message":"${enCode(newSet.message)}"`);
}
if (card.querySelector("div.listGroup__next") && event.path[2].classList.contains("edit") && newSet.AlarmTime.timezone != org.AlarmTime.timezone) {
ready = true;
saveSet.push(`"timezone":"${newSet.AlarmTime.timezone}"`);
}
if (card.querySelector("div.listGroup__next") && event.path[2].classList.contains("edit") && !moment(newSet.AlarmTime.date).isSame(org.AlarmTime.date)) {
ready = true;
saveSet.push(`"AlarmTime":"${newSet.AlarmTime.date}"`);
}
}
if (org.ChannelID != newSet.ChannelID) {
ready = true;
saveSet.push(`"ChannelID":"${newSet.ChannelID}"`);
}
if (newSet.message == "") {
ready = false;
errSet.push("-'Message' must not be empty");
}
errSet = errSet.join("
")
let div = document.createElement("div");
div.setAttribute("id", "errSet");
div.innerHTML = errSet
if (card.querySelector("div.listGroup__where > #errSet")) {
card.querySelector("div.listGroup__where > #errSet").outerHTML = "";
}
if (errSet != '') card.querySelector("div.listGroup__where").appendChild(div);
switch (ready) {
case true:
card.querySelector("a[name='save']").classList.remove("hidden");
saveSet.push(`"handle":"W${myP.m}${moment().format('YYYYMMDdHHmmss')}"`)
saveSet.push(`"id":"${card.getAttribute("data-value")||card.getAttribute("id")}"`);
card.querySelector("a[name='save']").setAttribute("value", "{" + saveSet.join(",") + "}")
break;
case false:
card.querySelector("a[name='save']").classList.add("hidden");
}
}
/*........./elements/tools/userCommands/userCommands.js......*/
let usrcommandsNames=[];
function dousrcommands(retobj,arg){
console.log("in usrcommands");
var tWrapper=arg[1].parentElement.parentElement
var lGroup=arg[1].shadowRoot.querySelector("div.listGroup")
arg[1].shadowRoot.querySelector("yeagerbot").style.display="";
tWrapper.querySelector("#title").innerHTML=myP.show;
var data=JSON.parse(retobj.responseText,true);
var x=0;
lastCard=lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length-1];
if(document.querySelector("#bodyWrapper > guildview-main") && document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#usrcommands").shadowRoot.querySelector("#new")==null){
newCard=lastCard.cloneNode(true)
newCard.setAttribute("data-value","new")
newCard.setAttribute("id","new")
newCard.classList.add("hidden")
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#usrcommands").shadowRoot.querySelector("#toolwrapper > div:nth-child(2)").appendChild(newCard)
}
for(const [key,value] of Object.entries(data)){
console.log(value);
var card
if(x>0){
card=lastCard.cloneNode(true);
}else{
card=lastCard;
}
//set values
setupUsrCommandsCard(card,value,"view");
//
if(x++>0){
lGroup.appendChild(card);
}
}
if (data.length==0){
lastCard=lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length-1];
lastCard.classList.add("hidden");
}
setTimeout(fix_delete_btns,1000,lGroup.querySelectorAll("div.listGroup__miniCard"));
//fix_delete_btns(lGroup.querySelectorAll("div.listGroup__miniCard"));
}
function fix_delete_btns(cards){
for(const [key,card] of Object.entries(cards)){
card.querySelector("[name=delete]").classList.toggle("hidden");
let top=card.querySelector("[name=delete]").parentElement.parentElement.offsetHeight;
top=top- card.querySelector("[name=delete]").parentElement.offsetHeight;
card.querySelector("[name=delete]").setAttribute("style",`top:${-1 * top}px`)
card.querySelector("[name=delete]").classList.toggle("hidden");
}
}
async function setupUsrCommandsCard(card,d="",type=""){
console.log(d);
switch(type){
case "view":
/*
card.querySelector("div.listGroup__logo >img").setAttribute("src",value.YTthumbnail);
card.querySelector("div.listGroup__name").innerHTML=value.YTname;
card.querySelector("div.listGroup__channel").innerHTML= value.channelName;
card.querySelector("div.listGroup__message").innerHTML=deCode(value.message);
*/
card.setAttribute("data-value",d.id);
card.setAttribute("id",d.id);
card.querySelector("div.listGroup__message").innerHTML=deCode(d.content)
card.querySelector("div.listGroup__message").innerHTML=fixString(card.querySelector("div.listGroup__message").innerHTML);
card.querySelector("div.listGroup__name").innerHTML=d.command;
usrcommandsNames.push(d.command);
card.querySelector("div.listGroup__misc").innerHTML=`
Allowed:
Rooms: ${await getRoomNames(d.aiRooms)}
Roles: ${await getRoleNames(d.aiRoles)}
`;
card.querySelector("div.listGroup__misc").setAttribute("aiRooms",d.aiRooms);
card.querySelector("div.listGroup__misc").setAttribute("aiRoles",d.aiRoles);
card.querySelector("div.listGroup__message").setAttribute("data-value", deCode(d.content));
card.querySelector("div.listGroup__name").setAttribute("data-value", deCode(d.command));
break;
case "review":
removeErrors(card);
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#usrcommands").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.remove("hidden")
card.querySelector("div.listGroup__message").innerHTML=fixString(card.querySelector("div.listGroup__message").getAttribute("data-value"));
card.querySelector("div.listGroup__misc").innerHTML=`
Allowed:
Rooms: ${await getRoomNames(card.querySelector("div.listGroup__misc").getAttribute("aiRooms"))}
Roles: ${await getRoleNames(card.querySelector("div.listGroup__misc").getAttribute("aiRoles"))}
`;
card.querySelector("div.listGroup__name").innerHTML=card.querySelector("div.listGroup__name").getAttribute("data-value");
// card.querySelector("div.listGroup__channel").innerHTML=card.querySelector("div.listGroup__channel").getAttribute("data-value");
break;
case "edit":
// document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#usrcommands").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.add("hidden")
let roomSel="";
let roleSel="";
card.querySelector("div.listGroup__message").innerHTML="";
let checkName=card.querySelector("div.listGroup__name").getAttribute("data-value");
checkName=(checkName=="null")?checkName:"";
card.querySelector("div.listGroup__name").innerHTML=``;
card.querySelector("div.listGroup__misc").innerHTML=`
Allowed:
Rooms: ${roomSel}
Roles: ${roleSel}
`;
// card.querySelector("div.listGroup__channel").innerHTML="" + await buildSelectList(card.querySelector("div.listGroup__channel").getAttribute("data-value2"),"channels","ChannelID","",false);
card.querySelectorAll("select,input,textarea").forEach((x)=>{
x.addEventListener("change",validateusrcommands);
x.addEventListener("select",validateusrcommands);
})
card.addEventListener("change",validateusrcommands);
break;
}
}
function removeErrors(card){
while(card.parentElement.parentElement.querySelector(".listGroup__error")){ card.parentElement.parentElement.querySelector(".listGroup__error").outerHTML="";}
}
function validateusrcommands(obj){
let card=(obj.constructor.name!="Event")?obj : obj.path.find(elm=>elm.className.includes("edit"));
//card.querySelectorAll("div.flexCheckBox").forEach(x=>setTimeout(orderSelectChecked,1000,x));
//return;
//////start
let org=[], newSet=[], errSet=[], saveSet=[];
let ready=false;
//span.classList.add("listGroup__error");
org.aiRooms=card.querySelector("div.listGroup__misc").getAttribute("aiRooms");
org.aiRoles=card.querySelector("div.listGroup__misc").getAttribute("aiRoles");
if(org.aiRooms)org.aiRooms=org.aiRooms.split(",").sort().join(",")
if(org.aiRoles)org.aiRoles=org.aiRoles.split(",").sort().join(",")
org.message=card.querySelector("div.listGroup__message").getAttribute("data-value");
org.name=card.querySelector("div.listGroup__name").getAttribute("data-value");
//temp1.querySelectorAll("input:checked")
newSet.aiRooms=orderSelectChecked(card.querySelector("div.listGroup__misc check-list[name='aiRooms'] div.flexCheckBox"),true);
newSet.aiRoles=orderSelectChecked(card.querySelector("div.listGroup__misc check-list[name='aiRoles'] div.flexCheckBox"),true);
/*
return;
*/
newSet.message=card.querySelector("div.listGroup__message textarea").value;
newSet.name=card.querySelector("div.listGroup__name input").value;
if(newSet.message!="" && newSet.name!=null){
if(newSet.message!=org.message){ready=true;
saveSet.push(`"message":"${newSet.message}"`);
}
if(org.ChannelID!=newSet.ChannelID){ready=true;
saveSet.push(`"ChannelID":"${newSet.ChannelID}"`);
}
}
if(newSet.message==""){
ready=false;
errSet.push("-'Message' must not be empty");
}
if(newSet.name=="" || (newSet.name!=org.name && (newSet.name=="" ||(newSet!=org.name && usrcommandsNames.includes(newSet.name)))) ){
ready=false;
errSet.push("-'Command Name' must not be empty or you already have a command by the name on this form.");
}
if(errSet.length>0){
if(this.parentElement.parentElement.querySelector("#errList")) this.parentElement.parentElement.querySelector("#errList").outerHTML="";
let span = document.createElement("span");
span.id="errList"
span.classList.add("listGroup__error");
span.innerHTML=errSet.join("
");
card.parentElement.before(span);
span.scrollIntoView();
}
//errSet=errSet.join("
")
// card.querySelector("div.listGroup__where").innerHTML=errSet;
switch(ready){
case true:
let id=(card.getAttribute("data-value"))?card.getAttribute("data-value"):"new";
saveSet.push(`"id":"${id}"`);
card.querySelector("a[name='save']").setAttribute("value","{" + saveSet.join(",") + "}")
card.querySelector("a[name='save']").classList.remove("hidden");
break;
case false:
card.querySelector("a[name='save']").classList.add("hidden");
}
////end
}
function editusrcommands(obj){
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#usrcommands").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.add("hidden")
let pobj=obj.parentElement.parentElement.parentElement.querySelectorAll(".listGroup__miniCard");
let type=obj.innerText;
obj=obj.parentElement.parentElement;
if(type=="cancel" && !confirm("You may have unsaved. Hit cancel to stay")){
return;
}
if(type == "cancel" && obj.getAttribute("id")=="new") {
obj.outerHTML="";
}
toggleList(pobj,obj, (type=="edit")? "only" :"");
//document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#usrcommands").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.toggle("hidden")
}
function fixString(str){
while(str.includes(" ")){
str=str.replaceAll(" "," ");
}
return str.replaceAll("+ ","+").replaceAll("- ","-").replaceAll(",+",", +").replaceAll(",-",", -");
}
function addusrcommands(obj){
obj.classList.add("hidden")
obj= document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#usrcommands").shadowRoot.querySelector("#new").cloneNode(true)
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#usrcommands").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("#listGroup").appendChild(obj);
let pobj=document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#usrcommands").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelectorAll(".listGroup__miniCard");
toggleList(pobj,obj, "only");
}
function removeusrcommands(obj){
obj=obj.offsetParent.parentElement;
ajax("post","get.php", dataTimersSaved,"m=" + myP.m + `&show=removeUtube&id=${obj.getAttribute("data-value")}`,this);
}
function saveusrcommands(obj){
ajax("post","get.php", dataTimersSaved,"m=" + myP.m + `&show=saveUtube&data=${obj.getAttribute("value")}`,this);
}
/*........./elements/tools/links/links.js......*/
function doLinks(retobj,arg){
console.log("in Shares");
var tWrapper=arg[1].parentElement.parentElement
var lGroup=arg[1].shadowRoot.querySelector("div.listGroup")
arg[1].shadowRoot.querySelector("yeagerbot").style.display="";
tWrapper.querySelector("#title").innerHTML=myP.show;
var data=JSON.parse(retobj.responseText,true);
var x=0;
for(const [key,value] of Object.entries(data)){
console.log(value);
lastCard=lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length-1];
var card
if(x>0){
card=lastCard.cloneNode(true);
}else{
card=lastCard;
}
//set values
card.querySelector("div.listGroup__linkid").setAttribute("key",value.id);
card.querySelector("div.listGroup__linkid").innerHTML=deCode(value.linkID);
card.querySelector("div.listGroup__channel").innerHTML= value.channelName;
var timeList ="" + value["linkGtag"] + value["linkGname"] +"'s
" + value["linkCname"] + "
";
card.querySelector("div.listGroup__links").innerHTML=timeList;
//
if(x++>0){
lGroup.appendChild(card);
}
}
if (data.length==0){
lastCard=lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length-1];
lastCard.classList.add("hidden");
}
}
function deleteLink(obj){
let pobj=obj.parentElement.parentElement.parentElement.querySelectorAll(".listGroup__miniCard");
if(confirm("Are you sure you want to delete that link? \nThis can not be undone.")){
ajax("post","get.php", dataLinkSaved,"m=" + myP.m + `&show=delLinks&id=${obj.offsetParent.parentElement.querySelector("#share_linkid").getAttribute("key")}`,this);
}
}
function dataLinkSaved(){
location.reload();
}
/*........./elements/tools/utubes/utubes.js......*/
let searchUtube_timer;
function doUtubes(retobj, arg) {
console.log("in uTubes");
var tWrapper = arg[1].parentElement.parentElement
var lGroup = arg[1].shadowRoot.querySelector("div.listGroup")
arg[1].shadowRoot.querySelector("yeagerbot").style.display = "";
tWrapper.querySelector("#title").innerHTML = myP.show;
var data = JSON.parse(retobj.responseText, true);
var x = 0;
for (const [key, value] of Object.entries(data)) {
console.log(value);
lastCard = lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length - 1];
if (document.querySelector("#bodyWrapper > guildview-main") && document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("#new") == null) {
newCard = lastCard.cloneNode(true)
newCard.setAttribute("data-value", "new")
newCard.setAttribute("id", "new")
newCard.classList.add("hidden")
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("#toolwrapper > div:nth-child(2)").appendChild(newCard)
}
var card
if (x > 0) {
card = lastCard.cloneNode(true);
} else {
card = lastCard;
}
//set values
setUtubesCard(card, value, "view");
//
if (x++ > 0) {
lGroup.appendChild(card);
}
}
if (data.length == 0) {
lastCard = lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length - 1];
lastCard.classList.add("hidden");
}
}
async function setUtubesCard(card, d = "", type = "") {
console.log(d);
switch (type) {
case "view":
/*
card.querySelector("div.listGroup__logo >img").setAttribute("src",value.YTthumbnail);
card.querySelector("div.listGroup__name").innerHTML=value.YTname;
card.querySelector("div.listGroup__channel").innerHTML= value.channelName;
card.querySelector("div.listGroup__message").innerHTML=deCode(value.YTmessage);
*/
card.setAttribute("data-value", d.id);
card.setAttribute("id", d.id);
card.setAttribute("data-YTchannel", d.YTchannel);
card.setAttribute("data-YTthumbnail", d.YTthumbnail);
card.setAttribute("data-YTname", d.YTname);
card.setAttribute("data-YTorg", d.YTchannel);
card.querySelector("div.listGroup__message").innerHTML = deCode(d.YTmessage);
card.querySelector("div.listGroup__channel").innerHTML = d.channelName;
card.querySelector("div.listGroup__message").setAttribute("data-value", deCode(d.YTmessage));
card.querySelector("div.listGroup__channel").setAttribute("data-value", d.channelName);
card.querySelector("div.listGroup__channel").setAttribute("data-value2", d.channelID);
card.querySelector("div.listGroup__logo >img").setAttribute("src", d.YTthumbnail);
card.querySelector("div.listGroup__name").innerHTML = d.YTname;
break;
case "review":
if (card.id == "new") {
return location.reload();
}
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.remove("hidden")
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > .utube_find").classList.add("hidden")
card.querySelector("div.listGroup__message").innerHTML = card.querySelector("div.listGroup__message").getAttribute("data-value");
card.querySelector("div.listGroup__channel").innerHTML = card.querySelector("div.listGroup__channel").getAttribute("data-value");
card.querySelector("div.listGroup__logo >img").setAttribute("src", card.getAttribute("data-YTthumbnail"));
card.setAttribute("data-YTchannel", card.getAttribute("data-YTorg"));
card.querySelector("div.listGroup__name").innerHTML = card.getAttribute("data-YTname");
break;
case "edit":
// document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.add("hidden")
card.parentElement.parentElement.querySelector(".utube_find").classList.remove("hidden")
card.querySelector("div.listGroup__message").innerHTML = "";
card.querySelector("div.listGroup__channel").innerHTML = "" + await buildSelectList(card.querySelector("div.listGroup__channel").getAttribute("data-value2"), "channels", "ChannelID", "", false);
card.querySelectorAll("select,input,textarea").forEach((x) => {
x.addEventListener("change", validateUtube);
x.addEventListener("select", validateUtube);
})
card.addEventListener("change", validateUtube);
break;
}
}
function validateUtube(obj) {
let card = (obj.constructor.name != "Event") ? obj : obj.path.find(elm => elm.className.includes("edit"));
//////start
let org = [],
newSet = [],
errSet = [],
saveSet = [];
let ready = false;
org.YTmessage = card.querySelector("div.listGroup__message").getAttribute("data-value");
org.ChannelID = card.querySelector("[name='ChannelID']").getAttribute("data-value");
org.YTchannel = card.getAttribute("data-YTorg");
if (card.querySelector("[name='YTmessage']").value == "") {
card.querySelector("[name='YTmessage']").value = card.querySelector("div#YTmessage").getAttribute("data-def");
}
newSet.YTmessage = card.querySelector("[name='YTmessage']").value;
newSet.ChannelID = card.querySelector("[name='ChannelID']").selectedOptions[0].value;
newSet.YTchannel = card.getAttribute("data-YTchannel");
if (newSet.YTmessage != "" &&
newSet.ChannelID != "" && newSet.YTchannel != null) {
if (newSet.YTmessage != org.YTmessage) {
ready = true;
saveSet.push(`"YTmessage":"${newSet.YTmessage}"`);
}
if (org.ChannelID != newSet.ChannelID) {
ready = true;
saveSet.push(`"ChannelID":"${newSet.ChannelID}"`);
}
if (org.YTchannel != newSet.YTchannel) {
ready = true;
saveSet.push(`"YTchannel":"${newSet.YTchannel}"`);
saveSet.push(`"YTname":"${pool[newSet.YTchannel].title}"`);
saveSet.push(`"YTthumbnail":"${pool[newSet.YTchannel].tm.default.url}"`);
}
if (newSet.YTmessage == "") {
ready = false;
errSet.push("-'Message' must not be empty");
}
}
//errSet=errSet.join("
")
// card.querySelector("div.listGroup__where").innerHTML=errSet;
switch (ready) {
case true:
let id = (card.getAttribute("data-value")) ? card.getAttribute("data-value") : "new";
saveSet.push(`"id":"${id}"`);
card.querySelector("a[name='save']").setAttribute("value", "{" + saveSet.join(",") + "}")
card.querySelector("a[name='save']").classList.remove("hidden");
break;
case false:
card.querySelector("a[name='save']").classList.add("hidden");
}
////end
}
function editUtubes(obj) {
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.add("hidden")
let pobj = obj.parentElement.parentElement.parentElement.querySelectorAll(".listGroup__miniCard");
let type = obj.innerText;
obj = obj.parentElement.parentElement;
if (type == "cancel" && !confirm("You may have unsaved. Hit cancel to stay")) {
return;
}
if (type == "cancel" && obj.getAttribute("id") == "new") {
obj.outerHTML = "";
}
toggleList(pobj, obj, (type == "edit") ? "only" : "");
//document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.toggle("hidden")
}
function addUtubes(obj) {
obj.classList.add("hidden")
obj = document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("list-view").shadowRoot.querySelector("#new") || document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("#new").cloneNode(true)
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("#listGroup").appendChild(obj);
let pobj = document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#utubes").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelectorAll(".listGroup__miniCard");
toggleList(pobj, obj, "only");
}
function youtubeTest(obj) {
let value = obj.value;
let doit = false;
if (typeof searchUtube_timer != "undefined") {
clearTimeout(searchUtube_timer);
searchUtube_timer = undefined
};
if (typeof obj.oldvalue == undefined) {
obj.oldvalue = value;
} else if (obj.oldvalue != value) {
clearUitem(obj);
}
if (obj.value.length >= 3 && obj.parentElement.querySelector("div.youTube_list") == null) doit = true;
if (doit) {
searchUtube_timer = setTimeout(ajax, 1000 * 1, "post", "getUtube.php", diditwork, `q=${obj.value}`, obj) // ajax("post","getUtube.php", diditwork,`q=${obj.value}`,obj);
obj.oldvalue = value;
}
}
function clearUitem(obj) {
if (obj.parentElement.querySelector("div.youTube_list") != null) obj.parentElement.querySelector("div.youTube_list").outerHTML = "";
}
function youTube_use(obj) {
let target = obj.parentElement.parentElement.parentElement.parentElement.querySelector(".edit")
let id = obj.parentElement.id;
obj = pool[id];
target.querySelector("img").src = obj.tm.default.url
target.querySelector(".listGroup__name").innerHTML = obj.title
target.setAttribute("data-YTchannel", id)
validateUtube(target);
}
function diditwork(xobj, arg) {
let obj = arg[1];
let data = JSON.parse(xobj.responseText);
let pool = [];
for (let itm of data.items) {
let newitm = [];
newitm.title = itm.snippet.channelTitle;
newitm.desc = itm.snippet.description;
newitm.tm = itm.snippet.thumbnails;
pool[itm.snippet.channelId] = newitm;
}
clearUitem(obj);
let uDevWrap = document.createElement("div");
uDevWrap.classList.add("youTube_list")
for (let [x, itm] of Object.entries(pool)) {
let devWrap = document.createElement("div");
let img = document.createElement("img");
img.src = itm.tm.high.url;
let p = document.createElement("p")
let btn = document.createElement("input");
btn.type = "button";
btn.value = "Use this channel";
btn.classList.add("youTube_btn")
btn.setAttribute("onclick", "youTube_use(this)");
p.innerHTML = "" + itm.title + "
" + itm.desc;
devWrap.id = x;
devWrap.classList.add("youTube_item")
devWrap.appendChild(img);
devWrap.appendChild(p);
devWrap.appendChild(btn);
uDevWrap.appendChild(devWrap);
}
obj.parentElement.appendChild(uDevWrap);
window.pool = pool;
}
function removeUtubes(obj) {
obj = obj.offsetParent.parentElement;
ajax("post", "get.php", dataTimersSaved, "m=" + myP.m + `&show=removeUtube&id=${obj.getAttribute("data-value")}`, this);
}
function saveUtubes(obj) {
ajax("post", "get.php", dataTimersSaved, "m=" + myP.m + `&show=saveUtube&data=${obj.getAttribute("value")}`, this);
}
/*........./elements/tools/urlindex/urlindex_card.js......*/
function doUrlIndex(retobj,arg){
console.log("in doUrlIndex");
var tWrapper=arg[1].parentElement.parentElement
var lGroup=arg[1].shadowRoot.querySelector("div.listGroup")
arg[1].shadowRoot.querySelector("yeagerbot").style.display="";
tWrapper.querySelector("#title").innerHTML=myP.show;
var data=JSON.parse(retobj.responseText,true);
var newCard;
var x=0;
lastCard=lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length-1]
if(document.querySelector("#bodyWrapper > guildview-main") && document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#urlindex").shadowRoot.querySelector("#new")==null){
newCard=lastCard.cloneNode(true)
newCard.setAttribute("data-value","new")
newCard.setAttribute("id","new")
newCard.classList.add("hidden")
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#urlindex").shadowRoot.querySelector("#toolwrapper > div:nth-child(2)").appendChild(newCard)
}
for(const d of data){
console.log(d);
var card
if(x>0){
card=lastCard.cloneNode(true);
}else{
card=lastCard;
}
//set values
setUrlIndexCard(card,d,"view");
//
if(x++>0){
lGroup.appendChild(card);
}
}
if (data.length==0){
lastCard=lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length-1];
lastCard.classList.add("hidden");
}
}
async function setUrlIndexCard(card,d="",type=""){
console.log(d);
switch(type){
case "view":
card.setAttribute("data-value",d.groupID);
card.querySelector("div.listGroup__desc").innerHTML=deCode(d.groupName);
card.querySelector("div.listGroup__next").innerHTML=moment(d.nextTrigger).format("yyyy-MM-DD hh:mm:ss A") + "
(" + d.timezone + ")";
card.querySelector("div.listGroup__where").innerHTML=deCode(d.json);
card.querySelector("div.listGroup__addBy").innerHTML="added by: ";
card.querySelector("div.listGroup__desc").setAttribute("data-value",JSON.stringify(d));
break;
case "review":
card.querySelector("div.listGroup__desc").innerHTML=card.querySelector("div.listGroup__desc").getAttribute("data-value");
card.querySelector("div.listGroup__next").innerHTML=moment(card.querySelector("div.listGroup__next").getAttribute("data-value")).format("yyyy-MM-DD hh:mm:ss A")+ " ("+ card.querySelector("div.listGroup__next").getAttribute("data-value2") + ")";
card.querySelector("div.listGroup__where").innerHTML=card.querySelector("div.listGroup__where").getAttribute("data-value");
break;
case "edit":
card.querySelector("div.listGroup__desc").innerHTML="";
card.querySelector("div.listGroup__next").innerHTML=
"" + getDMZoptions("",card.querySelector("div.listGroup__next").getAttribute("data-value2"))
+ "
"
+ "
" + getRPDoptions("RepeatPd", card.querySelector("div.listGroup__next").getAttribute("data-value4"))
+ ""
+ "" + await buildSelectList(card.querySelector("div.listGroup__where").getAttribute("data-value2"),"all","ChannelID");
card.querySelector("div.listGroup__where").innerHTML="";
card.querySelectorAll("select,input,textarea").forEach((x)=>{
x.addEventListener("change",validateUrlIndex);
x.addEventListener("select",validateUrlIndex);
})
break;
}
}
function validateUrlIndex(event){
return;
if(!event)return;
let card =event.target.offsetParent
let org=[], newSet=[], errSet=[], saveSet=[];
let ready=false;
org.nextTrigger=[];
newSet.nextTrigger=[];
org.message=card.querySelector("div.listGroup__desc").getAttribute("data-value");
org.nextTrigger=[];
org.nextTrigger.timezone=card.querySelector("div.listGroup__next").getAttribute("data-value2");
org.nextTrigger.date=card.querySelector("div.listGroup__next").getAttribute("data-value")
org.nextTrigger.intValue=+card.querySelector("div.listGroup__next").getAttribute("data-value3");
org.nextTrigger.intString=card.querySelector("div.listGroup__next").getAttribute("data-value4");
org.endTime=card.querySelector("div.listGroup__next").getAttribute("data-endTime");
org.ChannelID=card.querySelector("[name='ChannelID']").getAttribute("data-value");
newSet.message=card.querySelector("[name='message']").value;
newSet.nextTrigger=[];
newSet.nextTrigger.timezone=card.querySelector("[name='timeZone']").selectedOptions[0].value;
newSet.nextTrigger.date=card.querySelector("[name='nextTrigger']").value
newSet.nextTrigger.intValue=+card.querySelector("input[name='RepeatPd']").value;
newSet.nextTrigger.intString=card.querySelector("select[name='RepeatPd']").selectedOptions[0].value;
newSet.endTime=card.querySelector("[name='endTime']").value;
newSet.ChannelID=card.querySelector("[name='ChannelID']").selectedOptions[0].value;
if(newSet.message!=""
&& newSet.nextTrigger.timezone!=""
&& newSet.nextTrigger.date!=""
&& newSet.nextTrigger.intValue!=""
&& newSet.nextTrigger.intString!=""
&& newSet.endTime!=""
&& newSet.ChannelID!=""){
if(newSet.message!=org.message){ready=true;
saveSet.push(`"Message":"${enCode(newSet.message)}"`);
}
if(newSet.nextTrigger.timezone!=org.nextTrigger.timezone){ready=true;
saveSet.push(`"timezone":"${newSet.nextTrigger.timezone}"`);
}
if(!moment(newSet.nextTrigger.date).isSame(org.nextTrigger.date)){ready=true;
saveSet.push(`"nextTriggerDT":"${newSet.nextTrigger.date}"`);
}
if(newSet.nextTrigger.intValue!=org.nextTrigger.intValue || newSet.nextTrigger.intString!=org.nextTrigger.intString){ready=true;
saveSet.push(`"RepeatPd":"${newSet.nextTrigger.intValue}${newSet.nextTrigger.intString}"`);
}
if(!moment(newSet.endTime).isSame(org.endTime)) {ready=true;
saveSet.push(`"endTime":"${newSet.endTime}"`);
}
if(org.ChannelID!=newSet.ChannelID){ready=true;
saveSet.push(`"ChannelID":"${newSet.ChannelID}"`);
}
if(!moment(newSet.endTime).isAfter(newSet.nextTrigger.date)){;
ready=false;
errSet.push("-'End Time' must be after 'Next Trigger Time'");
}
if(newSet.message==""){
ready=false;
errSet.push("-'Message' must not be empty");
}
}
errSet=errSet.join("
")
card.querySelector("div.listGroup__where").innerHTML=errSet;
switch(ready){
case true:
card.querySelector("a[name='save']").classList.remove("hidden");
saveSet.push(`"handle":"${myP.m}${moment().format('YYYYMMDdHHmmss')}"`)
saveSet.push(`"id":"${card.getAttribute("data-value")}"`);
card.querySelector("a[name='save']").setAttribute("value","{" + saveSet.join(",") + "}")
break;
case false:
card.querySelector("a[name='save']").classList.add("hidden");
}
}
function editUrlIndex(obj){
let pobj=obj.parentElement.parentElement.parentElement.querySelectorAll(".listGroup__miniCard");
let type=obj.innerText;
obj=obj.parentElement.parentElement;
if(type=="cancel" && !confirm("You may have unsaved. Hit cancel to stay")){
return;
}
if(type == "cancel" && obj.getAttribute("id")=="new") {
obj.outerHTML="";
}
toggleList(pobj,obj, (type=="edit")? "only" :"");
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#urlindex").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.toggle("hidden")
}
function delUrlIndex(obj){
let pobj=obj.parentElement.parentElement.parentElement.querySelectorAll(".listGroup__miniCard");
if(confirm("Are you sure you want to delete that Group or Link? \nThis can not be undone.")){
ajax("post","get.php", dataUrlIndexSaved,"m=" + myP.m + `&show=delUrlIndex&id=${obj.offsetParent.parentElement.getAttribute("data-value")}`,this);
}
}
function addUrlIndex(obj){
obj.classList.add("hidden")
obj=document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#urlindex").shadowRoot.querySelector("#new").cloneNode(true);
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#urlindex").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("#listGroup").appendChild(obj);
let pobj=document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#urlindex").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelectorAll(".listGroup__miniCard");
toggleList(pobj,obj, "only");
}
function saveUrlIndex(obj){
ajax("post","get.php", dataUrlIndexSaved,"m=" + myP.m + `&show=saveUrlIndex&data=${obj.getAttribute("value")}`,this);
}
/*........./elements/tools/shares/shares.js......*/
function doShares(retobj,arg){
console.log("in Shares");
var tWrapper=arg[1].parentElement.parentElement
var lGroup=arg[1].shadowRoot.querySelector("div.listGroup")
arg[1].shadowRoot.querySelector("yeagerbot").style.display="";
tWrapper.querySelector("#title").innerHTML=myP.show;
var data=JSON.parse(retobj.responseText,true);
var x=0;
var share=data["share"];
for(const [key,value] of Object.entries(share)){
console.log(value);
lastCard=lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length-1]
var card
if(x>0){
card=lastCard.cloneNode(true);
}else{
card=lastCard;
}
//set values
card.querySelector("div.listGroup__linkid").setAttribute("key",value.id);
card.querySelector("div.listGroup__linkid").innerHTML=deCode(value.linkID);
card.querySelector("div.listGroup__channel").innerHTML= value.channelName;
var timeList ="";
var links=Object.entries(data["link"][value.linkID])
for(const [x,y] of links){
timeList +="" + y["guildTag"] + y["channelName"] + "
";
}
card.querySelector("div.listGroup__links").innerHTML=timeList;
//
if(x++>0){
lGroup.appendChild(card);
}
}
if (data.length==0){
lastCard=lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length-1];
lastCard.classList.add("hidden");
}
}
function deleteShare(obj){
if(confirm("Are you sure you want to delete that link? \nThis can not be undone.")){
ajax("post","get.php", dataSharesSaved,"m=" + myP.m + `&show=delShares&id=${obj.offsetParent.parentElement.querySelector("#share_linkid").getAttribute("key")}`,this);
}
}
function dataSharesSaved(){
location.reload();
}
/*........./elements/tools/timers/timers_card.js......*/
function doTimers(retobj,arg){
console.log("in doTimers");
var tWrapper=arg[1].parentElement.parentElement
var lGroup=arg[1].shadowRoot.querySelector("div.listGroup")
arg[1].shadowRoot.querySelector("yeagerbot").style.display="";
tWrapper.querySelector("#title").innerHTML=myP.show;
var data=JSON.parse(retobj.responseText,true);
var newCard;
var x=0;
lastCard=lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length-1]
if(document.querySelector("#bodyWrapper > guildview-main") && document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#timers").shadowRoot.querySelector("#new")==null){
newCard=lastCard.cloneNode(true)
newCard.setAttribute("data-value","new")
newCard.setAttribute("id","new")
newCard.classList.add("hidden")
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#timers").shadowRoot.querySelector("#toolwrapper > div:nth-child(2)").appendChild(newCard)
}
for(const d of data){
console.log(d);
var card
if(x>0){
card=lastCard.cloneNode(true);
}else{
card=lastCard;
}
//set values
setTimerCard(card,d,"view");
//
if(x++>0){
lGroup.appendChild(card);
}
}
if (data.length==0){
lastCard=lGroup.querySelectorAll("div.listGroup__miniCard")[lGroup.querySelectorAll("div.listGroup__miniCard").length-1];
lastCard.classList.add("hidden");
}
}
async function setTimerCard(card,d="",type=""){
console.log(d);
switch(type){
case "view":
card.setAttribute("data-value",d.id);
card.querySelector("div.listGroup__desc").innerHTML=deCode(d.Message);
card.querySelector("div.listGroup__next").innerHTML=moment(d.nextTrigger).format("yyyy-MM-DD hh:mm:ss A") + "
(" + d.timezone + ")";
card.querySelector("div.listGroup__where").innerHTML=d.ChannelID.charAt(0) + d.ChannelName;
card.querySelector("div.listGroup__addBy").innerHTML="added by: " + d.Uname;
card.querySelector("div.listGroup__desc").setAttribute("data-value", deCode(d.Message));
card.querySelector("div.listGroup__next").setAttribute("data-value", d.nextTrigger)
card.querySelector("div.listGroup__next").setAttribute("data-value2", d.timezone);
card.querySelector("div.listGroup__next").setAttribute("data-value3", d.RepeatPd.match(/[\d]+/).join(""));
card.querySelector("div.listGroup__next").setAttribute("data-value4", d.RepeatPd.match(/[\D]/)[0]);
card.querySelector("div.listGroup__next").setAttribute("data-endTime", d.endTime);
card.querySelector("div.listGroup__where").setAttribute("data-value", d.ChannelID.charAt(0) + d.ChannelName);
card.querySelector("div.listGroup__where").setAttribute("data-value2", d.ChannelID);
card.querySelector("div.listGroup__addBy").setAttribute("data-value", d.Uname);
card.querySelector("div.listGroup__addBy").setAttribute("data-value2", d.authorID);
break;
case "review":
card.querySelector("div.listGroup__desc").innerHTML=card.querySelector("div.listGroup__desc").getAttribute("data-value");
card.querySelector("div.listGroup__next").innerHTML=moment(card.querySelector("div.listGroup__next").getAttribute("data-value")).format("yyyy-MM-DD hh:mm:ss A")+ " ("+ card.querySelector("div.listGroup__next").getAttribute("data-value2") + ")";
card.querySelector("div.listGroup__where").innerHTML=card.querySelector("div.listGroup__where").getAttribute("data-value");
break;
case "edit":
card.querySelector("div.listGroup__desc").innerHTML="";
card.querySelector("div.listGroup__next").innerHTML=
"" + getDMZoptions("",card.querySelector("div.listGroup__next").getAttribute("data-value2"))
+ "
"
+ "
" + getRPDoptions("RepeatPd", card.querySelector("div.listGroup__next").getAttribute("data-value4"))
+ ""
+ "" + await buildSelectList(card.querySelector("div.listGroup__where").getAttribute("data-value2"),"all","ChannelID");
card.querySelector("div.listGroup__where").innerHTML="";
card.querySelectorAll("select,input,textarea").forEach((x)=>{
x.addEventListener("change",validateTimer);
x.addEventListener("select",validateTimer);
})
break;
}
}
function validateTimer(event){
if(!event)return;
let card =event.target.offsetParent
let org=[], newSet=[], errSet=[], saveSet=[];
let ready=false;
org.nextTrigger=[];
newSet.nextTrigger=[];
org.message=card.querySelector("div.listGroup__desc").getAttribute("data-value");
org.nextTrigger=[];
org.nextTrigger.timezone=card.querySelector("div.listGroup__next").getAttribute("data-value2");
org.nextTrigger.date=card.querySelector("div.listGroup__next").getAttribute("data-value")
org.nextTrigger.intValue=+card.querySelector("div.listGroup__next").getAttribute("data-value3");
org.nextTrigger.intString=card.querySelector("div.listGroup__next").getAttribute("data-value4");
org.endTime=card.querySelector("div.listGroup__next").getAttribute("data-endTime");
org.ChannelID=card.querySelector("[name='ChannelID']").getAttribute("data-value");
newSet.message=card.querySelector("[name='message']").value;
newSet.nextTrigger=[];
newSet.nextTrigger.timezone=card.querySelector("[name='timeZone']").selectedOptions[0].value;
newSet.nextTrigger.date=card.querySelector("[name='nextTrigger']").value
newSet.nextTrigger.intValue=+card.querySelector("input[name='RepeatPd']").value;
newSet.nextTrigger.intString=card.querySelector("select[name='RepeatPd']").selectedOptions[0].value;
newSet.endTime=card.querySelector("[name='endTime']").value;
newSet.ChannelID=card.querySelector("[name='ChannelID']").selectedOptions[0].value;
if(newSet.message!=""
&& newSet.nextTrigger.timezone!=""
&& newSet.nextTrigger.date!=""
&& newSet.nextTrigger.intValue!=""
&& newSet.nextTrigger.intString!=""
&& newSet.endTime!=""
&& newSet.ChannelID!=""){
if(newSet.message!=org.message){ready=true;
saveSet.push(`"Message":"${enCode(newSet.message)}"`);
}
if(newSet.nextTrigger.timezone!=org.nextTrigger.timezone){ready=true;
saveSet.push(`"timezone":"${newSet.nextTrigger.timezone}"`);
}
if(!moment(newSet.nextTrigger.date).isSame(org.nextTrigger.date)){ready=true;
saveSet.push(`"nextTriggerDT":"${newSet.nextTrigger.date}"`);
}
if(newSet.nextTrigger.intValue!=org.nextTrigger.intValue || newSet.nextTrigger.intString!=org.nextTrigger.intString){ready=true;
saveSet.push(`"RepeatPd":"${newSet.nextTrigger.intValue}${newSet.nextTrigger.intString}"`);
}
if(!moment(newSet.endTime).isSame(org.endTime)) {ready=true;
saveSet.push(`"endTime":"${newSet.endTime}"`);
}
if(org.ChannelID!=newSet.ChannelID){ready=true;
saveSet.push(`"ChannelID":"${newSet.ChannelID}"`);
}
if(!moment(newSet.endTime).isAfter(newSet.nextTrigger.date)){;
ready=false;
errSet.push("-'End Time' must be after 'Next Trigger Time'");
}
if(newSet.message==""){
ready=false;
errSet.push("-'Message' must not be empty");
}
}
errSet=errSet.join("
")
card.querySelector("div.listGroup__where").innerHTML=errSet;
switch(ready){
case true:
card.querySelector("a[name='save']").classList.remove("hidden");
saveSet.push(`"handle":"${myP.m}${moment().format('YYYYMMDdHHmmss')}"`)
saveSet.push(`"id":"${card.getAttribute("data-value")}"`);
card.querySelector("a[name='save']").setAttribute("value","{" + saveSet.join(",") + "}")
break;
case false:
card.querySelector("a[name='save']").classList.add("hidden");
}
}
function editTimer(obj){
let pobj=obj.parentElement.parentElement.parentElement.querySelectorAll(".listGroup__miniCard");
let type=obj.innerText;
obj=obj.parentElement.parentElement;
if(type=="cancel" && !confirm("You may have unsaved. Hit cancel to stay")){
return;
}
if(type == "cancel" && obj.getAttribute("id")=="new") {
obj.outerHTML="";
}
toggleList(pobj,obj, (type=="edit")? "only" :"");
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#timers").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("yeagerbot > div.tool_main_desc > a").classList.toggle("hidden")
}
function delTimer(obj){
let pobj=obj.parentElement.parentElement.parentElement.querySelectorAll(".listGroup__miniCard");
if(confirm("Are you sure you want to delete that Timer? \nThis can not be undone.")){
ajax("post","get.php", dataTimersSaved,"m=" + myP.m + `&show=delTimers&id=${obj.offsetParent.parentElement.getAttribute("data-value")}`,this);
}
}
function addTimer(obj){
obj.classList.add("hidden")
obj=document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#timers").shadowRoot.querySelector("#new").cloneNode(true);
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#timers").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelector("#listGroup").appendChild(obj);
let pobj=document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#timers").shadowRoot.querySelector("#toolwrapper > div:nth-child(2) > list-view").shadowRoot.querySelectorAll(".listGroup__miniCard");
toggleList(pobj,obj, "only");
}
function saveTimer(obj){
ajax("post","get.php", dataTimersSaved,"m=" + myP.m + `&show=saveTimers&data=${obj.getAttribute("value")}`,this);
}
/*........./elements/tools/settings/settings.js......*/
function doSetting(retobj, arg) {
/*
data[0]=guild
data[1]=chnameupds table details
data[2]=chnameupds data
*/
console.log("in Settings");
var tWrapper = arg[1].parentElement.parentElement
var lGroup = arg[1].shadowRoot.querySelector("#settings > form")
arg[1].shadowRoot.querySelector("yeagerbot").style.display = "";
tWrapper.querySelector("#title").innerHTML = myP.show;
var data = JSON.parse(retobj.responseText, "true");
var x = 0;
var tmpData = []
for (let tmp of data[0]) {
if (tmp.guildID == "default") {
tmpData["default"] = tmp
} else {
tmpData["0"] = tmp
}
}
tmpData["chnameupds"] = [];
tmpData["chnameupds"]["options"] = JSON.parse(data[1][0]["TABLE_COMMENT"], "true");
tmpData["chnameupds"]["data"] = data[2];
data = tmpData;
tmpData = undefined;
setSettingsCard(lGroup, data)
}
function verify(obj) {
switch (obj.type) {
case "textarea":
if (obj.value == '') obj.value = document.defaultSettings[obj.id]
}
}
function doSettingsEdit(obj) {
let x = obj.parentElement.parentElement.parentElement;
if (obj.type == "radio") {
return saveSettings(obj)
};
if (obj.innerText.toLowerCase() == "save") {
saveSettings(obj)
} else if (obj.innerText.toLowerCase() == "cancel") {
//return location.reload();
if (x.id != 'main_settings') {
x.querySelectorAll("textarea").forEach((itmz) => {
itmz.value = itmz.defaultValue
})
} else {
return location.reload();
}
}
if (x.id != 'main_settings') {
x.classList.toggle("big");
if (x.querySelector("a[name='cancel']") == null) return;
x.querySelector("a[name='cancel']").classList.toggle("hidden");
x.querySelector("div[name='message_value']").classList.toggle("hidden");
x.parentNode.querySelectorAll(".modList__item").forEach((xObj) => {
if (x != xObj) {
xObj.classList.toggle("hidden");
}
})
if (x.classList.contains("big")) {
x.querySelector(".tool_btn").innerHTML = "Save";
} else {
x.querySelector(".tool_btn").innerHTML = x.querySelector(".tool_btn").getAttribute("data_text");
}
}
}
function showTools(obj) {
if (obj.id == "main_settings") {
let org = JSON.parse(obj.getAttribute('data-org'));
let def = JSON.parse(obj.getAttribute('data-default'));
let test = false;
obj.querySelector("input#prefix").value = obj.querySelector("input#prefix").value.trim();
obj.querySelector("input#guildTag").value = obj.querySelector("input#guildTag").value.trim();
if (obj.querySelector("input#prefix").value == "") obj.querySelector("input#prefix").value = def["prefix"];
if (
obj.querySelector("input#prefix").value != org["prefix"] ||
obj.querySelector("input#guildTag").value != org["guildTag"] ||
obj.querySelector("input#tagPlace:checked").value != org["tagPlace"] ||
obj.querySelector("input#responses:checked").value != org["responses"] ||
obj.querySelector("select#modRole").value != org["modRole"] ||
obj.querySelector("select#adminRole").value != org["adminRole"] |
obj.querySelector("select#modLogChannel").value != org["modLogChannel"]
) {
obj.querySelector("div.mod__tool").classList.remove("hidden");
} else {
obj.querySelector("div.mod__tool").classList.add("hidden");
}
if (obj.querySelector("input#prefix").value != "" && obj.querySelector("input#guildTag").value != "") {
obj.querySelector("div.mod__tool>a[name='save']").classList.remove("hidden");
} else {
obj.querySelector("div.mod__tool>a[name='save']").classList.add("hidden");
}
}
}
async function setSettingsCard(card, d) {
if (!goodData()) {
delete window.Channels;
}
//let card=obj.querySelector("div.main");
if (card.querySelector("select#modRole") == null) return;
//deCode(
card.setAttribute("data-default", JSON.stringify(d["default"]));
card.setAttribute("data-org", JSON.stringify(d[0]));
if (d[0].premium == "1") {
card.querySelector("span#premium_expires").innerHTML = "Expires: " + d[0].premium_expires + " Central Time";
}
card.querySelector("input#prefix").setAttribute("value", d[0].prefix);
card.querySelector("input#guildTag").setAttribute("value", d[0].guildTag);
card.querySelector("input#responses[value='" + d[0].responses + "']").checked = true;
card.querySelector("input#tagPlace[value='" + d[0].tagPlace + "']").checked = true;
card.querySelector("select#modLogChannel").outerHTML = await buildSelectList(d, "Channels", "modLogChannel");
card.querySelector("select#modRole").outerHTML = await buildSelectList(d, "roles", "modRole");
card.querySelector("select#adminRole").outerHTML = await buildSelectList(d, "roles", "adminRole");
let x = card.parentElement.nextElementSibling.querySelector("div.modList__box");
setUP_mod(x, "welcomeDMessage", d);
setUP_mod(x, "goodbyeDMessage", d);
setUP_mod(x, "welcomeMessage", d);
setUP_mod(x, "chnameupds", d);
setUP_mod(x, "reactAllow", d);
card.parentElement.parentElement.querySelector("#temp").outerHTML = "";
}
function saveSettings(obj) {
let pobj = obj.parentElement.parentElement.parentElement;
/*let type=obj.innerText;
obj=obj.parentElement.parentElement;
toggleList(pobj,obj, (type=="save")? "only" :"");
*/
let data = {};
let nameMap = [];
let orgData = JSON.parse(
deCode(
document.querySelector("#bodyWrapper > guildview-main").shadowRoot.querySelector("#settings").shadowRoot.querySelector("list-view").shadowRoot.querySelector("#main_settings").getAttribute("data-org"), "org")
);
nameMap.welcomeMessage = "welcomeEnabled";
nameMap.welcomeDMessage = "welcomeDMenabled";
nameMap.goodbyeDMessage = "goodbyeDMenabled";
let id = obj.parentElement.parentElement.parentElement.id;
data["itemName"] = id;
if (obj.innerHTML.toLowerCase() == "save" || obj.name == "status") {
pobj.querySelectorAll("input,textarea,select").forEach((itm) => {
let _name = nameMap[name] || itm.name || nameMap[id] || itm.id
switch (itm.type.toLowerCase()) {
case "text":
case "textarea":
data[itm.id] = enCode(itm.value);
orgData[itm.id] = enCode(itm.value);
break;
case "checkbox":
case "radio":
if (itm.checked) {
if (typeof((data[_name])) != "undefined" && ((data[_name])) != "" && ((data[_name])) != null) {
data[_name] += ",";
} else {
data[_name] = "";
}
data[_name] += itm.value;
if (data[_name] == "") data[_name] = null;
orgData[_name] = data[_name];
} else {
if (typeof((data[_name])) == "undefined" || ((data[_name])) == "" || ((data[_name])) == null) {
data[_name] = null;
}
}
break;
case "select-one":
let id;
if (itm.nodeName == "SELECT") {
id = itm.id
itm = itm.querySelector("option:checked");
if (itm == null) break;
itm.setAttribute("id", id);
}
if (data.itemName == 'serverstatsEnabled' && itm.value == "" && itm.innerHTML.toLowerCase().includes("new channel")) {
itm.setAttribute("value", "new channel");
}
if (itm.value != "") {
data[itm.id] = itm.value;
orgData[itm.id] = itm.value;
}
break;
default:
return;
}
})
data = JSON.stringify(data);
obj.parentElement.parentElement.parentElement.setAttribute("data-org", JSON.stringify(orgData));
obj.parentElement.parentElement.parentElement.innerHTML = "Please wait while I complete your request. Do not close.";
ajax("post", "get.php", settingsSaved, "m=" + myP.m + `&show=saveSettings&data=${data}`, this);
}
showTools(pobj)
}
function settingsSaved(obj) {
if (obj.status == 200) {
location.reload();
} else {
alert(obj.responseText);
}
}
async function setUP_mod(pobj, what, d) {
//if (what=="chnameupds")
document.defaultSettings = d["default"];
chnameupds = d.chnameupds;
d = d[0];
let newObj = pobj.querySelector("#temp").cloneNode(true);
//if (what == "chnameupds")
switch (what) {
case "chnameupds":
newObj.setAttribute("id", "serverstatsEnabled");
newObj.querySelector(".mod__name").innerHTML = "Server Stats Channels";
newObj.querySelector(".mod__desc").innerHTML = "YeagerBot will use channels at the top of your channels list to display the information you request." +
"
This will change the channel name.";
newObj.querySelector(".mod__tool > a").innerHTML = "Set Channels Options";
if (d["serverstatsEnabled"] == 1) {
//yeagerbot > div.modList__wrapper > div.modList__box > div > div.mod__tool > a
newObj.querySelector(".mod__status > input[value='1']").setAttribute("checked", "true");
} else {
newObj.querySelector(".mod__status > input[value='0']").setAttribute("checked", "true");
}
let div = document.createElement("div");
let cat_id = "";
div.classList.add("chnameupds");
div.innerHTML = await buildSelectList({
"objType": discordChannelType["GuildCategory"],
"value": (chnameupds.data && chnameupds.data.length > 0 && chnameupds.data[0].parentId) ? chnameupds.data[0].parentId : ""
}, discordChannelType["GuildCategory"], "Category", "", false, true, "Create a new Category");
for (itm in chnameupds.options) {
console.log(Object.keys)
let div2 = document.createElement("div");
div2.classList.add("chnameupds_item");
//
let id;
if (chnameupds.data && chnameupds.data.find((x) => x.nameType == itm)) {
id = chnameupds.data.find((x) => x.nameType == itm).channelID;
} else {
id = "";
}
div2.innerHTML = chnameupds.options[itm].name + "
" + chnameupds.options[itm].desc + "
" +
await buildSelectList({
"objType": "chnameupds",
"value": id
}, "Channels", itm, "", false, true, ["***OFF***-Turn on by making a selection.", "Create a new Channel"]);
div.appendChild(div2);
}
newObj.querySelector("#message_value").innerHTML = div.outerHTML; //.outerHTML= await buildSelectList(d,"Channels","channelName","",true);
break;
case "welcomeMessage":
newObj.setAttribute("id", "welcomeMessage");
newObj.querySelector(".mod__name").innerHTML = "Server Welcome Message";
newObj.querySelector(".mod__desc").innerHTML = "A message sent to a channel to welcome a new user to the server.";
newObj.querySelector(".mod__tool > a").innerHTML = "Edit message";
if (d["welcomeEnabled"] == 1) {
//yeagerbot > div.modList__wrapper > div.modList__box > div > div.mod__tool > a
newObj.querySelector(".mod__status > input[value='1']").setAttribute("checked", "true");
} else {
newObj.querySelector(".mod__status > input[value='0']").setAttribute("checked", "true");
}
newObj.querySelector("select").outerHTML = await buildSelectList(d, "Channels", "welcomeChannel", "", false);
newObj.querySelector("select").setAttribute("id", "welcomeChannel")
newObj.querySelector("div.box.Channel").classList.remove("hidden");
newObj.querySelector("textarea[id='itm_value']").innerHTML = deCode(d["welcomeMessage"])
newObj.querySelector("textarea[id='itm_value']").setAttribute("old", deCode(d["welcomeMessage"]))
newObj.querySelector("textarea[id='itm_value']").setAttribute("id", "welcomeMessage")
break;
case "welcomeDMessage":
newObj.setAttribute("id", "welcomeDMessage");
newObj.querySelector(".mod__name").innerHTML = "Welcome Direct Message";
newObj.querySelector(".mod__desc").innerHTML = "A message sent directly to new user to welcome them to the server.";
newObj.querySelector(".mod__tool > a").innerHTML = "Edit message";
if (d["welcomeDMenabled"] == 1) {
//yeagerbot > div.modList__wrapper > div.modList__box > div > div.mod__tool > a
newObj.querySelector(".mod__status > input[value='1']").setAttribute("checked", "true");
} else {
newObj.querySelector(".mod__status > input[value='0']").setAttribute("checked", "true");
}
newObj.querySelector("textarea[id='itm_value']").innerHTML = deCode(d["welcomeDMessage"])
newObj.querySelector("textarea[id='itm_value']").setAttribute("old", deCode(d["welcomeDMessage"]))
newObj.querySelector("textarea[id='itm_value']").setAttribute("id", "welcomeDMessage")
break;
case "goodbyeDMessage":
newObj.setAttribute("id", "goodbyeDMessage");
newObj.querySelector(".mod__name").innerHTML = "Goodbye Direct Message";
newObj.querySelector(".mod__desc").innerHTML = "A message sent directly to a user when they leave your server.";
newObj.querySelector(".mod__tool > a").innerHTML = "Edit message";
if (d["goodbyeDMenabled"] == 1) {
//yeagerbot > div.modList__wrapper > div.modList__box > div > div.mod__tool > a
newObj.querySelector(".mod__status > input[value='1']").setAttribute("checked", "true");
} else {
newObj.querySelector(".mod__status > input[value='0']").setAttribute("checked", "true");
}
newObj.querySelector("textarea[id='itm_value']").innerHTML = deCode(d["goodbyeDMessage"]);
newObj.querySelector("textarea[id='itm_value']").setAttribute("old", deCode(d["goodbyeDMessage"]))
newObj.querySelector("textarea[id='itm_value']").setAttribute("id", "goodbyeDMessage")
break;
case "reactAllow":
newObj.setAttribute("id", "reactAllow");
newObj.querySelector(".mod__name").innerHTML = "Reaction Tracking";
newObj.querySelector(".mod__desc").innerHTML = "Track who reacted to a tracked message.";
newObj.querySelector(".mod__tool > a").innerHTML = "Edit settings";
newObj.querySelector(".mod__status").outerHTML = "";
//loadReactAllow(newObj,d);
setTimeout(loadReactAllow, 1000, newObj, d);
break;
}
newObj.classList.remove("hidden");
pobj.appendChild(newObj);
newObj.querySelector(".mod__tool > a").setAttribute("data_text", newObj.querySelector(".mod__tool > a").innerHTML)
}
async function loadReactAllow(obj, d) {
//message_value
//if (obj.querySelector("div.roles")==null) {return setTimeout(loadReactAllow,1000,Obj,d);}
//
let target = obj.querySelector("#message_value");
target.innerHTML = "";
let robj = obj.parentElement.parentElement.parentElement.querySelector("div[type='reactAllow']");
let roleBox = obj.parentElement.parentElement.parentElement.querySelector("div.roles");
let usersBox = obj.parentElement.parentElement.parentElement.querySelector("div.users");
let channelBox = obj.parentElement.parentElement.parentElement.querySelector("div.channels");
target.appendChild(robj);
robj.classList.remove("hidden");
robj.querySelector("#reactFlag").setAttribute("value", ((d.reactFlag) ? d.reactFlag : ""));
robj.querySelector("#reactFlag").setAttribute("data-org", ((d.reactFlag) ? d.reactFlag : ""));
let sel = "";
roleBox.innerHTML = "
" + sel;
//buildSelectList(value, type, name,id="",tag=true)
sel = "";
usersBox.innerHTML = "
" + sel;
sel = "";
channelBox.innerHTML = "
" + sel;
/*
usersBox.querySelector("select").setAttribute("onchange","settingsReactAllow_change(this)");
channelBox.querySelector("select").setAttribute("onchange","settingsReactAllow_change(this)");
roleBox.querySelector("select").setAttribute("onchange","settingsReactAllow_change(this)");
*/
}
function settingsReactAllow_change(obj) {
let mainbox = obj.parentElement.parentElement.parentElement.querySelector("#allowRoles_mainBox");
if ((obj.id == "allowRoles_mainBox" && obj.selectedOptions.length <= 0) || (obj.id == "allowRoles_mainBox" && obj.selectedOptions.length > 0 && !confirm("Do you want to remove the selected items? They will go back to the other boxs."))) return;
let roleBox = obj.parentElement.parentElement.parentElement.querySelector("div.roles select");
let usersBox = obj.parentElement.parentElement.parentElement.querySelector("div.users select");
let channelBox = obj.parentElement.parentElement.parentElement.querySelector("div.channels select");
//
let target;
for (itm of obj.selectedOptions) {
if (mainbox != obj) {
target = mainbox;
} else {
//
switch (itm.innerHTML.substr(0, 1)) {
case "@":
target = usersBox;
break;
case "#":
target = channelBox;
break;
default:
target = roleBox;
}
}
if (target.querySelector("option[value='${itm.value}']") == null) {
target.appendChild(itm);
target.selectedIndex = -1;
}
}
}
/*........./elements/guildList/guildList.js......*/
UserServerTemplete = document.createElement(`yeagerbot`);
btn = document.createElement(`input`);
btn.classList.add("active");
btnNames = ["Admin", "User", "US"];
ajax("get", "inc/elements/guildList/guildList.html", UserServerLoadTemp);
class cls_GuildList extends HTMLElement {
constructor() {
super();
// console.log("inside the class")
this.attachShadow({
mode: 'open'
});
//console.log(UserProfleTemplete);
var newObj = UserServerTemplete.cloneNode(true)
this.shadowRoot.appendChild(newObj);
var btns = this.shadowRoot.querySelector("#guildOptions");
Array.prototype.forEach.call(Object.keys(UserServerData), typeIDX => {
if (typeIDX == "yes" || typeIDX == "database") return;
btn.value = btnNames.shift();
btn.type = "button"
btn.id = typeIDX;
btns.appendChild(btn.cloneNode());
btns.lastChild.addEventListener("click", toggleGuildList, btns.lastChild)
btn.className = "";
if (UserServerData[typeIDX]) {
Array.prototype.forEach.call(UserServerData[typeIDX], theNode => {
let newTag = document.createElement('sm-gt');
newTag.setAttribute("data", JSON.stringify(theNode));
newTag.setAttribute("id", theNode.id);
newTag.setAttribute("data-type", typeIDX)
if (Object.keys(UserServerData).indexOf(typeIDX) != 0) {
newTag.classList.add("hidden");
}
let obj = this.shadowRoot.querySelector("#gulildListWrapper");
obj.appendChild(newTag);
});
};
});
let div = document.createElement(`div`);
btn.type = "checkbox"
btn.id = "only";
btn.classList.add("only");
btns.appendChild(btn.cloneNode());
btns.lastChild.addEventListener("click", toggleGuildList, btns.lastChild);
div.appendChild(btns.lastChild);
let br = document.createElement(`hr`)
br.classList.add("breakline")
div.appendChild(br);
btn.type = "checkbox"
btn.id = "onlyActive";
btn.classList.remove("only");
btn.classList.add("onlyActive");
btns.appendChild(btn.cloneNode());
btns.lastChild.addEventListener("click", toggleGuildList, btns.lastChild);
div.appendChild(btns.lastChild);
div.classList.add("onlyOptions")
btns.appendChild(div);
}
}
function toggleGuildList(event) {
console.log(event);
var btn = event.target;
var _parent = (btn.parentElement.classList.value == 'onlyOptions') ? btn.parentElement.parentElement : btn.parentElement;
var _showP=_parent.querySelectorAll("input#only:checked").length==1;
var _showA=_parent.querySelectorAll("input#onlyActive:checked").length==1;
if (!btn.classList.contains("active")) {
if (btn.id != "only" && btn.id != "onlyActive") _parent.querySelectorAll("input").forEach((x) => {
if (btn == x) {
x.classList.add("active");
} else {
x.classList.remove("active");
}
});
_parent.parentElement.querySelectorAll("sm-gt").forEach((x) => {
let f1 = function () {
if ((JSON.parse(x.getAttribute("data")).premium
&& JSON.parse(x.getAttribute("data")).premium == 1)||!_showP) {
return true
} else {
return false
}
}();
let id = x.parentElement.querySelector("#guildOptions").querySelector(".active").id;
let f2 = function () {
if ((JSON.parse(x.getAttribute("data")).active
&& JSON.parse(x.getAttribute("data")).active == 1) || !_showA) {
return true
} else {
return false
}
}();
if (id == x.getAttribute("data-type") && (f1 && f2) ) {
x.classList.remove("hidden");
}else{
x.classList.add("hidden");
}
});
}
}
function UserServerLoadTemp(retobj, arg) {
UserServerTemplete.innerHTML = retobj.responseText;
//console.log(UserServerTemplete);
ajax("get", "inc/elements/guildList/guildList.php", UserServerReady);
}
function UserServerReady(retobj, arg) {
UserServerData = JSON.parse(retobj.responseText);
/*
console.log("inside ready");
console.log(retobj);
console.log(UserServerData);
*/
window.customElements.define("guild-list", cls_GuildList);
}
/*........./js/main.js......*/
setupMYp();
//document.querySelector("*").classList.add("hidden");
//enumerated types https://discord-api-types.dev/api/discord-api-types-v10/enum/ChannelType#GuildText
window.discordChannelType = {};
discordChannelType["GuildText"] = 0;
discordChannelType["GuildVoice"] = 2;
discordChannelType["GuildCategory"] = 4;
window.addEventListener("load", (event) => {
setTimeout(updateMain, 1000 * 5)
});
function setupMYp() {
var urlParams = new URLSearchParams(window.location.search);
myP = {};
myP.m = urlParams.get('m');
myP.show = urlParams.get('show');
if (urlParams.get('database')) {
myP.database = urlParams.get('database');
}
}
function updateMain() {
console.log("in updateMain");
document.querySelector("*").classList.remove("hidden");
var urlParams = new URLSearchParams(window.location.search);
var noPerms = false;
if (typeof UserServerData == "undefined" || UserServerData == null) return setTimeout(updateMain, 1000);
var guild = (UserServerData != null && UserServerData.userMissingList != null) ? UserServerData.userMissingList.find(itm => itm.id == myP.m) : null;
myP.m = urlParams.get('m');
myP.show = urlParams.get('show');
if (urlParams.get('database')) {
myP.database = urlParams.get('database');
}
if (myP.m != null) {
if (guild == null && (UserServerData.yes == null)) {
noPerms = true
}
if (guild == null) {
guild = (UserServerData != null && UserServerData.userAdminList != null) ? UserServerData.userAdminList.find(itm => itm.id == myP.m) : null;
if (guild != null) {
noPerms = false;
}
}
}
console.log(myP);
if (myP.m && document.querySelector("guild-list") && document.querySelector("guild-list").shadowRoot && document.querySelector("guild-list").shadowRoot.getElementById(`${myP.m}`)) {
let newTag0 = document.createElement('guildView-Main');
if (noPerms) {
newTag0.classList.add("hidden");
} else {
newTag0.classList.remove("hidden");
}
document.querySelector("#bodyWrapper").innerHTML = "";
document.querySelector("#bodyWrapper").appendChild(newTag0);
document.querySelector("guild-list").shadowRoot.querySelector("#guildOptions").scrollIntoView();
window.scrollTo(0, 0);
/////////////////
let tools = document.querySelector("div#guildWrapper guild-tools").shadowRoot;
let invite;
if (tools) {
invite = tools.querySelector("#invite");
}
let data = JSON.parse(document.querySelector("guild-list").shadowRoot.getElementById(`${myP.m}`).getAttribute("data"), true);
let dataType = document.querySelector("guild-list").shadowRoot.getElementById(`${myP.m}`).getAttribute("data-type");
invite.setAttribute("href", `https://discord.com/api/oauth2/authorize?client_id=737057471763316736&permissions=8&scope=bot%20applications.commands&guild_id=${myP.m}`)
if (!data.active && dataType == "userAdminList") { //not data.active and guild admin
tools.querySelectorAll('div.active').forEach((x) => x.classList.add("hidden"))
tools.querySelectorAll('div.inactive').forEach((x) => x.classList.remove("hidden"))
tools.querySelectorAll('div.notAdmin').forEach((x) => x.classList.add("hidden"))
} else if (data.active && (dataType == "userAdminList" || UserServerData.yes)) { //data.active and guild admin or bot admin
tools.querySelectorAll('div.active').forEach((x) => x.classList.remove("hidden"))
tools.querySelectorAll('div.inactive').forEach((x) => x.classList.add("hidden"))
tools.querySelectorAll('div.notAdmin').forEach((x) => x.classList.add("hidden"))
} else if (typeof UserServerData.yes == "undefined") { //catch-all for non-botadmins
tools.querySelectorAll('div.active').forEach((x) => x.classList.add("hidden"))
tools.querySelectorAll('div.inactive').forEach((x) => x.classList.add("hidden"))
tools.querySelectorAll('div.notAdmin').forEach((x) => x.classList.remove("hidden"))
} else if (!data.active) { // is a botadmin
tools.querySelectorAll('div.active').forEach((x) => x.classList.add("hidden"))
tools.querySelectorAll('div.inactive').forEach((x) => x.classList.add("hidden"))
tools.querySelectorAll('div.notAdmin').forEach((x) => x.classList.remove("hidden"))
} else if (UserServerData.yes) { // is a botadmin
tools.querySelectorAll('div.active').forEach((x) => x.classList.remove("hidden"))
tools.querySelectorAll('div.inactive').forEach((x) => x.classList.add("hidden"))
tools.querySelectorAll('div.notAdmin').forEach((x) => x.classList.add("hidden"))
}
//////////////
} else {
//setTimeout( dispatchEvent(new Event('load')),1000)
}
if (!window.tmz) ajax("post", "get.php", setDMZ, "m=get&show=getTMZ");
getTarget();
updateActive();
}
function updateActive() {
var urlParams = new URLSearchParams(window.location.search);
myP = {};
myP.m = urlParams.get('m');
myP.show = urlParams.get('show');
if (myP.m != null) {
let data = JSON.parse(document.querySelector("guild-list").shadowRoot.getElementById(myP.m).getAttribute("data"));
// console.log(_elm);
try {
let img = document.querySelector("guild-list").shadowRoot.getElementById(myP.m).shadowRoot.querySelector(".guildSmallTile__img").cloneNode(true);
let str;
//img.src="https://cdn.discordapp.com/icons/" + data.id + "/" + data.icon + ".png";
document.querySelector('#activeImg').classList.add("premium");
document.querySelector('#activeImg >img').src = img.src;
document.querySelector('#activeImg >img').classList = img.classList;
if (!data.icon || true) {
document.querySelector('#activeImg >p').innerHTML = data.name;
}
document.querySelector('#boxWrapper').classList.remove("hidden");
} catch (error) {
console.error(error);
}
} else {
try {
document.querySelector('#boxWrapper').classList.add("hidden");
} catch (error) {
console.error(error);
}
}
}
function ajax(method, url, callback, post = null) {
var args = Array.prototype.slice.call(arguments, 3);
setupMYp();
if (typeof myP != "undefined" && post) {
if (myP.database && !post.includes("database")) {
post = `${post}&database=${myP.database}`
}
} else if (typeof myP != "undefined" && myP.database) {
if (method == "post") {
post = `database=${myP.database}`
} else {
if (url.includes("?")) {
url = url + `&database=${myP.database}`
} else {
url = url + `?database=${myP.database}`
}
}
}
console.log(url);
console.log("Post=");
console.log(post);
//if(object!=""){ object.innerHTML=uImg();}
var xhttp = new XMLHttpRequest();
if (callback != null) {
xhttp.onload = function () {
if (xhttp.readyState === 4) {
if (xhttp.status === 200) {
console.log(xhttp.responseText);
callback(xhttp, args);
} else {
console.log(xhttp.responseText);
console.error(xhttp.statusText);
}
}
};
}
xhttp.open(method, url, callback != null);
if (method == "post") {
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset/utf-8");
}
xhttp.send(post);
if (xhttp.status === 200) {
console.log(xhttp.responseText);
return xhttp.responseText;
}
}
function enCode(msg) {
let retn = encodeURIComponent(msg
.replaceAll("%", "~yb25~")
.replaceAll("@", "%40")
.replaceAll("&", "%26")
.replaceAll("(", "%28")
.replaceAll(")", "%29")
.replaceAll("'", "%27")
.replaceAll("\n\f", "~yb0D~~yb0D~")
.replaceAll("\n", "~yb0D~")
)
/*
.replaceAll("{","%7B")
.replaceAll("}","%7D")
*/
return retn;
}
function deCode(msg, type) {
if (!msg) return "Error";
let customList = msg.match(/(~yb).*?(~)/g);
if (customList) {
customList.forEach((x) => {
msg = msg.replace(x, String.fromCharCode(parseInt(x.match(/(?!~)(?!y)(?!b).*?(?=~)/), 16)));
});
}
let retn = decodeURIComponent(msg)
.replaceAll("%40", "@")
.replaceAll("%26", "&")
.replaceAll("%28", "(")
.replaceAll("%29", ")")
.replaceAll("%27", "'")
.replaceAll("<", "<")
.replaceAll(">", ">")
if (type && type == "org") {
retn = retn.replaceAll("\n", "
")
}
return retn;
}
function setDMZ(retobj, arg) {
window.tmz = JSON.parse(retobj.responseText);
}
function getDMZoptions(parentObj, value) {
var Select = document.createElement('select');
Select.setAttribute("name", "timeZone")
for (item of window.tmz) {
var opt = document.createElement("option");
opt.value = item.timezone;
opt.innerHTML = item.timezone + "..." + item.name; // whatever property it has
if (opt.value == value) {
opt.setAttribute("selected", "true");
}
// then append it to the select element
Select.appendChild(opt);
}
if (parentObj == "") {
return Select.outerHTML;
}
}
function ch_filterChg(obj) {
var filter;
switch (obj.selectedOptions[0].value) {
case "all":
filter = ['@', '#'];
break;
case "users":
filter = ["@"];
break;
case "channels":
filter = ["#"];
break;
}
for (var x of Array.from(obj.parentElement.querySelector("[name='ChannelID']").children)) {
var test = false;
for (var tag of filter) {
if (x.value.startsWith(tag)) {
test = true;
}
}
if (x.index == obj.parentElement.querySelector("[name='ChannelID']").selectedIndex) test = true;
if (test) {
x.classList.remove("hidden")
} else {
x.classList.add("hidden")
}
}
}
function getRPDoptions(name, value) {
var value = value.toLowerCase();
var Select = document.createElement('select');
Select.setAttribute("name", name);
var obj = JSON.parse('{"y":"year","d":"day","h":"hour","m":"minute","s":"second"}');
for (item in obj) {
var opt = document.createElement("option");
opt.value = item;
opt.innerHTML = obj[item]; // whatever property it has
if (opt.value == value) {
opt.setAttribute("selected", "true");
}
// then append it to the select element
Select.appendChild(opt);
}
return Select.outerHTML;
}
function getRole(obj, id) {
return obj.find(x => x.roleID == id);
}
function getRoom(obj, id) {
return obj.find(x => x.ChannelID == id || `#${x.ChannelID}` == id || x.ChannelID == `#${id}`);
}
async function getRoomNames(obj) {
let roomList = (await getTarget()).channels;
if (obj.includes(",")) {
obj = obj.split(",");
for (const [key, value] of Object.entries(obj)) {
obj[key] = (await getRoom(roomList, value.trim())).channelName;
}
obj = obj.sort();
obj = obj.join(", ");
} else {
obj = (await getRoom(roomList, obj.trim())).channelName;
}
return obj;
}
async function getRoleNames(obj) {
let roleList = (await getTarget()).roles;
if (obj.includes(",")) {
obj = obj.split(",");
for (const [key, value] of Object.entries(obj)) {
obj[key] = (await getRole(roleList, value.trim())).roleName;
}
obj = obj.sort();
obj = obj.join(", ");
} else {
obj = (await getRole(roleList, obj.trim())).roleName;
}
return obj;
}
async function getTarget() {
console.log("in: GetTarget()")
if (typeof window.Channels == "undefined") window.Channels = [];
if (!window.Channels[myP.m]) {
window.Channels[myP.m] = await JSON.parse(await ajax("post", "get.php", null, `m=${myP.m}&show=getTargets&type=all`))
}
return window.Channels[myP.m];
}
async function buildSelectList(value, type, name, id = "", tag = true, blank = true, blankMsg = "Please make a selection") {
//if (typeof value == "undefined") return;
goodData();
var ret = "";
var defaults;
var objType;
if (typeof value == "object" && value != null) {
if (Object.keys(value).includes("objType")) {
objType = value.objType;
value = value.value.replaceAll("\"", "");
}
}
if (id == "") id = name;
let data = await getTarget();
console.log(data);
//
if (myP.show.toLowerCase() == "settings" && value && value["default"] && value["default"][name]) {
defaults = value["default"][name];
}
if (value == null || (typeof value == "string" && (value == "" || value.toLowerCase() == "null"))) {
value = "";
} else if (typeof value[0] == "object") {
value = value[0][name];
} else if (typeof value == "object") {
value = value[name];
}
if (typeof type == "string") {
type = type.toLowerCase();
}
switch (type) {
case "all":
ret = "
"
break;
}
var Select = document.createElement('select');
Select.setAttribute("id", id);
Select.setAttribute("name", name);
Select.setAttribute("data-value", (typeof value == "string") ? value : JSON.stringify(value));
if (name == "reactAllow") {
// Select.setAttribute("multiple","true");
}
if (myP.show.toLowerCase() == "settings" && typeof defaults != "undefined") {
Select.setAttribute("data-default", JSON.stringify(defaults))
var itm = [];
itm.channelName = "#" + defaults;
itm.ChannelID = defaults;
itm.roleName = defaults;
itm.roleID = defaults;
itm.userName = "@" + defaults;
itm.userID = defaults;
data.channels.unshift(itm);
data.roles.unshift(itm);
data.users.unshift(itm);
}
var opt
if (blank) {
if (typeof blankMsg == "object") {
for (itm in blankMsg) {
opt = document.createElement("option");
opt.value = "";
opt.innerHTML = blankMsg[itm];
Select.appendChild(opt);
}
} else {
opt = document.createElement("option");
opt.value = "";
opt.innerHTML = blankMsg;
Select.appendChild(opt);
}
}
if (type == "all" || type == "users") {
if (data.users.length > 500) {
opt = document.createElement("option");
opt.value = null;
if (!tag) opt.value = opt.value.replace("@", "")
opt.innerHTML = "---Not Showing users. You have WAY too many ;) ---"; // whatever property it has
Select.appendChild(opt);
} else {
for (item of data.users) {
opt = document.createElement("option");
opt.value = item.ChannelID;
if (!tag) opt.value = opt.value.replace("@", "")
opt.innerHTML = item.channelName; // whatever property it has
if (value != null && (opt.value == value || value.includes(opt.value))) {
opt.setAttribute("selected", "true");
}
Select.appendChild(opt);
}
}
}
if ((type == "all" && false) || type == discordChannelType["GuildCategory"]) {
for (item of await data.channels.filter((i) => (i.type == discordChannelType["GuildCategory"]))) {
opt = document.createElement("option");
opt.value = item.ChannelID;
if (!tag) opt.value = opt.value.replace("#", "")
opt.innerHTML = item.channelName; // whatever property it has
console.log(`value=\t${value}\nopt.value=\t${opt.value}\nname=\t${item.channelName}\n${opt.value==value}`)
if (value != null && (opt.value == value || value.includes(opt.value))) {
opt.setAttribute("selected", "true");
}
Select.appendChild(opt);
}
}
if (type == "all" || type == "channels") {
for (item of data.channels.filter((i) => (i.type == discordChannelType["GuildText"]) || (i.type == discordChannelType["GuildVoice"]))) {
opt = document.createElement("option");
opt.value = item.ChannelID;
if (!tag) opt.value = opt.value.replace("#", "")
opt.innerHTML = item.channelName; // whatever property it has
console.log(`value=\t${value}\nopt.value=\t${opt.value}\nname=\t${item.channelName}\n${opt.value==value}`)
if (value != null && (opt.value == value || value.includes(opt.value))) {
opt.setAttribute("selected", "true");
}
Select.appendChild(opt);
}
}
if (type == "all" || type == "roles") {
for (item of data.roles) {
opt = document.createElement("option");
opt.value = item.roleID;
if (!tag) opt.value = opt.value.replace("&", "");
opt.innerHTML = item.roleName; // whatever property it has
if (value != null && value != "null" && (opt.value == value || value.includes(opt.value))) {
opt.setAttribute("selected", "true");
}
Select.appendChild(opt);
}
}
if (type == "reactrackchs") {
for (item of data.channels) {
opt = document.createElement("option");
opt.value = item.ChannelID;
if (!tag) opt.value = opt.value.replace("&", "");
opt.innerHTML = item.channelName; // whatever property it has
if (value != null && (opt.value == value || value.includes(opt.value))) {
opt.setAttribute("selected", "true");
}
Select.appendChild(opt);
}
}
ret += orderSelectChecked(Select, true);
if (myP.show.toLowerCase() == "settings" && data.channels.length > 1 && Object.keys(data.channels[0]).length >= 6) {
data.channels.shift(itm)
data.roles.shift(itm)
data.users.shift(itm)
}
return ret;
}
function isNum(obj) {
obj = obj.onkeyup.arguments[0];
if (isNaN(+obj.key)) {
obj.path[0].value = obj.path[0].value.replace(obj.key, "");
}
}
function toggleList(pobj, obj, type) { //type="only" or "all"... only is to only show one
console.log(event);
pobj.forEach((x) => {
if (type != "only") {
x.style.display = "";
if (x == obj) {
x.querySelector(".tool_btn[name='edit']").innerHTML = "edit";
x.querySelector(".tool_btn[name='save']").classList.add('hidden');
switch (myP.show.toLowerCase()) {
case "timers":
setTimerCard(x, null, "review");
break;
case "youtube":
setUtubesCard(x, null, "review");
break;
case "user commands":
setupUsrCommandsCard(x, null, "review");
break;
case "alarms":
alarmsCommandsCard(x, null, "review");
break;
}
x.classList.remove("edit")
}
} else {
if (x != obj) {
x.style.display = "none";
} else {
x.style.display = "";
x.classList.add("edit")
x.classList.remove("hidden")
x.querySelector(".tool_btn[name='edit']").innerHTML = "cancel";
switch (myP.show.toLowerCase()) {
case "timers":
setTimerCard(x, null, "edit");
break;
case "youtube":
setUtubesCard(x, null, "edit");
break;
case "user commands":
setupUsrCommandsCard(x, null, "edit");
break;
case "alarms":
alarmsCommandsCard(x, null, "edit");
break;
}
x.scrollIntoView();
}
}
});
}
function dataTimersSaved(obj) {
if (obj.status == 200) {
location.reload();
} else {
alert(obj.responseText);
}
}
function orderSelectChecked(obj, AddEvent = false) {
let newObj = [],
ordIdx = 0;
for (const [key, value] of Object.entries(obj.childNodes)) {
if (value.nodeName != "OPTION")
if (AddEvent) {
value.addEventListener("click", (event) => {
orderSelectChecked(event.path[2]);
event.path[1].scrollIntoView();
});
}
if (value.getAttribute("selected") == "true" || value.querySelector("input:checked")) {
//newObj.push(testObj.value);
// newObj.push(value.parentElement)
value.style.order = ++ordIdx;
} else {
value.style.order = 5000;
}
}
return obj.outerHTML;
}
async function goodData() {
let obj = await getTarget();
let test = false;
let x = 0
outer: for (key in obj) {
console.log(++x);
let done = false;
let data;
if (key == "default") continue;
if (Object.keys(obj[key]).includes("data")) {
data = obj[key]["data"]
} else {
data = obj[key]
done = true;
}
for (subKey of Object.keys(data).filter(fKey => fKey.toLowerCase().includes("channel"))) {
if (typeof data[subKey] == "string") {
test = window.Channels[myP.m].channels.find(m => m.ChannelID.includes(data[subKey]))
if (typeof test != 'object') {
return false;
} else {
console.log(subKey);
console.log(test)
};
}
}
if (done) continue outer;
for (subKey of data) {
//
for (subKey2 of Object.keys(subKey).filter(fKey => fKey.toLowerCase().includes("channelid"))) {
test = window.Channels[myP.m].channels.find(m => m.ChannelID.includes(subKey[subKey2]))
if (typeof test != 'object') {
return false;
} else {
console.log(subKey2);
console.log(test)
};;
}
}
}
return true;
}