let Sheeps_mode = [
'Користувач',
'Модератор',
'Адміністратор'
];
let Sheeps_icon = [
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' '
]
const Sheeps = {
init: async (name) => {
let html = await fetch('/lib/pages/sheeps/index.html').then((response) => response.text());
app.innerHTML = html;
Sheeps.sheeps_list.setHTML(name);
if (name) Sheeps.editor.setHTML(name);
document.getElementById("sheep-editor").addEventListener("submit", async function (event) {
event.preventDefault();
const form = event.target;
const formData = new FormData(form);
let sheep = Sheeps.sheeps_list.list.find(item => item.uuid === form.elements["uuid"].value,);
sheep.name = form.elements["name"].value;
sheep.group_id = formData.get("group_id");
sheep.appointment = formData.get("appointment");
sheep.role = formData.get("mode") ?? 'administrator',
sheep.can_view_schedule = form.elements["can_view_schedule"].checked;
sheep.can_view_stand = form.elements["can_view_stand"].checked;
sheep.can_view_territory = form.elements["can_view_territory"].checked;
sheep.moderator.can_add_sheeps = form.elements["can_add_sheeps"].checked;
sheep.moderator.can_add_territory = form.elements["can_add_territory"].checked;
sheep.moderator.can_manager_territory = form.elements["can_manager_territory"].checked;
sheep.moderator.can_add_stand = form.elements["can_add_stand"].checked;
sheep.moderator.can_manager_stand = form.elements["can_manager_stand"].checked;
sheep.moderator.can_add_schedule = form.elements["can_add_schedule"].checked;
let sheep_editor_button = document.getElementById('sheep-editor-button');
sheep_editor_button.innerText = "Зачекайте...";
const uuid = localStorage.getItem('uuid');
const URL = `${CONFIG.api}sheep`;
await fetch(URL, {
method: 'PUT',
headers: {
"Content-Type": "application/json",
"Authorization": uuid
},
body: JSON.stringify(sheep)
})
.then(response => {
if (response.status == 200) {
sheep_editor_button.innerText = "Успішно збережено";
return response.json()
} else {
console.log('err');
sheep_editor_button.innerText = "Помилка збереження";
return
}
})
.then(data => {
console.log(data);
Sheeps.sheeps_list.list = [];
Sheeps.sheeps_list.setHTML();
setTimeout(() => {
sheep_editor_button.innerText = "Зберегти";
}, 3000);
})
.catch(err => {
console.log(err);
sheep_editor_button.innerText = "Помилка збереження";
})
})
document.getElementById("sheep-addeds").addEventListener("submit", async function (event) {
event.preventDefault();
const form = event.target;
const formData = new FormData(form);
const data = Object.fromEntries(formData.entries());
let sheep_addeds_button = document.getElementById('sheep-addeds-button');
sheep_addeds_button.innerText = "Зачекайте...";
const uuid = localStorage.getItem('uuid');
const mode = localStorage.getItem("mode") ?? "sheep"
const URL = `${CONFIG.api}sheep`;
await fetch(URL, {
method: 'POST',
headers: {
"Content-Type": "application/json",
"Authorization": uuid
},
body: JSON.stringify(data)
})
.then(response => {
if (response.status == 200) {
sheep_addeds_button.innerText = "Вісника додано";
return response.json()
} else {
console.log('err');
sheep_addeds_button.innerText = "Помилка додавання";
return
}
})
.then(data => {
console.log(data);
Sheeps.sheeps_list.list = [];
const randomNumber = Math.floor(Math.random() * Sheeps_icon.length);
Sheeps.addeds.close();
Sheeps.editor.setHTML(data.uuid, randomNumber);
setTimeout(() => {
sheep_addeds_button.innerText = "Додати";
}, 3000);
})
.catch(err => {
console.log(err);
sheep_addeds_button.innerText = "Помилка додавання";
})
})
},
sheeps_list: {
list: [],
loadAPI: async () => {
let uuid = localStorage.getItem("uuid");
const URL = `${CONFIG.api}sheeps/list`;
Sheeps.sheeps_list.list = await fetch(URL, {
method: 'GET',
headers: {
"Content-Type": "application/json",
"Authorization": uuid
}
}).then((response) => response.json());
return Sheeps.sheeps_list.list;
},
setHTML: async (name) => {
let block_sheep_list = document.getElementById('block-sheeps-list');
let block_sheep_info = document.getElementById('block-sheep-info');
block_sheep_list.style.display = "flex";
block_sheep_info.style.display = "";
let list = [];
if (Sheeps.sheeps_list.list.length == 0) {
list = await Sheeps.sheeps_list.loadAPI();
} else {
list = Sheeps.sheeps_list.list;
}
console.log(list);
let block_sheeps = document.getElementById('block-sheeps-list');
let butt_add = `
`;
block_sheeps.innerHTML = `
`;
for (let i = 0; i < list.length; i++) {
const element = list[i];
let access = () => {
let a = "";
if (element.administrator.id || element.can_view_schedule) a += `View Schedule `;
if (element.administrator.id || element.can_view_stand) a += `View Stand `;
if (element.administrator.id || element.can_view_territory) a += `View Territory `;
if (element.administrator.id || element.moderator.can_add_sheeps) a += `Create Sheeps `;
if (element.administrator.id || element.moderator.can_add_territory) a += `Create Territory `;
if (element.administrator.id || element.moderator.can_manager_territory) a += `Manager Territory `;
if (element.administrator.id || element.moderator.can_add_stand) a += `Create Stand `;
if (element.administrator.id || element.moderator.can_manager_stand) a += `Manager Stand `;
if (element.administrator.id || element.moderator.can_add_schedule) a += `Create Schedule `;
return a;
}
const randomNumber = Math.floor(Math.random() * Sheeps_icon.length);
let editor_mode = () => {
if (element.administrator.id) return "Адміністратор";
else if (element.moderator.id) return "Модератор";
else return "Користувач";
};
block_sheeps.innerHTML += `
${Sheeps_icon[randomNumber]}
${element.name}
${editor_mode()}
Група №${element.group_id}
${access()}
`;
}
}
},
editor: {
loadAPI: async (search) => {
let uuid = localStorage.getItem("uuid");
const URL = `${CONFIG.api}sheep?uuid=${search}`;
return await fetch(URL, {
method: 'GET',
headers: {
"Content-Type": "application/json",
"Authorization": uuid
}
}).then((response) => response.json());
},
setHTML: async (search, randomNumber) => {
let sheep = await Sheeps.editor.loadAPI(search);
console.log(sheep);
let block_sheep_list = document.getElementById('block-sheeps-list');
let block_sheep_info = document.getElementById('block-sheep-info');
block_sheep_list.style.opacity = "0";
setTimeout(() => {
block_sheep_info.style.display = "flex";
block_sheep_list.style.display = "";
}, 100)
setTimeout(() => {
block_sheep_info.style.opacity = "1";
}, 10)
if (!randomNumber) randomNumber = Math.floor(Math.random() * Sheeps_icon.length);
let sheep_mess = document.getElementById('sheep-mess');
let sheep_editor = document.getElementById('sheep-editor');
sheep_mess.style.opacity = "0";
sheep_editor.style.display = "";
setTimeout(() => {
sheep_editor.style.opacity = "1";
}, 100)
let sheep_editor_icon = document.getElementById('sheep-editor-icon');
let sheep_editor_uuid = document.getElementById('sheep-editor-uuid');
let sheep_editor_uuid_copy = document.getElementById('sheep-editor-uuid-copy');
let sheep_editor_name = document.getElementById('sheep-editor-name');
let sheep_editor_group_id = document.getElementById('sheep-editor-group_id');
let sheep_editor_appointment = document.getElementById('sheep-editor-appointment');
let sheep_editor_mode = document.getElementById('sheep-editor-mode');
let editor_blocks_inputs_uuid_moder = document.getElementById('editor-blocks-inputs-uuid-moder');
let sheep_editor_uuid_moder = document.getElementById('sheep-editor-uuid-moder');
let sheep_editor_access_moder = document.getElementById('sheep-editor-access-moder');
let sheep_editor_can_add_sheeps = document.getElementById('sheep-editor-can_add_sheeps');
let sheep_editor_can_add_territory = document.getElementById('sheep-editor-can_add_territory');
let sheep_editor_can_manager_territory = document.getElementById('sheep-editor-can_manager_territory');
let sheep_editor_can_add_stand = document.getElementById('sheep-editor-can_add_stand');
let sheep_editor_can_manager_stand = document.getElementById('sheep-editor-can_manager_stand');
let sheep_editor_can_add_schedule = document.getElementById('sheep-editor-can_add_schedule');
let sheep_editor_can_view_schedule = document.getElementById('sheep-editor-can_view_schedule');
let sheep_editor_can_view_stand = document.getElementById('sheep-editor-can_view_stand');
let sheep_editor_can_view_territory = document.getElementById('sheep-editor-can_view_territory');
sheep_editor_icon.innerHTML = Sheeps_icon[randomNumber];
sheep_editor_uuid.value = sheep.uuid;
sheep_editor_uuid_copy.innerText = sheep.uuid;
sheep_editor_uuid_copy.setAttribute("onclick", `clipboard('https://sheep-service.com/?uuid=${sheep.uuid}')`);
let editor_mode = () => {
if (sheep.administrator.id) return 'administrator';
else if (sheep.moderator.id) return 'moderator';
else return 'sheep';
};
sheep_editor_mode.value = editor_mode();
sheep_editor_name.value = sheep.name;
sheep_editor_group_id.value = sheep.group_id;
sheep_editor_appointment.value = sheep.appointment;
if (sheep.administrator.uuid) {
editor_blocks_inputs_uuid_moder.style.display = "";
sheep_editor_uuid_moder.innerText = sheep.administrator.uuid;
sheep_editor_uuid_moder.setAttribute("onclick", `clipboard('https://sheep-service.com/?uuid=${sheep.administrator.uuid}')`);
} else if (sheep.moderator.uuid) {
sheep_editor_access_moder.style.display = "";
editor_blocks_inputs_uuid_moder.style.display = "";
sheep_editor_uuid_moder.innerText = sheep.moderator.uuid;
sheep_editor_uuid_moder.setAttribute("onclick", `clipboard('https://sheep-service.com/?uuid=${sheep.moderator.uuid}')`);
} else {
sheep_editor_access_moder.style.display = "none";
editor_blocks_inputs_uuid_moder.style.display = "none";
sheep_editor_uuid_moder.innerText = '';
sheep_editor_uuid_moder.setAttribute("onclick", ``);
}
sheep_editor_can_add_sheeps.checked = sheep.moderator.can_add_sheeps;
sheep_editor_can_add_territory.checked = sheep.moderator.can_add_territory;
sheep_editor_can_manager_territory.checked = sheep.moderator.can_manager_territory;
sheep_editor_can_add_stand.checked = sheep.moderator.can_add_stand;
sheep_editor_can_manager_stand.checked = sheep.moderator.can_manager_stand;
sheep_editor_can_add_schedule.checked = sheep.moderator.can_add_schedule;
sheep_editor_can_view_schedule.checked = sheep.can_view_schedule;
sheep_editor_can_view_stand.checked = sheep.can_view_stand;
sheep_editor_can_view_territory.checked = sheep.can_view_territory;
if (USER.administrator.id) {
document.getElementById('sheep-editor-button').style.display = "";
sheep_editor_mode.disabled = false;
} else {
sheep_editor_mode.disabled = true;
}
},
close: () => {
let block_sheep_list = document.getElementById('block-sheeps-list');
let block_sheep_info = document.getElementById('block-sheep-info');
block_sheep_info.style.opacity = "0";
setTimeout(() => {
block_sheep_list.style.display = "flex";
block_sheep_info.style.display = "";
}, 100)
setTimeout(() => {
block_sheep_list.style.opacity = "1";
}, 10)
}
},
addeds: {
open: () => {
let block_sheep_list = document.getElementById('block-sheeps-list');
let block_sheep_info = document.getElementById('block-sheep-info');
let block_sheep_addeds = document.getElementById('block-sheep-addeds');
block_sheep_list.style.opacity = "0";
block_sheep_info.style.opacity = "0";
setTimeout(() => {
block_sheep_list.style.display = "none";
block_sheep_info.style.display = "none";
block_sheep_addeds.style.display = "";
}, 100)
setTimeout(() => {
block_sheep_addeds.style.opacity = "1";
}, 100)
},
close: () => {
let block_sheep_list = document.getElementById('block-sheeps-list');
let block_sheep_info = document.getElementById('block-sheep-info');
let block_sheep_addeds = document.getElementById('block-sheep-addeds');
block_sheep_addeds.style.opacity = "0";
setTimeout(() => {
block_sheep_addeds.style.display = "none";
block_sheep_list.style.display = "flex";
block_sheep_info.style.display = "";
}, 100)
setTimeout(() => {
block_sheep_list.style.opacity = "1";
block_sheep_info.style.opacity = "1";
}, 10)
}
}
}