UNPKG

fridge_api

Version:
135 lines (108 loc) 3.66 kB
"use strict"; exports.__esModule = true; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Model = (function () { function Model(data) { _classCallCheck(this, Model); this.raw = data; this._parts = {}; this.attrs = this.parse(); } Model.newFromType = function newFromType(type) { var data = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var parts = type.parts || []; return new Model(_extends({ active: true, site_id: type.site_id, document_definition_id: type.id, content: parts.map(function (partDefinition) { return { part_definition_id: partDefinition.id, part: partDefinition }; }) }, data)); }; Model.prototype.commit = function commit() { var _this = this; var _loop = function (key) { var value = _this.raw[key]; if (Array.isArray(value)) { if (_this._isPart(value)) { value.forEach(function (part, i) { var partName = _this._partName(part); if (_this._partValue(partName) !== _this._parts[partName]) { _this.raw[key][i].value = _this._parts[partName]; } }); return "continue"; } } if (value !== _this.attrs[key]) { _this.raw[key] = _this.attrs[key]; } }; for (var key in this.raw) { var _ret = _loop(key); if (_ret === "continue") continue; } return this.raw; }; Model.prototype.parse = function parse() { var _this2 = this; var hash = {}; for (var key in this.raw) { var value = this.raw[key]; if (Array.isArray(value)) { if (this._isPart(value)) { value.forEach(function (part) { _this2._parts[_this2._partName(part)] = _this2._partValue(part); }); } else if (this._isPartDefinition(value)) { value.forEach(function (partDefinition) { _this2._parts[_this2._partName(partDefinition)] = partDefinition; }); } else { hash[key] = value.map(function (v) { return v && v.id ? new Model(v) : v; }); continue; } } hash[key] = value; } var _loop2 = function (key) { Object.defineProperty(_this2, key, { get: function get() { return key in this.attrs ? this.attrs[key] : undefined; }, set: function set(value) { this.attrs[key] = value; } }); }; for (var key in hash) { _loop2(key); } return hash; }; Model.prototype.get = function get(key) { return key in this._parts ? this._parts[key] : undefined; }; Model.prototype.set = function set(key, value) { this._parts[key] = value; }; Model.prototype._isPart = function _isPart(val) { return val && val[0] && val[0].part_definition_id; }; Model.prototype._isPartDefinition = function _isPartDefinition(val) { return val[0] && val[0].definition_id; }; Model.prototype._partName = function _partName(part) { return part.part ? part.part.name : part.name; }; Model.prototype._partValue = function _partValue(part) { return part.value; }; return Model; })(); exports["default"] = Model; module.exports = exports["default"];