From 889dd234c7c12a4143a1ba02c024e3adc8e4307c Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Wed, 2 Nov 2022 08:53:30 +0400 Subject: [PATCH] Move JsonGenerator to TS --- src/code_manager/model/JsonGenerator.js | 38 ------------------------ src/code_manager/model/JsonGenerator.ts | 39 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 38 deletions(-) delete mode 100644 src/code_manager/model/JsonGenerator.js create mode 100644 src/code_manager/model/JsonGenerator.ts diff --git a/src/code_manager/model/JsonGenerator.js b/src/code_manager/model/JsonGenerator.js deleted file mode 100644 index 302e0d7ba..000000000 --- a/src/code_manager/model/JsonGenerator.js +++ /dev/null @@ -1,38 +0,0 @@ -import { each } from 'underscore'; -import { Model, Collection } from '../../common'; - -export default class JsonGenerator extends Model { - build(model) { - var json = model.toJSON(); - this.beforeEach(json); - - each( - json, - function (v, attr) { - var obj = json[attr]; - if (obj instanceof Model) { - json[attr] = this.build(obj); - } else if (obj instanceof Collection) { - var coll = obj; - json[attr] = []; - if (coll.length) { - coll.each(function (el, index) { - json[attr][index] = this.build(el); - }, this); - } - } - }, - this - ); - - return json; - } - - /** - * Execute on each object - * @param {Object} obj - */ - beforeEach(obj) { - delete obj.status; - } -} diff --git a/src/code_manager/model/JsonGenerator.ts b/src/code_manager/model/JsonGenerator.ts new file mode 100644 index 000000000..aba8a7c9e --- /dev/null +++ b/src/code_manager/model/JsonGenerator.ts @@ -0,0 +1,39 @@ +import { each } from 'underscore'; +import { Model, Collection } from '../../common'; +import Component from '../../dom_components/model/Component'; + +type ComponentProps = Record; + +export default class JsonGenerator extends Model { + build(model: Component) { + // @ts-ignore + const json = model.toJSON() as ComponentProps; + this.beforeEach(json); + + each(json, (v, attr) => { + const obj = json[attr]; + if (obj instanceof Model) { + // @ts-ignore + json[attr] = this.build(obj); + } else if (obj instanceof Collection) { + const coll = obj; + json[attr] = []; + if (coll.length) { + coll.forEach((el, index) => { + json[attr][index] = this.build(el); + }); + } + } + }); + + return json; + } + + /** + * Execute on each object + * @param {Object} obj + */ + beforeEach(obj: ComponentProps) { + delete obj.status; + } +}