@sequenia/describing-model

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

Usage no npm install needed!

<script type="module">
  import sequeniaDescribingModel from 'https://cdn.skypack.dev/@sequenia/describing-model';
</script>

README

@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