settings-store.user.js

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

اعتبارا من 12-08-2014. شاهد أحدث إصدار.

لا ينبغي أن لا يتم تثبيت هذا السكريت مباشرة. هو مكتبة لسكبتات لتشمل مع التوجيه الفوقية // @require https://update.greasyfork.org/scripts/4099/13111/settings-storeuserjs.js

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

ستحتاج إلى تثبيت إضافة مثل 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();
        };
    }
}