Các hàm javascript có sẵn trong admin

Cập nhật lúc 1693562496000

ezyadmin.getI18nMessage

Các i18n message từ server thông qua thymeleaf có thể được render vào trang html và gửi cho client, thông thường sẽ được gán vào biến ezyadmin.messages, ví dụ:

<script>
/*<![CDATA[*/
ezyadmin.messages.avatar = "Avatar";
ezyadmin.messages.asked = "Asked";
</script>

Hàm getI18nMessage dùng để lấy i18n message ezyadmin.messages theo key truyền vào và có trả về kiểu viết chữ thường nếu được yêu cầu. Trong trường hợp không có giá trị nào Tham số truyền vào bao gồm:

  1. key - String: message key.
  2. toLowerCase - Boolean: viết thường i18n message hay không.

Ví dụ:

const avatarMessage = ezyadmin.getI18nMessage('avatar', true);

ezyadmin.currentTimeMillis

Trả về timestamp hiện tại kiểu Number.

Ví dụ:

var currentMillis = ezyadmin.currentTimeMillis();

ezyadmin.formatTimeStamp

Format timestamp từ Number sang theo format yêu cầu. Tham số truyền vào bao gồm:

  1. timestamp - Number.
  2. format - String: Mặc định là YYYY-MM-DD HH:mm:ss.

Ví dụ:

ezyadmin.formatTimeStamp(page.createdAt);

ezyadmin.formatTimeStampMinute

Format timestamp từ Number sang format YYYY-MM-DD HH:mm. Tham số truyền vào:

1. timestamp - Number

Ví dụ:

ezyadmin.formatTimeStampMinute(timestame);

ezyadmin.durationToString

Chuyển đổi từ duration (giây) sang string, ví dụ 34218061 sẽ là: 1y-1m-1d 1h:1m:1s. Tham số truyền vào:

  1. duration - Number.

Lưu ý: Một năm là 356 ngày, một tháng là 30 ngày.

Ví dụ:

ezyadmin.durationToString(ezyadmin.liveTime);

ezyadmin.durationToSimpleString

Chuyển đổi từ duration (giây) sang string, ví dụ 34822861 se là: 1y1M1w1d1h1m1s. Tham số truyền vào:

  1. duration - Number.

Lưu ý: Một năm là 356 ngày, một tháng là 30 ngày, một ngày 7 ngày.

Ví dụ:

ezyadmin.durationToSimpleString(duration);

ezyadmin.simpleDurationStringToMillis

Chuyển đổi duration (string) sang millis second, ví dụ 1y1M1w1d sẽ được chuyển thành: 1450800000. Tham số truyền vào:

  1. str - String

Ví dụ:

ezyadmin.simpleDurationStringToMillis('1m');

ezyadmin.getTimeRangeValue

Tính khoảng thời gian so với mốc thời gian tính từ thời điểm hiện tại, ví dụ hiện tại là 1693203170896 và mốc thời gian là 1693203170890 thì kết quả sẽ là 6. Tham số truyền vào:

  1. milestoneTime - Number: Mốc thời gian tính theo millisecond.

Ví dụ:

var timeRangeValue = ezyadmin.getTimeRangeValue(milestoneTime);

ezyadmin.getTimeRangeTextValue

Tính khoảng thời gian so với mốc thời gian tính từ thời điểm hiện tại và chuyển về dạng string, ví dụ hiện tại là 1693203170896 và mốc thời gian là 1693206770896 thì kết quả sẽ là 1 hour. Tham số truyền vào:

  1. milestoneTime - Number: Mốc thời gian tính theo millisecond.
  2. includeSuffix - Boolean: Có bổ sung hậu tố cho khoảng thời gian hay không, nếu có thì nếu mốc thời gian là lớn hơn hiện tại thì hậu tố sẽ là more, ngược lại nếu mốc thời gian nhỏ hơn thì sẽ là ago.

Ví dụ:

ezyadmin.getTimeRangeTextValue(notification.sentAt, false);

ezyadmin.formatNumberWithCommas

Format số theo định dạng dấu phẩy, ví dụ 1000 sẽ là 1,000. Tham số truyền vào:

number - Number: Số cần định dạng.

Ví dụ:

ezyadmin.formatNumberWithCommas(post.comments);

ezyadmin.listToBooleanMap

Chuyển đổi một danh sách về thành map boolean, ví dụ List[1, 2, 3] sẽ được chuyển thành Map{1:true, 2:true, 3:true}. Mục tiêu là chuyển thành map để kiểm tra phần tử có tồn tại nhanh hơn. Tham số truyền vào:

  1. list - Array: Danh sách các phần tử.

Ví dụ:

var moduleTypeMap = ezyadmin.listToBooleanMap(moduleTypes);

ezyadmin.removeItemFromList

Xóa một item khỏi một list, ví dụ xóa 2 khỏi [1, 2, 3] thì list sẽ còn [1, 3]. Tham số truyền vào

  1. list - Array: Danh sách các phần tử.
  2. itemToRemove - Any: Phần tử cần xóa khỏi list.

Ví dụ:

ezyadmin.removeItemFromList(list, 1);

ezyadmin.getModuleTypeShortName

Lấy module type từ tên truyền vào. Danh sách các module type map với short name như sau:

  1. 'admin-plugin': 'Plugin'
  2. 'socket-plugin': 'Plugin'
  3. 'socket-app': 'App'
  4. 'web-plugin': 'Plugin'
  5. 'theme': 'Theme'

Tham số truyền vào:

  1. moduleType - String.

Ví dụ:

var moduleTypeShortName = ezyadmin.getModuleTypeShortName(module.type);

ezyadmin.getModuleTypeName

Lấy module type name từ module type truyền vào. Danh sách các module type name map với module type như sau:

  1. 'admin-plugin': 'Admin Plugin'
  2. 'socket-plugin': 'Socket Plugin'
  3. 'socket-app': 'Socket Application'
  4. 'web-plugin': 'Web Plugin'
  5. 'theme': 'Theme'

Tham số truyền vào:

  1. moduleType - String.

Ví dụ:

moduleTypeNames.push(ezyadmin.getModuleTypeName(moduleType));

ezyadmin.getModuleTypeNames

Lấy danh sách module type name dạng chuỗi ngắn cách bởi dấu phẩy, ví dụ truyền vào [admin-plugin, socket-plugin] thì sẽ nhận được: Admin Plugin, Socket Plugin. Tham số truyền vào:

  1. moduleTypes - Array: Danh sách module type.

Ví dụ:

ezyadmin.getModuleTypeNames(moduleTypes);

ezyadmin.getErrorMessageByCode

Lấy error message theo code truyền vào. Danh sách message map với code như sau:

ezyadwmin.errorMessageByCode = {
    'required': ezyadmin.getI18nMessage('required'),
    'invalid': ezyadmin.getI18nMessage('invalid'),
    'tooShort': ezyadmin.getI18nMessage('too_short'),
    'tooLong': ezyadmin.getI18nMessage('too_long'),
    'overLength': ezyadmin.getI18nMessage('over_length'),
    'duplicated': ezyadmin.getI18nMessage('duplicated'),
    'incorrect': ezyadmin.getI18nMessage('incorrect'),
    'mismatch': ezyadmin.getI18nMessage('mismatch'),
    'tooMany': ezyadmin.getI18nMessage('too_many')
};

Tham số truyền vào:

  1. code - String: Mã lỗi.

Ví dụ:

ezyadmin.getErrorMessageByCode('required');

Lưu ý: Bạn cũng có thể bổ sung mã lỗi và message của mình, ví dụ:

ezyadmin.errorMessageByCode['helloWorld'] = ezyadmin.getI18nMessage('helloWorld');

ezyadmin.getTextColorByStatus

Lấy text color theo status truyền vào. Danh sách color map với status như sau:

ezyadmin.textColorByStatus = {
    'ACTIVATED': 'text-success',
    'ARCHIVED': 'text-info',
    'APPROVED': 'text-success',
    'APPROVING': 'text-primary',
    'BLOCKING': 'text-primary',
    'BLOCKED': 'text-danger',
    'BURNED': 'text-secondary',
    'CLOSED': 'text-danger',
    'DELETED': 'text-danger',
    'INACTIVATED': 'text-secondary',
    'MINTED': 'text-info',
    'OPENED': 'text-success',
    'PUBLISHED': 'text-success',
    'REGISTER_OPENED': 'text-success',
    'REGISTER_CLOSED': 'text-danger',
    'REJECTED': 'text-danger',
    'REVIEWING': 'text-primary',
    'RELEASABLE': 'text-info',
    'RELEASED': 'text-success'
};

Tham số truyền vào:

  1. status - String

Ví dụ:

var statusColor = ezyadmin.getTextColorByStatus(admin.status);

Lưu ý: Bạn cũng có thể bổ sung màu sắc và trạng thái của mình, ví dụ:

ezyadmin.textColorByStatus['HELLO'] = 'text-hello';

ezyadmin.toDisplayString

Chuyển đổi string thông thường thành display string, ví dụ hello world, hello-world, hello.world, hello_world sẽ được chuyển thành Hello world. Tham số truyền vào:

  1. str - String

Ví dụ:

var displayString = ezyadmin.toDisplayString(str);

ezyadmin.toCapitalizeString

Chuyển đổi string thông thường thành string viết hoa các chữ cái đầu tiên, ví dụ hello world sẽ được chuyển thành Hello World. Tham số truyền vào:

  1. str - String.

Ví dụ:

ezyadmin.toCapitalizeString(moduleType);

ezyadmin.toHeadingString

Chuyển đổi string thông thường thành display string, ví dụ hello world, hello-world, hello.world, hello_world sẽ được chuyển thành Hello World. Tham số truyền vào:

  1. str - String.

Ví dụ:

ezyadmin.toHeadingString(feature);

ezyadmin.truncateString

Cắt ngắn một string và cộng thêm hậu tố. Tham số truyền vào:

  1. str - String: Chuỗi đầu vào.
  2. . maxLength - Number: Độ dài chuỗi được cắt.
  3. suffix - String: Hậu tố được cộng thêm.

Ví dụ:

ezyadmin.truncateString(notification.title, 18, '...');

ezyadmin.getHtmlBodyContent

Lấy nội dung bên trong thẻ body. Tham số truyền vào:

  1. html - String.

Ví dụ:

ezyadmin.getHtmlBodyContent(html);

ezyadmin.removeHtmlTagAndSub

Loại bỏ thẻ html khỏi nội dung và cắt ngắn. Tham số truyền vào:

  1. html - String.
  2. maxLength - Number: Độ dài nội dung sau khi được cắt.

Ví dụ:

ezyadmin.removeHtmlTagAndSub(project.description, 300);

ezyadmin.randomString

Random một chuỗi. Tham số truyền vào:

  1. length - Number: Độ dài chuỗi được random.
  2. characters - String: Chuỗi chứa các ký tự sẽ được random, mặc định sẽ là chuỗi ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.

Ví dụ:

var encryptionKey = ezyadmin.randomString(32);

ezyadmin.randomPassword

Random mật khẩu. Tham số truyền vào:

  1. length - Number: Độ dài mật khẩu.

Các ký tự trong mật khẩu sẽ nằm trong chuỗi: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()_+.

Ví dụ:

var password = ezyadmin.randomPassword();

ezyadmin.wrapTextIfNeed

Wrap nội dung với thẻ html nếu cần. Tham số truyền vào:

  1. text - String: Nội dung.
  2. tag - String: Tên thẻ html.
  3. need - Boolean: Nếu là true thì nội dung sẽ được bọc với thẻ, nếu là false thì không.

Ví dụ:

ezyadmin.wrapTextIfNeed(from, 'strong', !letter.readAt);

ezyadmin.getCurrentUrlParameter

Lấy query parameter trong đường dẫn của trang. Tham số truyền vào:

  1. paramName - String: Tên của tham số cần lấy ra.

Ví dụ:

var keyword = ezyadmin.getCurrentUrlParameter('keyword');

ezyadmin.joinToString

Chuyển đổi một mảng thành string. Tham số truyền vào:

  1. array - Array.
  2. separator - String: Ký tự ngăn cách giữa các phần tử.
  3. itemMapper - Function: Hàm chuyển đổi item.

Ví dụ:

ezyadmin.joinToString(
    module.dependencies,
    ', ',
    it => it.projectName + ':' + it.projectVersion
)

ezyadmin.mergeObjects

Merge các đối tượng lại với nhau. Tham số truyền vào:

  1. objects - Array: Danh sách các đối tượng cần merge.

Ví dụ:

ezyadmin.mergeObjects([ezyadmin.fromUserById, userMap]);

ezyadmin.mergeObjectsToFirst

Merge các đối tượng vào đối tượng đầu tiên. Tham số truyền vào:

  1. objects - Array: Danh sách các đối tượng cần merge.

Ví dụ:

ezyadmin.mergeObjectsToFirst([ezyadmin.fromUserById, userMap]);

ezyadmin.fetchAll

Gọi hàm callback sau khi tất cả các hàm khác đã được thực thi xong. Tham số truyền vào:

  1. fetchFunctions - Array: Danh sách các hàm cần thực thi.
  2. callback - Function: Hàm callback được gọi sau khi các hàm cần thực thi đã xong.

Ví dụ:

var fetchUsers = callback => {
    ezyadmin.fetchUsersByIds(newFromUserIds, (userMap) => {
        ezyadmin.mergeObjectsToFirst([ezyadmin.fromUserById, userMap]);
        callback();
    });
}
fetchUsers.condition = () => newFromUserIds.length;

var fetchAdmins = callback => {
    ezyadmin.fetchAdminsByIds(newFromAdminIds, (adminMap) => {
        ezyadmin.mergeObjectsToFirst([ezyadmin.fromAdminById, adminMap]);
        callback();
    });
}
fetchAdmins.condition = () => newFromAdminIds.length;

var callback = () => $('#letterListBody').html(
    ezyadmin.buildLetterListBodyHtml(data.items)
);
ezyadmin.fetchAll([fetchUsers, fetchAdmins], callback);

ezyadmin.shortToast

Hiển thị toast. Các tham số truyền vào:

  1. colorClass - String: Tên lớp màu sắc của chữ hoặc background.
  2. title - String: Tiêu đề.
  3. body - String: Nội dung.

Ví dụ:

ezyadmin.shortToast('bg-success', 'Update successfully');

ezyadmin.copyToClipboard

Copy nội dung của thẻ được chọn vào clip board. Tham số truyền vào:

  1. elementId - String: Id của thẻ được chọn.
  2. isInput - Boolean: Phần tử được chọn có phải là input hay không.
  3. alertTextPrefix - String: Tiền tố của thông báo copy thành công.

Ví dụ:

ezyadmin.copyToClipboard('updateMediaUrl', true, 'URL');

ezyadmin.formDataToObject

Chuyển đổi form data thành object. Ví dụ chúng ta có form:

<form id="editRoleForm">
	<input type="text" name="editRoleName" id="editRoleName">
    <input type="text" name="editRoleDisplayName" id="editRoleDisplayName">
</form>

Sẽ được chuyển thành object:

{
  editRoleName: $('input[name="editRoleName"]').val(),
  editRoleDisplayName: $('input[name="editRoleDisplayName"]').val()
}

Tham số truyền vào:

  1. formName - String: Tên form.

Ví dụ:

var formData = ezyadmin.formDataToObject('addNewRoleForm');

ezyadmin.watchInputKeyDown

Lắng nghe sự kiện keydown và keyup của một input element để kiểm soát độ dài của giá trị và hiển thị độ dài hiện tại của giá trị. Tham số truyền vào:

  1. elementId - String: Id của element cần lắng nghe sự kiện.
  2. maxValueLength - Number: Độ dài tối đa giá trị của input element.
  3. onEnterCallback - Function: Hàm callback khi người dùng nhấn Enter.

Ví dụ bạn có html:

<input type="text" name="helloWorld" id="helloWorld">
<span id="helloWorldLength"></span>

Bạn có thể sử dụng:

ezyadmin.watchInputKeyDown('helloWorld', 100, () => { console.log('Enter'); });

ezyadmin.extractMediaUrl

Lấy ra url từ một đối tượng media. Tham số truyền vào:

  1. media - Object: Đối tượng media.

Ví dụ:

var mediaUrl = ezyadmin.extractMediaUrl(media);

ezyadmin.scrollToElement

Scroll đến vị trí của phần từ. Tham số truyền vào:

  1. elementId - String: Id của phần tử.
  2. duration - Number: Khoảng thời gian để scroll.

Ví dụ:

ezyadmin.scrollToElement('answer', 100);

ezyadmin.syntaxHighlightJson

Highlight json syntax. Tham số truyền vào:

  1. json - String

Ví dụ:

ezyadmin.syntaxHighlightJson(body);

ezyadmin.toCapacityString

Chuyển đổi dung lượng byte sang dạng. Ví dụ 1 sẽ là 1B, 1024 sẽ là 1KB … Tham số truyền vào:

  1. input - Number: Dung lượng byte.

Ví dụ:

ezyadmin.toCapacityString(data.usedMemory);

ezyadmin.toCountString

Chuyển đối từ số lượng sang dạng string, ví dụ 10001K, 10000001M, … Tham số truyền vào:

  1. input - Number: Số lượng

Ví dụ:

ezyadmin.toCountString(data);

ezyadmin.setCookie

Set giá trị cookie. Tham số truyền vào:

  1. name - String: Tên cookie.
  2. value - Any: Giá trị cookie.
  3. days - Number: Số ngày cookie tồn tại.

Ví dụ:

ezyadmin.setCookie('token', 'abc', 1);

ezyadmin.deleteCookie

Xóa cookie. Tham số truyền vào:

  1. name - String: Tên cookie.

Ví dụ:

ezyadmin.deleteCookie('token');

ezyadmin.getCookie

Lấy giá trị của cookie. Tham số truyền vào:

  1. cname - String: Tên cookie.

Ví dụ:

ezyadmin.getCookie("adminAccessToken");

ezyadmin.getCookieAccessToken

Lấy admin access token từ cookie.

Ví dụ:

ezyadmin.getCookieAccessToken();

ezyadmin.enableServer

Cho phép server hoạt động. Tham số truyền vào.

  1. target - String: Là admin, socket hoặc web

Ví dụ:

ezyadmin.enableServer('socket');

ezyadmin.disableServer

Vô hiệu hóa server. Tham số truyền vào;

  1. target - String: Là admin, socket hoặc web

Ví dụ:

ezyadmin.disableServer('socket');

ezyadmin.startServer

Khởi động server. Tham số truyền vào:

  1. target - String: Là admin, socket hoặc web

Ví dụ:

ezyadmin.startServer('socket');

ezyadmin.stopServer

Dừng server. Tham số truyền vào:

  1. target - String: Là admin, socket hoặc web

Ví dụ:

ezyadmin.stopServer('socket');

ezyadmin.restartServer

Khởi động lại server. Tham số truyền vào:

  1. target - String: Là admin, socket hoặc web

Ví dụ:

ezyadmin.restartServer('socket');

ezyadmin.doTargetAction

Thực hiện một hành động với server. Tham số truyền vào:

  1. target - String: Là admin, socket hoặc web.
  2. action - String: Là enable, disable, stop, start hay restart.
  3. showLoading - Boolean: Có hiển thị loading không.

Ví dụ:

ezyadmin.doTargetAction(target, 'Enable', false);

ezyadmin.ensureAdminRunning

Gọi một hàm callback nếu admin vẫn đang chạy, hoặc chờ cho đến khi admin chạy trở lại. Tham số truyền vào:

  1. callback - Function.

Ví dụ:

ezyadmin.ensureAdminRunning(postAction);

ezyadmin.showLoadingScreen

Hiển thị loading screen

Ví dụ:

ezyadmin.showLoadingScreen();

ezyadmin.hideLoadingScreen

Ẩn loading screen.

Ví dụ:

ezyadmin.hideLoadingScreen();

ezyadmin.showProfile

Chuyển đến trang profile của admin, ví dụ:

ezyadmin.showProfile();

ezyadmin.logout

Đăng xuất admin.

Ví dụ:

ezyadmin.logout();

ezyadmin.redirectToLogin

Chuyển hướng đến trang login.

Ví dụ:

ezyadmin.redirectToLogin();

ezyadmin.redirectToPermissionDenied

Chuyển hướng đến trang truy cập bị từ chối có đường dẫn /permission-denied.

Ví dụ:

ezyadmin.redirectToPermissionDenied();

ezyadmin.redirectToNotFound

Chuyển hướng đến trang không tìm thấy kết quả có đường dẫn /not-found.

Ví dụ:

ezyadmin.redirectToNotFound();

ezyadmin.redirectToServerError()

Chuyển hướng đến trang server bị lỗi quả có đường dẫn /server-error.

Ví dụ:

ezyadmin.redirectToServerError();

ezyadmin.processGetApiErrors

Xử lý lỗi khi gọi API GET. Tham số truyền vào:

  1. responseData - Any: Dữ liệu phản hồi từ server.
  2. handler - Function hoặc Map: Hàm hoặc một map chứa các hàm xử lý mã lỗi.

Ví dụ:

ezyadmin.processGetApiErrors(e);

ezyadmin.processUpdateApiErrors

Xử lý lỗi khi gọi API và hiển thị lỗi lên giao diện của form. Tham số truyền vào:

  1. formData - Object: Form chứa các trường dữ liệu được map với các trường bị lỗi trong dữ liệu phản hồi từ server.
  2. responseData - Any: Dữ liệu phản hồi từ server.
  3. handler - Function hoặc Map: Hàm hoặc một map chứa các hàm xử lý mã lỗi.

Ví dụ trường hợp tên các trường của form trùng khớp với các trường trong dữ liệu trả về:

HTML của form:

<form class="form-horizontal" id="contactUsForm">
    <div class="form-group">
        <label for="contactUsYourName" class="col-form-label">
            [[#{ezysupport_contact_us_your_name}]]
        </label>
        <label class="col-form-label text-danger ml-2 ms-2 d-none" id="contactUsYourNameErrorLabel" for="contactUsYourName">
            <i class="fas fa-exclamation"></i> <span id="contactUsYourNameError"></span>
        </label>
        <input type="text" name="contactUsYourName" id="contactUsYourName" class="form-control"
                th:value="${user != null ? user.displayName : ''}">
    </div>
    ...
    <div class="form-group">
        <label for="contactUsMessage" class="col-form-label">
            [[#{ezysupport_contact_us_message}]]
        </label>
        <label class="col-form-label text-danger ml-2 ms-2 d-none" id="contactUsMessageErrorLabel" for="contactUsMessage">
            <i class="fas fa-exclamation"></i> <span id="contactUsMessageError"></span>
        </label>
        <textarea id="contactUsMessage" name="contactUsMessage" class="form-control" rows="8"></textarea>
    </div>
    <div class="form-group">
        <button type="button" id="submitButton" class="form-control btn btn-outline-primary" onclick="ezysupport.sendContactUs();">
            [[#{ezysupport_contact_us_submit}]]
        </button>
    </div>
</form>

Code javascript:

var formData = ezyadmin.formDataToObject('contactUsForm');
$.ajax({
    ...
    error: function (data, e) {
        ezyadmin.processUpdateApiErrors(formData, data);
    }
});

Ví dụ trường hợp tên các trường của form không khớp với các trường trong dữ liệu trả về:

HTML của form:

<form id="changePasswordForm">
	<div class="form-group row" th:if="${!hasAutoGeneratedPassword}">
		<label for="changeOldPassword" class="col-sm-4 col-form-label">
			[[#{old_password}]]
		</label>
		<div class="col-sm-8">
			<label class="col-form-label text-danger d-none" id="changeOldPasswordErrorLabel" for="changeOldPassword">
				<i class="far fa-times-circle"></i> <span id="changeOldPasswordError"></span>
			</label>
			<div class="input-group mb-3">
				<input type="password" name="oldPassword" onkeydown="onKeyDownToChangePassword()"
					   id="changeOldPassword" class="form-control" th:placeholder="#{old_password}">
			</div>
		</div>
	</div>
	...
	<div class="form-group row">
		<label for="changeRetypePassword" class="col-sm-4 col-form-label">
			[[#{retype_password}]]
		</label>
		<div class="col-sm-8">
			<label class="col-form-label text-danger d-none" id="changeRetypePasswordErrorLabel" for="changeRetypePassword">
				<i class="far fa-times-circle"></i> <span id="changeRetypePasswordError"></span>
			</label>
			<div class="input-group">
				<input type="password" name="retypeNewPassword" onkeydown="onKeyDownToChangePassword()"
					   id="changeRetypePassword" class="form-control" th:placeholder="#{retype_password}">
			</div>
		</div>
	</div>
</form>
Code javascript:
var formView = {
	changeOldPassword: true,
	changeNewPassword: true,
	changeRetypePassword: true
};
$.ajax({
    ...,
    error: function (e) {
    	var errors = e.responseJSON || {};
    	errors.changeOldPassword = errors.password;
	    errors.changeNewPassword = errors.newPassword;
    	ezyadmin.processUpdateApiErrors(formView, e);
    }
});

Chúng ta sẽ cần tạo ra một form giả để map với các trường trong dữ liệu phản hồi tử server.

ezyadmin.hideFormErrors

Ẩn các thông báo lỗi khỏi form. Tham số truyền vào:

  1. formData - Object: Form chứa các trường dữ liệu được map với các trường bị lỗi trong dữ liệu phản hồi từ server.

Ví dụ:

ezyadmin.hideFormErrors(formData);

ezyadmin.resetFormData

Ẩn các thông báo lỗi và reset dữ liệu của form.

  1. formData - Object: Form chứa các trường dữ liệu được map với các trường bị lỗi trong dữ liệu phản hồi từ server.

Ví dụ:

ezyadmin.resetFormData(formData);

ezyadmin.getUploadFileApiErrorMessage

Parse và trả về mã message lỗi từ phản hồi của server khi gọi API upload file. Tham số truyền vào:

  1. responseData - Object: Dữ liệu phản hồi từ server.

Ví dụ:

var errorMessage = ezyadmin.getUploadFileApiErrorMessage(responseData);

ezyadmin.processUploadFileApiErrors

Xử lý trong trường hợp load file lỗi, nếu mã lỗi là 401 sẽ chuyển hướng sang trang login. Tham số truyền vào:

  1. responseData - Object: Dữ liệu phản hồi từ server.
  2. uploadView - Object: Đối tượng chứa thông tin về giao diện upload file.

Ví dụ:

var releaseProjectView = {
    name: 'uploadProject',
    chooseFileLabelText: $('#releaseBundleFileLabel').text()
};
ezyadmin.processUploadFileApiErrors(data, releaseProjectView);

ezyadmin.formatDateStringElements

Duyệt qua tất cả các phần tử có class là date-string và chuyển đổi dữ liệu từ dạng timestamp sang dạng YYY-MM-DD.

Ví dụ:

ezyadmin.formatDateStringElements();

ezyadmin.formatDateTimeStringElements

Duyệt qua tất cả các phần tử có class là date-time-string và chuyển đổi dữ liệu từ dạng timestamp sang dạng YYY-MM-DD HH:mm:ss.

Ví dụ:

ezyadmin.formatDateTimeStringElements();

ezyadmin.formatDateTimeMinuteStringElements

Duyệt qua tất cả các phần tử có class là date-time-minute-string và chuyển đổi dữ liệu từ dạng timestamp sang dạng YYY-MM-DD HH:mm:ss.

Ví dụ:

ezyadmin.formatDateTimeStringElements();

ezyadmin.formatStatusTextElements

Duyệt qua tất cả các phần tử có class là status-text và bổ sung class color cho text.

Ví dụ:

ezyadmin.formatStatusTextElements();

ezyadmin.formatNumberWithCommasElements

Duyệt qua tất cả các phần tử có class là commas-number-string và giá trị sang dạng dấu phẩy.

Ví dụ:

ezyadmin.formatNumberWithCommasElements();

ezyadmin.createDataTable

Tạo một data table. Tham số truyền vào:

  1. tableId - String: id của data table.
  2. pageLength - Number: Số lượng phần tử trên một trang.
  3. searching - Boolean: Cho phép tìm kiếm hay không.

Ví dụ:

ezyadmin.createDataTable('categoryList', 12);

Chú ý: để sử dụng được hàm này bạn phải bổ sung thư viện data table vào trang html của bạn. Bạn có thể sử dụng cdn.

ezyadmin.appendLangParameterToFormActions

Bổ sung tham số lang vào các form action.

Ví dụ:

ezyadmin.appendLangParameterToFormActions();

ezyadmin.appendLangParameterToLinks

Bổ sung tham số lang vào thuộc tính href của các thẻ a.

Ví dụ:

ezyadmin.appendLangParameterToLinks();

ezyadmin.onLanguageSelected

Chuyển trang sang ngôn ngữ mới khi người dùng chọn ngôn ngữ. Tham số truyền vào:

selectedLanguage - String: Mã ngôn ngữ được chọn.

Ví dụ:

th:attr="onclick=|ezyadmin.onLanguageSelected('${webLanguage.code}')|"

ezyadmin.fetchAdminsByIds

Lấy danh sách admin theo danh sách id. Tham số truyền vào:

  1. ids - Array: Danh sách các admin id.
  2. callback - Function: Hàm callback được gọi khi lấy danh sách admin thành công.

Ví dụ:

var fetchAdmins = callback => {
    ezyadmin.fetchAdminsByIds(newFromAdminIds, (adminMap) => {
        ezyadmin.mergeObjectsToFirst([ezyadmin.fromAdminById, adminMap]);
        callback();
    });
}

ezyadmin.fetchUsersByIds

Lấy danh sách user theo danh sách id. Tham số truyền vào:

  1. ids - Array: Danh sách các user id.
  2. callback - Function: Hàm callback được gọi khi lấy danh sách user thành công.

Ví dụ:

var fetchUsers = callback => {
    ezyadmin.fetchUsersByIds(newFromUserIds, (userMap) => {
        ezyadmin.mergeObjectsToFirst([ezyadmin.fromUserById, userMap]);
        callback();
    });
}

Mục lục