@sequenia/describing-model

0.0.2 • Public • Published

@sequenia/describing-model

Simple way for define you data class and describe that fields, display name, way for render html-forms and tables

NPM JavaScript Style Guide

Install

npm install --save @sequenia/describing-model

Usage

// some_model.js
import DescribingModel from '@sequenia/describing-model'

class SomeModel extends DescribingModel {

  displayName(item) {
    return `${item.type} - ${item.name}`;
  }

  listCells(items = undefined, {} = {}) {
    return [
      {
        name: "type",
        displayName: "Model's type",
        type: "enum",
        data: [
          {
            key: "simple",
            value: "Simple"
          },
          {
            key: "extended",
            value: "Extended"
          },
          {
            key: "user_defined",
            value: "User defined"
          }
        ]
      },
      {
        name: "name",
        displayName: "Name",
        type: "text",
        sortKey: "name"
      }
    ]
  }

  formFields(item = undefined, {} = {}) {
    return [
      {
        name: "type",
        displayName: "Model's type",
        type: "enum",
        data: [
          {
            key: "simple",
            value: "Simple"
          },
          {
            key: "extended",
            value: "Extended"
          },
          {
            key: "user_defined",
            value: "User defined"
          }
        ],
        required: true
      },
      {
        name: "name",
        displayName: "Name",
        type: "text"
      }
    ]
  }
}

const instance = new SomeModel();
export { instance as SomeModel };

// some_other_file.js

import { SomeModel } from "path/to/some_model.js"

console.log(SomeModel.displayName(someItem));
console.log(SomeModel.listCells(displayItems));

License

MIT © sequenia

Readme

Keywords

none

Package Sidebar

Install

npm i @sequenia/describing-model

Weekly Downloads

1

Version

0.0.2

License

MIT

Unpacked Size

14.9 kB

Total Files

7

Last publish

Collaborators

  • petr-sequenia
  • simon_merkuloff
  • semen_kologrivov
  • sequenia_llc