| Server IP : 104.21.28.229 / Your IP : 216.73.216.142 Web Server : Apache/2 System : Linux hosting8537.lvs 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : mienphi ( 1014) PHP Version : 8.2.14 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/mienphi/public_html/wp-content/plugins/learnpress/assets/src/js/admin/ |
Upload File : |
/**
* Library run on Admin
*
* @since 4.2.6.9
* @version 1.0.0
*/
import * as Utils from '../utils.js';
import TomSelect from 'tom-select';
import Api from '../api.js';
const AdminUtilsFunctions = {
buildTomSelect( elTomSelect, options, fetchAPI, dataSend, callBackHandleData ) {
if ( ! elTomSelect ) {
return;
}
const optionDefault = {
plugins: {
remove_button: {
title: 'Remove this item',
},
},
onInitialize() {
},
onItemAdd( e ) {
// Get list without current item.
if ( fetchAPI ) {
const selectedOptions = Array.from( elTomSelect.selectedOptions );
const selectedValues = selectedOptions.map( ( option ) => option.value );
selectedValues.push( e );
dataSend.id_not_in = selectedValues.join( ',' );
fetchAPI( '', dataSend, callBackHandleData );
}
},
};
if ( fetchAPI ) {
optionDefault.load = ( keySearch, callbackTom ) => {
const selectedOptions = Array.from( elTomSelect.selectedOptions );
const selectedValues = selectedOptions.map( ( option ) => option.value );
dataSend.id_not_in = selectedValues.join( ',' );
fetchAPI(
keySearch,
dataSend,
AdminUtilsFunctions.callBackTomSelectSearchAPI( callbackTom, callBackHandleData )
);
};
}
options = { ...optionDefault, ...options };
const items_selected = options.options;
if ( options?.options?.length > 20 ) {
const chunkSize = 20;
const length = options.options.length;
let i = 0;
const chunkedOptions = { ...options };
chunkedOptions.options = items_selected.slice( i, chunkSize );
const tomSelect = new TomSelect( elTomSelect, chunkedOptions );
i += chunkSize;
const interval = setInterval( () => {
if ( i > ( length - 1 ) ) {
clearInterval( interval );
}
const optionsSlice = items_selected.slice( i, i + chunkSize );
i += chunkSize;
tomSelect.addOptions( optionsSlice );
tomSelect.setValue( options.items );
}, 200 );
return tomSelect;
}
return new TomSelect( elTomSelect, options );
},
callBackTomSelectSearchAPI( callbackTom, callBackHandleData ) {
return {
success: ( response ) => {
const options = callBackHandleData.success( response );
callbackTom( options );
},
};
},
fetchCourses( keySearch = '', dataSend = {}, callback ) {
const url = Api.admin.apiSearchCourses;
dataSend.search = keySearch;
const params = {
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': lpDataAdmin.nonce,
},
method: 'POST',
body: JSON.stringify( dataSend ),
};
Utils.lpFetchAPI( url, params, callback );
},
fetchUsers( keySearch = '', dataSend = {}, callback ) {
const url = Api.admin.apiSearchUsers;
dataSend.search = keySearch;
const params = {
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': lpDataAdmin.nonce,
},
method: 'POST',
body: JSON.stringify( dataSend ),
};
Utils.lpFetchAPI( url, params, callback );
},
};
export { Utils, AdminUtilsFunctions, Api };