Skip to content

RegionLab/typed_observer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

typed_observer


import {Observer, Int, String} from 'typed_observer';

// ОписаниС простого Ρ‚ΠΈΠΏΠ°, Π‘ΠΎΠ³Π»Π°Π½ΠΎ Π΅ΠΌΡƒ ΠΏΠΎΠ»Π΅ смоТСт ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ значСния строго Ρ€Π°Π²Π½Ρ‹Π΅ true ΠΈΠ»ΠΈ false
var Bool = {
    isValid(value) {
        return value === true || value === false;
    },
    
    getValue(value) {
        return value;
    },
    
    getPureValue(value) {
        return value;
    }
}

// ОписаниС простого Ρ‚ΠΈΠΏΠ°, согласно Π΅ΠΌΡƒ ΠΏΠΎΠ»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ смоТСт ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² массивС
function oneOf(arr) {
    return {
        isValid(value) {
            return arr.indexOf(value) >= 0
        },
        
        getValue(value) {
            return value;
        },
        
        getPureValue(value) {
            return value;
        }
    }
} 

/*********************************************************/
        ОписаниС  полС 
/*********************************************************/
var observer = new Observer();

observer.define('firstName', String, {required: true});
observer.define('age', Input);
observer.define('married', Bool);
observer.define('gender', oneOf([0,1])); // 0 - male, 1 - female

/*********************************************************/

// КолбСк на измСнСниС любого поля
observer.onUpdate((dataHandler) => {
    console.log(data);
});

// КолбСк на измСнСниС поля firstName
observer.onUpdate('firstName', (value, dataHandler) => {
    console.log('firstName =', value);
});


observer.set('firstName', 'Josh') // Установка значСния
        .freeze('firstName'); // Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΊΠ° поля(ΠΏΠΎΠ»Π΅ Π½Π΅ смоТСт ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния)
        
observer.set('firstName', 'Mark');
observer.get('firstName'); // 'Josh'

observer.defreeze('firstName'); // Ρ€Π°Π·ΠΌΠ°Ρ€ΠΎΠ·ΠΊΠ° поля

observer.set('firstName', 'Mark');
observer.get('firstName'); // 'Mark'

observer.lock('age'); // Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠ»Π±Π΅ΠΊΠ°

// Π’Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Ρ€Π°Π½Π΅Π΅
observer.onUpdate('age', (value, dataHandler) => {
    console.log('firstName =', value);
});

var data = observer.get();

data.firstName = 'Josh';
observer.get('firstName') // Josh

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages