diff core/modules/quickedit/js/models/BaseModel.es6.js @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 129ea1e6d783
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/quickedit/js/models/BaseModel.es6.js	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,56 @@
+/**
+ * @file
+ * A Backbone Model subclass that enforces validation when calling set().
+ */
+
+(function (Drupal, Backbone) {
+  Drupal.quickedit.BaseModel = Backbone.Model.extend(/** @lends Drupal.quickedit.BaseModel# */{
+
+    /**
+     * @constructs
+     *
+     * @augments Backbone.Model
+     *
+     * @param {object} options
+     *   Options for the base model-
+     *
+     * @return {Drupal.quickedit.BaseModel}
+     *   A quickedit base model.
+     */
+    initialize(options) {
+      this.__initialized = true;
+      return Backbone.Model.prototype.initialize.call(this, options);
+    },
+
+    /**
+     * Set a value on the model
+     *
+     * @param {object|string} key
+     *   The key to set a value for.
+     * @param {*} val
+     *   The value to set.
+     * @param {object} [options]
+     *   Options for the model.
+     *
+     * @return {*}
+     *   The result of `Backbone.Model.prototype.set` with the specified
+     *   parameters.
+     */
+    set(key, val, options) {
+      if (this.__initialized) {
+        // Deal with both the "key", value and {key:value}-style arguments.
+        if (typeof key === 'object') {
+          key.validate = true;
+        }
+        else {
+          if (!options) {
+            options = {};
+          }
+          options.validate = true;
+        }
+      }
+      return Backbone.Model.prototype.set.call(this, key, val, options);
+    },
+
+  });
+}(Drupal, Backbone));