Demo JsonForms / Comments

Comments

From Wikisphere
Jump to navigation Jump to search
Commentsobject
commentsarray(2)
    Item 1object
    name
    name 1
    content
    content 1
    repliesarray(1)
      Item 1object
      name
      name 1b
      content
      content 1b
      repliesarray(0)
      Item 2object
      name
      name 2
      content
      content 2
      repliesarray(0)

      This page demonstrates the following features:

      • compounded schemas: the JsonSchema:Comment is a reference within JsonSchema:Comments
      • use of nested template using children (e.g. Template:Comments )
      • edit_schema and edit_path parameters to add/edit items at the current level of the tree (see Template:Comments.comments)
      • use of parameter depth to add margin to the content (see Template:Comments.comments.Item.replies)
      • use of property x-render-template to specify a fixed template name for the related subschema. This is necessary for nested items otherwise the processor would require a template for each level (see JsonSchema:Comment)
      • use of allOf to override the x-hidden property in the replies subschema from the parent schema. This allows the base schema to edit all data, while the popup forms to keep the replies array hidden. (see JsonSchema:Comments and the notice for more information)



      Schemas:


      Templates:


      Parser function:

      {{#jsonformsrender:{{FULLPAGENAME}}  
      |slot=jsonforms-data      
      }} 
      

      Template: Comments

      Template:Comments.comments

      Comments

      Template:Comments.comments.Item

      Name: name 1

      Message: content 1

      Template:Comments.comments.Item.replies

      Replies

      Template:Comments.comments.Item

      Name: name 1b

      Message: content 1b

      Template:Comments.comments.Item.replies

      Replies

      loading form


      Params
      {
          "key": "replies",
          "properties": "",
          "count": 0,
          "hasChildren": 0,
          "path": "comments.0.replies.0.replies",
          "depth": 5,
          "templateName": "Comments.comments.Item.replies",
          "data": []
      }
      Params
      {
          "key": 0,
          "properties": "name, content, createdAt, replies",
          "count": 4,
          "hasChildren": 4,
          "path": "comments.0.replies.0",
          "depth": 4,
          "templateName": "Template:Comments.comments.Item",
          "data": {
              "name": "name 1b",
              "content": "content 1b",
              "createdAt": "20260807131010",
              "replies": []
          },
          "name": "name 1b",
          "content": "content 1b",
          "createdAt": "20260807131010",
          "replies": "<subitem>"
      }
      loading form


      Params
      {
          "key": "replies",
          "properties": "0",
          "count": 1,
          "hasChildren": 1,
          "path": "comments.0.replies",
          "depth": 3,
          "templateName": "Comments.comments.Item.replies",
          "data": [
              {
                  "name": "name 1b",
                  "content": "content 1b",
                  "createdAt": "20260807131010",
                  "replies": []
              }
          ],
          "0": "<subitem>"
      }
      Params
      {
          "key": 0,
          "properties": "name, content, createdAt, replies",
          "count": 4,
          "hasChildren": 4,
          "path": "comments.0",
          "depth": 2,
          "templateName": "Template:Comments.comments.Item",
          "data": {
              "name": "name 1",
              "content": "content 1",
              "createdAt": "20260807130339",
              "replies": [
                  {
                      "name": "name 1b",
                      "content": "content 1b",
                      "createdAt": "20260807131010",
                      "replies": []
                  }
              ]
          },
          "name": "name 1",
          "content": "content 1",
          "createdAt": "20260807130339",
          "replies": "<subitem>"
      }

      Template:Comments.comments.Item

      Name: name 2

      Message: content 2

      Template:Comments.comments.Item.replies

      Replies

      loading form


      Params
      {
          "key": "replies",
          "properties": "",
          "count": 0,
          "hasChildren": 0,
          "path": "comments.1.replies",
          "depth": 3,
          "templateName": "Comments.comments.Item.replies",
          "data": []
      }
      Params
      {
          "key": 1,
          "properties": "name, content, createdAt, replies",
          "count": 4,
          "hasChildren": 4,
          "path": "comments.1",
          "depth": 2,
          "templateName": "Template:Comments.comments.Item",
          "data": {
              "name": "name 2",
              "content": "content 2",
              "createdAt": "20260807130930",
              "replies": []
          },
          "name": "name 2",
          "content": "content 2",
          "createdAt": "20260807130930",
          "replies": "<subitem>"
      }


      loading form
      Params
      {
          "key": "comments",
          "properties": "0, 1",
          "count": 2,
          "hasChildren": 2,
          "path": "comments",
          "depth": 1,
          "templateName": "Template:Comments.comments",
          "data": [
              {
                  "name": "name 1",
                  "content": "content 1",
                  "createdAt": "20260807130339",
                  "replies": [
                      {
                          "name": "name 1b",
                          "content": "content 1b",
                          "createdAt": "20260807131010",
                          "replies": []
                      }
                  ]
              },
              {
                  "name": "name 2",
                  "content": "content 2",
                  "createdAt": "20260807130930",
                  "replies": []
              }
          ],
          "0": "<subitem>",
          "1": "<subitem>"
      }
      Params
      {
          "key": "",
          "properties": "comments",
          "count": 1,
          "hasChildren": 1,
          "path": "",
          "depth": 0,
          "templateName": "Template:Comments",
          "data": {
              "comments": [
                  {
                      "name": "name 1",
                      "content": "content 1",
                      "createdAt": "20260807130339",
                      "replies": [
                          {
                              "name": "name 1b",
                              "content": "content 1b",
                              "createdAt": "20260807131010",
                              "replies": []
                          }
                      ]
                  },
                  {
                      "name": "name 2",
                      "content": "content 2",
                      "createdAt": "20260807130930",
                      "replies": []
                  }
              ]
          },
          "comments": "<subitem>"
      }


      The following form is rendered with this parser function:

      {{#jsonforms:Default
      |schema=Comments
      |editor_options.debug=true
      |view=inline
      |title=comments
      |edit={{FULLPAGENAME}}
      |width=800px
      }}
      

      (it's not necessary for the purpose of this demo, and the article's data can usually be edited using the action "Edit schema")


      loading form


      See also