settings-store.user.js

Exalea - Settings Store pour le P.D.O.

Този скрипт не може да бъде инсталиран директно. Това е библиотека за други скриптове и може да бъде използвана с мета-директива // @require https://update.greasyfork.org/scripts/4099/13111/settings-storeuserjs.js

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

/**
 *  Prototype d'une SettingsStore (Singleton)
 */
{
    /**
     *  Constructeur
     *
     *  @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
     *  @constructor
     *
     *  @author Exalea
     */
    var SettingsStore = function () {
        /**
         *  Liste des paramètres disponibles (de type SettingEntry)
         *
         *  @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
         *
         *  @author Exalea
         */
        this.entries = {};
        return this;
    };

    /**
     *  Ajout d'un paramètre de type SettingEntry au store
     *
     *  @param {string} name Nom attribué au paramètre
     *  @param {SettingEntry} entry Paramètre à ajouter
     *  @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
     *
     *  @author Exalea
     */
    SettingsStore.prototype.addEntry = function (name, entry) {
        this.entries[name] = entry;
        return this;
    };

    /**
     *
     *  Ajout d'un paramètre via un nom, une clef (identifiant unique) de persistence et une valeur par défaut
     *
     *  @param {string} name Nom attribué au paramètre
     *  @param {string} key Clef de persistence du paramètre
     *  @param {string} defaultValue Valeur par défaut du paramètre
     *  @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
     *
     *  @author Exalea
     */
    SettingsStore.prototype.add = function (name, key, defaultValue) {
        this.addEntry(name, new SettingEntry(key, defaultValue));
        return this;
    };

    /**
     *  Initialisation (à leur valeur persistée si existante, sinon à leur valeur par défaut) de chacun des paramètres ajoutés au SettingsStore
     *
     *  @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
     *
     *  @author Exalea
     */
    SettingsStore.prototype.init = function () {
        for (var index in this.entries) {
            var entry = this.entries[index];
            if (entry instanceof SettingEntry)
                entry.init();
        }
        return this;
    };

    /**
     *  Implémentation du pattern Singleton
     *
     *  @returns {SettingsStore}
     */
    SettingsStore.getInstance = function () {
        if (SettingsStore.instance == null)
            SettingsStore.instance = new SettingsStore();
        return SettingsStore.instance;
    };

    /**
     *  Sucre syntaxique : ajout d'un accès statique aux méthodes du Singleton
     */
    {
        SettingsStore.addEntry = function (name, entry) {
            return SettingsStore.getInstance().addEntry(name, entry);
        };

        SettingsStore.add = function (name, key, defaultValue) {
            return SettingsStore.getInstance().add(name, key, defaultValue);
        };

        SettingsStore.init = function () {
            return SettingsStore.getInstance().init();
        };
    }
}