Wiki

Clone wiki

telstar-server / frames

Frames in More Detail

Please note TELSTAR as an application is still under development and subject to change.

Basic Frame

Frames are defined in JSON. The simplest frame that can be viewed on TELSTAR would be as follows.

{ "pid": { "page-no": 101, "frame-id": "a" }, "visible": true }

This frame, if posted to the TELSTAR API would result in a simple welcome message being displayed when viewed on TELSTAR using an appropriate videotex client.

To hide the frame from view, simply set the visible key to false.

Adding Content with the Edit.tf editor

There are several ways to add content to a page. One of the easiest is to create the page in an editor such as http://edit.tf.

The JSON file would look something like the one showm below. Note that the content type is set to editf and the content data contains the edit.tf url.

{
    "pid": {
        "page-no": 101,
        "frame-id": "a"
    },
    "visible": true,
    "frame-type": "information",
    "content": {
        "data": "http://edit.tf/#0:QIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQICn_OmTJkSJApUqVKlSpUlcHApiTJkyZEiRIkyZMmTIkSJFmKf3JX58____RBg-fPnzog__2iBBo-fNX9qgQcOHDh8-fGiAp_zFf______2v7_____7X___oEGr__Qa0ur_________QoCn9ywK__6D__a__7dH__tf___1QIv_9AiQIkaPX_bo0aMpiKf_-Yr__oP_9r__tUH_-1____9og__yjnz5cldX9qUc-fPkp__uSv_-g__2v_-1Qf_7X__aIv____KZv_dIV__2pTN___yn__mK___z__a____5__tf_9qgVf__8o5_vWJX__alHP___Kf_7kr____6dBr_____-h__2qBBr__ymbPnSFf69CUzf__8pnz5iq9ejRoECBWvXr0KBGjQYOHBHz4cECBAgwcCily7__yqDhw4ePnzogQeP7RAg0fPiBB___9X___QYPH___-sCmb__KoP________3B__tUCDV__tUH___1f36XB-_______KOf_8qgRo__9B__v9X___QINX___Qav__B8-NNX_-jR___8pm__ymYrq______h_odX9qg1f___7q__9X_-h1f_5TBgwYM37__KOSur-_Ro0Pr_8_f_qDV_b___r__1f_6D___lFKlSpUu__8pmK_v7VAgwf______tNX9r______V__oP__-gQaPnwpm__yqDB__tUCD__QIEG___1f2qL____9X_-g____z5-__ymb__KoNX_-lQKl6VAgQav6_V__oNf___1f2qBX_____9-hKOf_8qgVJ0JRw4cOPLkqiQoESNGgVL0aFEjQoECJGjRoymDNm__ymTJkzZv3_____-3bt27du3Thw8efPnz58-fPnz58-fP___QIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECA",
        "type": "edit.tf"
    }    
}

Adding Content using Markup

Content can be added directly to the JSON file using a very simple markup. For example consider the following frame definition.

{
    "pid": {
        "page-no": 101,
        "frame-id": "a"
    },
    "visible": true,
    "frame-type": "information",
    "title": {
        "data": "[D]Welcome\r\n\r\n",
        "type": "markup"
    },
    "content": {
        "data": "[Y]Hello[C]Telstar[M]World",
        "type": "markup"
    }
}

This frame uses markup in the title and the content, The title is specified as [D]ouble height and the three words used in the content are coloured yellow, cyan and majenta respectively.

The markup definitions are shown below.

[R] alpha_red
[G] alpha_green
[Y] alpha_yellow
[B] alpha_blue
[M] alpha_magenta
[C] alpha_cyan
[W] alpha_white
[F] flash
[S] steady
[N] normal_height
[D] double_height

Markup mode also allows paragraphs to be entered as a list for example the following frome would outpout the three words Hello Telstar World on three separate lines.

{
    "pid": {
        "page-no": 101,
        "frame-id": "a"
    },
    "visible": true,
    "frame-type": "information",
    "title": {
        "data": [
        "[Y]Hello",
        "[C]Telstar",
        "[M]World"
        ],
        "type": "markup"
    },
    "content": {
        "data": "[Y]Hello[C]Telstar[M]World",
        "type": "markup"
    }
}

Raw Content

If the content type or title type is specified as raw, the data will be presented within TELSTAR without modification.

For example the previous frame in raw format would be defined as follows.

{
    "pid": {
        "page-no": 101,
        "frame-id": "a"
    },
    "visible": true,
    "title": {
        "data": "\u001bMWelcome\r\n\r\n",
        "type": "raw"
    },
    "content": {
        "data": "\u001bCHello\u001bFTelstar\u001bEWorld",
        "type": "raw"
    }
}

The unicode values specified for colour and double height are the values as specified in the videotex specification.

FTSE_small.png

Full JSON Frame Description

The frame below is a standard information page from the TELSTAR system shown in its JSON format. It represents the first frame of page 899. Taking this page as an example, a full description of the fields and their meaning is decribed below.

{
  "pid": {
    "page-no": 899,
    "frame-id": "a"
  },
  "visible": true,
  "header-text": "[Y]MICRONETn 800 (C)",
  "cache-id": "d4f71dbd-5cc0-4214-912e-e0340696291d",
  "frame-type": "information",
  "content": {
    "data": "http://edit.tf/#0:QIECBAgQIECBAgQIECBAgQIECBAgQIECBAgcOXOJAgQIECAIdDjUEaDTqII9WTEioKk9BNkw6U-dFqbkFOLSrSYcWmgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgAnQbFBNgx4NqTOioECBAgQIEBwogQIECBAgQIECBAgQIECAGgQKg9fRh6J-aCdl7oECBAgQICjdGjRo0aNGjRo0aNGjR6waBAqDzdOPlvQTsvfmgQIECBAgKNQdnf1QY8O5Byy4cegpqBoECoPQ5b8nXH0QUsvbTl780CAo1B9NGnmgz9dOTKg6bymoGgQKg8_poy8kEbLh6deWXmgQICjUHNkw6U-dFqbkDhgwKakCBAgQIECBAgQIECBAgQIECBAcKNQeLyg15fOndnQOHLkpqAnQbJBUizItOfGqV4NKKgQIEBwp14cOHDhw4cOHDhw4cOHoGgQKg8KFDQU9-bp3w8sqBAgQIECBAgQIECBAgQIECBAgQIAaBAqDwdnTDp5IHDhgwQIECBAgQIECBAgQIECBAgQIECBAgBoECoPP6aMvJBT35unfDyyoFEjLs4IJ2XLky5EKlAgQIECAGgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIAJ0GzQSIsygggzoiCnVoUJ9KogCIECBAgQIECBAgQIECBAgBoECoPNkw6U-dFqbkGHdkQVIsynUg0kCBAgQIECBAgQIECAGgQKg9TLsy89-bp3w8sqBAgQIECBAgQIECBAgQIECBAgQIAaBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgAnQbRBUiw5E6TDgzEEGlUkw5kWmgQIECBAgQIECBAgQIECAGgQKg9Dll59MuxYgm6cfLfuy9EGHdkQVMuzn0w8kCBAgQIAaBAqDyMPLJ3w8sqDDuyIIe_bt67tOPD00793NAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECA",
    "type": "edit.tf"
  },
  "title": {
    "data": "",
    "type": ""
  },
  "routing-table": [
    8000,
    8001,
    8002,
    8003,
    8004,
    8005,
    8006,
    8007,
    8008,
    8009,
    800
  ],
  "cursor": false,
  "connection": {
    "address": "",
    "mode": "",
    "port": 0
  },
  "author-id": "editf-frame-generator",
  "response-fields": [],
  "navmsg-forecolour": "yellow",
  "navmsg-backcolour": "blue",
  "navmsg-highlight": "white",
}

pid

page_no, frame_id

visible

  "visible": true,

header-text

  "header-text": "[Y]MICRONETn 800 (C)",

cache-id

  "cache-id": "d4f71dbd-5cc0-4214-912e-e0340696291d",

frame-type

The API supports the following frame types initial, mainindex, information, exit, gateway, test, response.

  "frame-type": "information",

initial

This frame type is used on the start page. The start page is specified within the telstar.json config file. The default page number is 99a. Typically only one of these frames would exist within a system.

mainindex

This frame type is used on the main index page. The main index page is specified within the telstar.json config file. The default page number is 0a. Only one of these frames should exist within a system.

information

This frame type is used for all normal content frames.

exit

This frame type is used for an exit page, any number of exit pages can be defined. When an exit page is rendered it will close the connection.

gateway

This page type is used to define a gateway page and is used in conjunction with the connection element (see below).

test

This page type indicates a test page and prevents navigation and system messages from being shown. this is typically used for frames that need to use the whole display such as 'test cards' etc.

response

This frame type is used in conjunction with the *response-fields element (see below) for response frames. See Response Frames.

content

Description to be added...

  "content":

title

Description to be added...

  "title": {
    "data": "",
    "type": ""
  },

routing-table

Description to be added...

  "routing-table": [

    8000,
    8001,
    8002,
    8003,
    8004,
    8005,
    8006,
    8007,
    8008,
    8009,
    800
  ],

cursor

This element determines whether a cursor is shown on the page. Typically a cursor would only be shown on response frames.

  "cursor": false,

connection

This elements specifies the connection object used for gateway pages.

  "connection": {
    "address": "",
    "mode": "",
    "port": 0
  },

address and port

This represent the endpoint of the system being accessed.

mode

This determines how the system is accessed, the options are.

viewdata
full_duplex
full_duplex_no_echo

author-id

This is an optional field that can be used to indicate eith the author of the page or other source.

  "author-id": "editf-frame-generator",

response-fields

These fields relate to the fields used in a response-frame, a response frame is a frame where a user is asked to enter information. The Telstar system weather page is one such frame where the user is asked to enter a city.

For information frames the value can be left blank as shown below or simply ommited altogether.

 "response-fields": [],

The following JSON snippet is taken from the TELSTAR system repsonse frame and shows a single field.

"response-fields": [
  {
    "label": "City/Town : ",
    "vpos": 8,
    "hpos": 4,
    "required": true,
    "length": 16,
    "type": "alpha",
    "auto_submit": true,
    "value": "",
    "valid": false,
    "password": false
  }
]

label

The label element will be displayed alongside the data entry area.

vpos, hpos

These specify where the field is displayed on the page.

required

If set to true, it will not be possible to continue past the page until some data is entered.

length

Refers to the length of the data field. See auto_submit below

type

This element defines what characters can be entered into the field the options are numeric, alpha and alphanumeric.

auto_submit

If, when enter data into the field, a user reaches the length (see above), the page will auto submit if this value is set to true.

value

The value will contain the entered data when the response frame is processed. See plugins.

valid

password

Set to tru will ensure that the entered data is not echoed back to the user. Asterisks are sent instead.

navmsg-forecolour, navmsg-backcolour and navmsg-highlight

These elements represent the colours of the navigation message on ro 23 of the frame, these are optional values and will default to Yellow, Blue and White respectively.

"navmsg-forecolour": "yellow",
"navmsg-backcolour": "blue",
"navmsg-highlight": "white",

Updated