البَرَّع هو جزء من أجزاء المورثات ألاساسية من التراث الموسيقي اليمني، يعكس غنى وتنوع الثقافة اليمنية. سواء كان عزف الطبول أو الرقصات التقليدية، ..
البَرَّع في اليمن: فن التراث الموسيقي العريق
رقصة البرع هي واحدة من أشهر الرقصات التي يتميز بها اليمن. تعتبر سيدة الرقصات اليمنية وتمثل جزءًا من التراث الشعبي في معظم المناطق اليمنية. وكذلك البَرَّع هو جزء من أجزاء المورثات ألاساسية من التراث الموسيقي اليمني، يعكس غنى وتنوع الثقافة اليمنية. سواء كان عزف الطبول أو الرقصات التقليدية، يُعتبر البَرَّع فنًا يعبر عن الهوية اليمنية ويربط بين الأجيال. في هذا المقال، سنستعرض تاريخ البَرَّع، أنواعه، وأشهر عازفيه، بالإضافة إلى الرقصات المختلفة المنتشرة في اليمن. دعونا نستكشفها بالتفصيل: تعريف البرع في اليمن البرع هو نوع من أنواع الرقص، ويُعرف بالخطوات السريعة المنتظمة. يتميز بالجنابي (الخناجر) التي يحملها الراقصون ويلوحون بها بأيديهم. يُضاف أحيانًا البنادق مستعرضة على الأكتاف. تاريخ البرع في اليمن رقصة البرع تمتد لآلاف السنين في التاريخ اليمني. كانت تستخدم ضمن طقوس الإعلان عن قدوم مهاجمين على القبيلة لتحفيز المحاربين على الاحتشاد والتأهب لملاقاة المعتدين. يرجع تاريخ فن البَرَّع إلى قرون عديدة، حيث كان يستخدم في الاحتفالات الدينية والاجتماعية. يُعتبر البَرَّع رمزًا للتواصل الاجتماعي والتلاحم بين …
عن المؤلف
مرحبًا، أنا مدوّن تقني شغوف بصناعة المحتوى الرقمي، أشارككم شروحات ومراجعات في مجالات البرمجة والتكنولوجيا.
إرسال تعليق
// script.js
document.addEventListener('DOMContentLoaded', function() {
// عناصر DOM
const chatMessages = document.getElementById('chat-messages');
const messageInput = document.getElementById('message-input');
const sendBtn = document.getElementById('send-btn');
const clearChatBtn = document.getElementById('clear-chat');
const settingsBtn = document.getElementById('settings-btn');
const settingsModal = document.getElementById('settings-modal');
const saveSettingsBtn = document.getElementById('save-settings');
const cancelSettingsBtn = document.getElementById('cancel-settings');
const formattingButtons = document.querySelectorAll('.text-formatting button');
const chatStatus = document.getElementById('chat-status');
// إعدادات الروبوت
let botSettings = {
model: 'gpt-3.5',
temperature: 0.7,
saveChats: true
};
// تحميل الإعدادات والمحادثات المحفوظة
function loadSettings() {
const savedSettings = localStorage.getItem('chatbotSettings');
if (savedSettings) {
botSettings = JSON.parse(savedSettings);
document.getElementById('api-select').value = botSettings.model;
document.getElementById('temperature').value = botSettings.temperature;
document.getElementById('temp-value').textContent = botSettings.temperature;
document.getElementById('save-chats').checked = botSettings.saveChats;
}
if (botSettings.saveChats) {
const savedChat = localStorage.getItem('chatHistory');
if (savedChat) {
chatMessages.innerHTML = savedChat;
scrollToBottom();
}
}
}
// حفظ الإعدادات
function saveSettings() {
botSettings.model = document.getElementById('api-select').value;
botSettings.temperature = parseFloat(document.getElementById('temperature').value);
botSettings.saveChats = document.getElementById('save-chats').checked;
localStorage.setItem('chatbotSettings', JSON.stringify(botSettings));
settingsModal.style.display = 'none';
}
// إضافة رسالة إلى الدردشة
function addMessage(content, isUser) {
const messageDiv = document.createElement('div');
messageDiv.classList.add('message', isUser ? 'user-message' : 'bot-message');
messageDiv.innerHTML = content;
chatMessages.appendChild(messageDiv);
if (botSettings.saveChats) {
localStorage.setItem('chatHistory', chatMessages.innerHTML);
}
scrollToBottom();
}
// التمرير إلى الأسفل
function scrollToBottom() {
chatMessages.scrollTop = chatMessages.scrollHeight;
}
// معالجة إرسال الرسالة
async function sendMessage() {
const message = messageInput.value.trim();
if (!message) return;
// إضافة رسالة المستخدم
addMessage(message, true);
messageInput.value = '';
// عرض حالة "يكتب..."
chatStatus.textContent = 'الروبوت يكتب...';
try {
// استدعاء API الذكاء الاصطناعي
const response = await fetchAIResponse(message, botSettings);
// إضافة رد الروبوت
addMessage(response, false);
chatStatus.textContent = 'جاهز للرد...';
} catch (error) {
console.error('Error:', error);
addMessage('عذرًا، حدث خطأ أثناء معالجة طلبك. يرجى المحاولة مرة أخرى.', false);
chatStatus.textContent = 'حدث خطأ';
setTimeout(() => {
chatStatus.textContent = 'جاهز للرد...';
}, 3000);
}
}
// تكبير حقل الإدخال تلقائيًا
messageInput.addEventListener('input', function() {
this.style.height = 'auto';
this.style.height = (this.scrollHeight) + 'px';
});
// إرسال الرسالة عند الضغط على Enter
messageInput.addEventListener('keydown', function(e) {
if (e.key === 'Enter' !e.shiftKey) {
e.preventDefault();
sendMessage();
}
});
// أحداث الأزرار
sendBtn.addEventListener('click', sendMessage);
clearChatBtn.addEventListener('click', function() {
chatMessages.innerHTML = '';
if (botSettings.saveChats) {
localStorage.removeItem('chatHistory');
}
});
settingsBtn.addEventListener('click', function() {
settingsModal.style.display = 'flex';
});
saveSettingsBtn.addEventListener('click', saveSettings);
cancelSettingsBtn.addEventListener('click', function() {
settingsModal.style.display = 'none';
});
// إغلاق نافذة الإعدادات عند النقر خارجها
window.addEventListener('click', function(e) {
if (e.target === settingsModal) {
settingsModal.style.display = 'none';
}
});
// أزرار تنسيق النص
formattingButtons.forEach(button => {
button.addEventListener('click', function() {
const format = this.getAttribute('data-format');
formatText(format);
});
});
// وظيفة تنسيق النص
function formatText(format) {
const start = messageInput.selectionStart;
const end = messageInput.selectionEnd;
const selectedText = messageInput.value.substring(start, end);
let formattedText = '';
switch(format) {
case 'bold':
formattedText = `**${selectedText}**`;
break;
case 'italic':
formattedText = `*${selectedText}*`;
break;
case 'list':
formattedText = `\n- ${selectedText.replace(/\n/g, '\n- ')}`;
break;
}
messageInput.setRangeText(formattedText, start, end, 'end');
messageInput.focus();
}
// تحديث قيمة درجة الإبداع
document.getElementById('temperature').addEventListener('input', function() {
document.getElementById('temp-value').textContent = this.value;
});
// تحميل الإعدادات عند البدء
loadSettings();
});