From 119900337ddeb32df6fe9e2074964014d4988f81 Mon Sep 17 00:00:00 2001 From: Tobias Johansson Date: Fri, 29 Mar 2019 14:42:33 +0100 Subject: [PATCH] Mark as deprecated an recommend vue instead --- .../js/es6/common/templates/DEPRECATED.md | 2 ++ .../common/templates/component/Component.js | 27 ++++++++++++++++++- .../component/ComponentCreatorInterface.js | 17 +++++++----- .../js/es6/common/templates/nodes/Assets.js | 4 +++ .../js/es6/common/templates/nodes/Nodes.js | 8 ++++-- .../es6/common/templates/nodes/NodesBase.js | 3 +++ .../js/es6/common/templates/nodes/Posts.js | 4 +++ .../js/es6/common/templates/users/Users.js | 4 +++ 8 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 src/scripts/js/es6/common/templates/DEPRECATED.md diff --git a/src/scripts/js/es6/common/templates/DEPRECATED.md b/src/scripts/js/es6/common/templates/DEPRECATED.md new file mode 100644 index 00000000..ae90e35f --- /dev/null +++ b/src/scripts/js/es6/common/templates/DEPRECATED.md @@ -0,0 +1,2 @@ +This module is used to render nodes/users dynamically. It was written before we introduced vue.js into the project. +Current best practice is to use vue for this type of work. diff --git a/src/scripts/js/es6/common/templates/component/Component.js b/src/scripts/js/es6/common/templates/component/Component.js index 8b217d2f..1463fe96 100644 --- a/src/scripts/js/es6/common/templates/component/Component.js +++ b/src/scripts/js/es6/common/templates/component/Component.js @@ -2,25 +2,50 @@ import { ComponentCreatorInterface } from './ComponentCreatorInterface' const REGISTERED_CREATORS = [] +/** + * Create a jQuery renderable element from a mongo document using registered creators. + * @deprecated use vue instead + */ export class Component extends ComponentCreatorInterface { + /** + * + * @param {Object} doc + * @returns {$element} + */ static create$listItem(doc) { let creator = Component.getCreator(doc); return creator.create$listItem(doc); } + /** + * @param {Object} doc + * @returns {$element} + */ static create$item(doc) { let creator = Component.getCreator(doc); return creator.create$item(doc); } + /** + * @param {Object} candidate + * @returns {Boolean} + */ static canCreate(candidate) { return !!Component.getCreator(candidate); } + /** + * Register component creator to handle a node type + * @param {ComponentCreatorInterface} creator + */ static regiseterCreator(creator) { REGISTERED_CREATORS.push(creator); } + /** + * @param {Object} doc + * @returns {ComponentCreatorInterface} + */ static getCreator(doc) { if (doc) { for (let candidate of REGISTERED_CREATORS) { @@ -31,4 +56,4 @@ export class Component extends ComponentCreatorInterface { } throw 'Can not create component using: ' + JSON.stringify(doc); } -} \ No newline at end of file +} diff --git a/src/scripts/js/es6/common/templates/component/ComponentCreatorInterface.js b/src/scripts/js/es6/common/templates/component/ComponentCreatorInterface.js index b642888e..b9d0aa81 100644 --- a/src/scripts/js/es6/common/templates/component/ComponentCreatorInterface.js +++ b/src/scripts/js/es6/common/templates/component/ComponentCreatorInterface.js @@ -1,6 +1,10 @@ +/** + * @deprecated use vue instead + */ export class ComponentCreatorInterface { /** - * @param {JSON} doc + * Create a $element to render document in a list + * @param {Object} doc * @returns {$element} */ static create$listItem(doc) { @@ -8,8 +12,8 @@ export class ComponentCreatorInterface { } /** - * - * @param {JSON} doc + * Create a $element to render the full doc + * @param {Object} doc * @returns {$element} */ static create$item(doc) { @@ -17,11 +21,10 @@ export class ComponentCreatorInterface { } /** - * - * @param {JSON} candidate - * @returns {boolean} + * @param {Object} candidate + * @returns {boolean} */ static canCreate(candidate) { throw 'Not Implemented'; } -} \ No newline at end of file +} diff --git a/src/scripts/js/es6/common/templates/nodes/Assets.js b/src/scripts/js/es6/common/templates/nodes/Assets.js index 17c6d808..1cc1c75a 100644 --- a/src/scripts/js/es6/common/templates/nodes/Assets.js +++ b/src/scripts/js/es6/common/templates/nodes/Assets.js @@ -1,6 +1,10 @@ import { NodesBase } from "./NodesBase"; import { thenLoadVideoProgress } from '../utils'; +/** + * Create $element from a node of type asset + * @deprecated use vue instead + */ export class Assets extends NodesBase{ static create$listItem(node) { var markIfPublic = true; diff --git a/src/scripts/js/es6/common/templates/nodes/Nodes.js b/src/scripts/js/es6/common/templates/nodes/Nodes.js index 170c2a9d..ad750ca8 100644 --- a/src/scripts/js/es6/common/templates/nodes/Nodes.js +++ b/src/scripts/js/es6/common/templates/nodes/Nodes.js @@ -3,6 +3,10 @@ import { ComponentCreatorInterface } from '../component/ComponentCreatorInterfac let CREATE_NODE_ITEM_MAP = {} +/** + * Create $element from node object + * @deprecated use vue instead + */ export class Nodes extends ComponentCreatorInterface { /** * Creates a small list item out of a node document @@ -37,7 +41,7 @@ export class Nodes extends ComponentCreatorInterface { let $link = $('') .addClass('btn btn-outline-primary px-5 mb-auto btn-block js-load-next') .attr('href', 'javascript:void(0);') - .click((e)=> { + .click((e)=> { let $target = $(e.target); $target.replaceWith(Nodes.createListOf$nodeItems(nodesLeftToRender, loadNext, loadNext)); }) @@ -60,4 +64,4 @@ export class Nodes extends ComponentCreatorInterface { static registerTemplate(node_type, klass) { CREATE_NODE_ITEM_MAP[node_type] = klass; } -} \ No newline at end of file +} diff --git a/src/scripts/js/es6/common/templates/nodes/NodesBase.js b/src/scripts/js/es6/common/templates/nodes/NodesBase.js index 53789c12..31473275 100644 --- a/src/scripts/js/es6/common/templates/nodes/NodesBase.js +++ b/src/scripts/js/es6/common/templates/nodes/NodesBase.js @@ -1,6 +1,9 @@ import { prettyDate } from '../../utils/prettydate'; import { ComponentCreatorInterface } from '../component/ComponentCreatorInterface' +/** + * @deprecated use vue instead + */ export class NodesBase extends ComponentCreatorInterface { static create$listItem(node) { let nid = (node._id || node.objectID); // To support both mongo and elastic nodes diff --git a/src/scripts/js/es6/common/templates/nodes/Posts.js b/src/scripts/js/es6/common/templates/nodes/Posts.js index 727966d0..f60c8aba 100644 --- a/src/scripts/js/es6/common/templates/nodes/Posts.js +++ b/src/scripts/js/es6/common/templates/nodes/Posts.js @@ -1,5 +1,9 @@ import { NodesBase } from "./NodesBase"; +/** + * Create $element from a node of type post + * @deprecated use vue instead + */ export class Posts extends NodesBase { static create$item(post) { let content = []; diff --git a/src/scripts/js/es6/common/templates/users/Users.js b/src/scripts/js/es6/common/templates/users/Users.js index b938f823..f2e7d80e 100644 --- a/src/scripts/js/es6/common/templates/users/Users.js +++ b/src/scripts/js/es6/common/templates/users/Users.js @@ -1,5 +1,9 @@ import { ComponentCreatorInterface } from '../component/ComponentCreatorInterface' +/** + * Create $elements from user objects + * @deprecated use vue instead + */ export class Users extends ComponentCreatorInterface { static create$listItem(userDoc) { let roles = userDoc.roles || [];