توابع جاوا اسکریپت
برای سرویس دهی موضوعات ویجت نس از زبان جاوا اسکریپت استفاده شده است، این مجموعه کامپوننت ها توسط typescript و بدون استفاده از هیچ لایبری اضافی مانند jquery استفاده شده است.
شما برای استفاده از این کامپوننت نیازی به اضافه کردن هیچ کتابخانه اضافی ندارید و همچنین سعی شده است سربارهای اضافی نیز حذف گردد.
توابع
قطعا شما نیز میتوانید از توابع نوشته شده برای اعمال اسکریپتی خود استفاده کنید، برخی از این توابع در زیر نام برده خواهد شد و به مرور زمان مستندات آن تکمیل خواهد گردید.
مقدار باقیمانده دو پارامتر خود را برمیگرداند.
مقدار ورودی را بررسی و در صورت bool بودن، مقدار آنرا برمیگرداند، در غیر اینصورت مقدار پیش فرض انتخاب شده را برمیگرداند.
مقدار عددی ورودی را بررسی میکند، اگر عدد بود، مقدار آن و در غیر اینصورت مقدار پیش فرض را برمیگرداند. اگر اعداد به صورت اعداد محلی بودند، ابتدا اعداد را تبدیل و سپس صحت مقداری را بررسی میکند.
مقدار رشته ای را بررسی کرده و در صورت عدم وجود مقدار رشته ای مانند null مقدار پیش فرض را برمیگرداند.
اگر مقدار بین حداقل و حداکثر بود، مقدار خود و در غیر اینصورت مقدار حداقل یا حداکثر را برمیگرداند.
بررسی میکند، آیا کلاسی در تگهای والد موضوع مورد نظر استفاده شده است یا خیر.
اعداد درون یک رشته یا عدد را به صورت اعداد محلی تبدیل میکند، برای مثال عدد 1 را ۱ نمایش میدهد.
اعداد محلی را به اعداد سیستمی تبدیل میکند، برعکس تابع WNnativeDigit
لیست تگهایی که با قوانین سلکتورها قابل شناسایی هستند را برمیگرداند، قوانین را میتوانید در پارامتر list و به صورت , جداکننده استفاده کنید.
محاسبه 4 عمل اصلی در واحدهای مختلف نمایشی که نسبت به المت انتخاب شده محاسبه میگردد، برای مثال تبدیل px و em یا rem
بررسی میکند، یک المت داخل یک المت دیگر است یا خیر.
تبدیل تگهای html به تگهای قابل نمایش در pre
دریافت مقدار عددی و واحد یک رشته مانند 10px
دریافت مقدار کوکی
ثبت مقدار کوکی، اگر مقدار تاریخ انقضا صفر باشد، آنرا تنظیم نمیکند.
دریافت مقدار از استوریج سشن، اگر نبود، از استوریج لوکال
تنظیم مقدار استوریج، در صورتیکه localstorage مقدار true باشد. در لوکال استرویج و در غیر اینصورت در سشن ذخیره میشود.
برای ارسال یه رشته به صورت post به سرور، بایستی عبارت متنی در " قرار گیرد، این تابع این علامت را در کنار مقدار قرار میدهد.
اگر ورودی متن جیسون باشد، آنرا به موضوع تبدیل کرده در غیر اینصورت عینا متن را برمیگرداند.
در برخی مواقع نیاز داریم بر روی یک دیتایی از نوع درخت، مثل آرایه تابعی را ایجاد کنیم. این تابع چنین دسترسی را به آسانی به شما میدهد.
source آرایه ای جنس درخت
childsFieldName نام فیلد که دارای فرزند هستند
parent والدی که از آن فرزندان در حال پردازش هست. مقدار اولیه null باید باشد. دقیقا به ردیف قبلی دیتا اشاره میکند.
call تابعی که به ازای هر ردیف داده صدا زده میشود تا شما در آن عملیات مرتبط را انجام دهید.
اگر میخواهید یکسری توابع یا خصوصیات یک موضوعی را تغییر دهید، از این تابع استفاده کنید.
Element: HTMLElement | HTMLDocument | any;
Ready(callBack: any, options?: boolean);
Click(callBack: any);
Change(callBack: any);
Input(callBack: any);
Focus(callBack: any);
FocusIn(callBack: any);
FocusOut(callBack: any);
Resize(callBack: any);
Scroll(callBack: any);
Select(callBack: any);
ContextMenu(callBack: any);
Copy(callBack: any);
Cut(callBack: any);
Paste(callBack: any);
DBLClick(callBack: any);
Drag(callBack: any);
Dragend(callBack: any);
Dragenter(callBack: any);
Dragleave(callBack: any);
Dragover(callBack: any);
Dragstart(callBack: any);
Drop(callBack: any);
Keydown(callBack: any);
Keypress(callBack: any);
Keyup(callBack: any);
Mousedown(callBack: any);
Mouseenter(callBack: any);
Mouseleave(callBack: any);
Mousemove(callBack: any);
Mouseover(callBack: any);
Mouseout(callBack: any);
Mouseup(callBack: any);
Touchcancel(callBack: any);
Touchend(callBack: any);
Touchmove(callBack: any);
Touchstart(callBack: any);
Wheel(callBack: any);
برای مثال میخواهید وقتی روی موضعی با ID یا نام
WN('d1').Click(()=>{alert('some');});
ارسال و دریافت اطلاعات با سرور
برای آنکه شما بتوانید به سرور ارسال اطلاعات داشته باشید میتوانید از توابع زیر استفاده کنید.
WNBaseFetchUri
اگر آدرس سرور وب سرویس شما با آدرس سرویس دهنده شما متفاوت است، میتوانید یکبار این متغییر را مقدار دهی کنید، تا در زمانیکه آدرس سرور به هر دلیلی تغییر کرد فقط با تغییر این متغییر، کلیه ارسال و دریافت به آن سرور منتقل شود.برای مثال سایت شما به آدرس a.com است ولی سرویس دهنده دیتای شما به آدرس data.a.com است. بدین منظور بایستی مقدار متغییر را قبل از فراخوانی توابع ارسال اطلاعات مقدار دهی کنید.
Post
برای پست اطلاعات به سرور از این تابع استفاده کنید. پارامتر اول دیتای شما به صورت فرم یا دیتای مستقیم یا جیسون میباشد.
پارامتر بعدی، آدرس کنترلر دریافت کننده به صورت نسبی با مقدار متغییر WNBaseFetchUri است.
WN(document).Ready(async() =˃ {
await Post(null, '/Components/Tree').then((r) =˃ {
alert(r);
}).catch((e) =˃ {
console.log(e);
});
});
Get
این تابع همانند تابع Post است با این تفاوت روش ارسال اطلاعات به صورت Get میباشد.
GetText
اگر میخواهید یک فایل یا دیتای متنی را دریافت کنید، به صورت Get فراخوانی شده و مقدار برگشتی را نمایش میدهد.
GetFile
برای دانلود یک فایل از سرور توسط کنترلر میتوانید از این تابع استفاده کنید. در قسمت پارامتر path میتوانید آدرسی که کنترلر میشناسد را وارد کرده و در قسمت url اسم کنترلر خود را بنویسید.
نحوه فراخوانی به صورت Get میباشد.
مقدار بازگشتی به صورت یک موضوع Blob است.
await GetFile('Test.png', '/Download').then(async (r) =˃ {
if (r) {
var a = document.createElement("a");
a.href = r;
a.download = filesName.files[i];
a.click();
window.URL.revokeObjectURL(r);
}
});
Upload
زمانیکه میخواهید یک فایل را برای سرور توسط کنترلر ارسال کنید، از این تابع استفاده کنید.
نحوه فراخوانی به صورت Put میباشد.
نحوه کار بدین صورت است که اطلاعات فایل مد نظر در پارامتر files و سپس آدرس فهرست مد نظر برای آپلود و سپس آدرس کنترلر آورده میشود.
اطلاعات به صورت Form Data و به روش Put برای سرور ارسال میشود. در این حین در اطلاعات فرم ارسالی فیلیدی به اسم destination با مقدار آدرس پارامتر destination به همراه فایلهای ارسالی به کنترلر فرستاده میشود. تا اگر سرور نیاز به این آدرس داشت بتواند از آن استفاده کند.
_dragdrop.addEventListener("drop", async (ev) =˃ {
ev.preventDefault();
if (ev.dataTransfer.items) {
let files = [];
for (var i = 0; i < ev.dataTransfer.items.length; i++)
if (ev.dataTransfer.items[i].kind === 'file')
files.push(ev.dataTransfer.items[i].getAsFile());
await this.UploadFile(files);
} else {
await this.UploadFile(ev.dataTransfer.files[i]);
}
});
async UploadFile(files) {
await Upload(files, 'folder', '/Upload').then(async (r) =˃ {
if (r==true) {
alert("success");
}
else {
alert("error");
}
});
}
GetFormData
اگر شما یک فرم ورودی دارید و میخواهید اطلاعات آن فرم را به سرور توسط یکی از توابع بالا ارسال کنید، میتوانید از این تابع برای ساهت موضوع ارسالی کمک بگیرید.
این تابع با گرفتن اسم فرم، اجزای اطلاعاتی را شناسایی میکند و سپس آنها را تبدیل به جیسون میکند.
متغییرها
برخی متغییرها در سیستم از کارآیی بالایی برخوردار هستند که به مهمترین آنها در زیر اشاره میکنیم.
WN
این آرایه به کلیه موضوعات ساخته شده از نوع ویجت نس اشاره دارد. یعنی اگر میخواهید یکی از خصوصیات، توابع، رخدادهای هر موضوع ویجتنس ساخته شده را تغییر دهید بایستی از این آرایه استفاده کنید.بدین صورت که ID موضوع مورد نظر را به این آرایه بدید و آن موضوع را دریافت کنید.
alert(WN('tree1'].selectedItem);
WNLanguage
این آرایه نیز بر اساس زبان انتخاب شده، لیستی از کلیدها و پیامهای آنها را برمیگرداند.
alert(WNLanguage["en"]["filelist"]["newfolder"]);
WNLanguage['en'] = {
'common': {
'browsererror': 'Please use a new browser with proper w3 support. Chrome version 89 and above or FireFox version 55 and above.',
'close': 'Close',
'ok': 'Ok',
'cancel': 'Cancel',
},...
wnConfig.calendar
با تنظیم این متغییر تقویم پیش فرض برای محاسبات تاریخی مشخص میشود. نوع تقویم wnCalendar است.
wnConfig.cultureInfo
با تنظیم این متغییر فرهنگ پیش فرض برای محاسبات تاریخی مشخص میشود. نوع فرهنگ wnCultureInfo است.
WNDefaultLanguage
زبان پیش فرض انتخاب شده برای استفاده از فرهنگ و ... است