Screen Composition

This page maps the source-declared Novusoft header and table composition surfaces. It covers shared backend headers, the PPMP summary header, and reusable table views; framework, font, PDF, and feature-specific template implementations are outside this surface.

[!WARNING] These declarations do not establish runtime inclusion, successful rendering, or deployment reachability. imspr/novusoft/views/backend/table.php contains an empty <tbody>, so that view does not define row markup. The CGB view directly indexes split plan_qty entries and dynamic earmark month properties; its composition does not establish validation or missing-data handling.

Header surfaces

[
    {
        "title": "Backend shell — `imspr/novusoft/views/backend/header.php`",
        "body": "The logo links to `BASEURL`, uses `DEFAULTLOGO` at height `35`, and sets `PROJECTNAME` as its alternative text.\n\nThe mobile sidebar control has the `visible-xs` and `toggle-sidebar-left` classes. Its source attributes target `html`, apply `sidebar-left-opened`, and fire the `sidebar-left-opened` event.\n\nThe user box binds **$session->full_name** and **$session->username** to lock-screen data attributes. It displays **$session->full_name**, **$session->brgy**, and **$session->position**.\n\nThe account menu includes a Change Password link whose `data-main-id` carries **$session->user_id_hash**, plus a Sign out link at `auth/sign-out`."
    },
    {
        "title": "Backend page header — `imspr/novusoft/views/backend/content/header.php`",
        "body": "The page header uses **$module->title** for its `h2`. When **$module->full_width** is truthy, it adds the `zero-left` class.\n\nThe breadcrumb list starts with a dashboard home link at `BASEURL/dashboard`. When **$breadgrams** is supplied, the source iterates through it and uses each **$BG['label']** as a breadcrumb entry.\n\nA `sidebar-right-toggle` anchor is configured with `data-open=\"sidebar-right\"`."
    },
    {
        "title": "PPMP summary header — `imspr/novusoft/include/view-ppmp/view/header.php`",
        "body": "The PPMP summary is a table with the columns `PPMP`, `Account`, and `Mode of Procurement`. Their values come from **$ppmp_name**, **$account**, and **$modepro**, respectively."
    }
]

Table surfaces

[
    {
        "title": "Backend data table — `imspr/novusoft/views/backend/table.php`",
        "body": "The table uses `tag_id` for its `id` and exposes the following metadata bindings: `data-table-tag-id` from **$tag_id**, `data-panel-id` from **$panel_tag_id**, `data-url` from **$url**, and `data-table-id` from **$hash['table_id']**.\n\nIts fixed headers are `ID` and `Special`. An `Action` header is included only when **$action** is not an empty string.\n\nThe source iterates over **$cols**, uses each column's **$C->size** and **$C->label**, and conditionally adds a text input with the `search-datatables` class when **$C->search** is truthy. The input carries the panel identifier and a column index.\n\nThe declared `<tbody>` is empty; row markup is not defined by this view."
    },
    {
        "title": "Generic table — `imspr/novusoft/views/table.php`",
        "body": "The table is nested in a `panel panel-default` container, a `table-responsive` container, and a `dataTable_wrapper` element.\n\nThe table uses `table-striped`, `table-bordered`, and `table-hover`, takes its `id` from **$id**, and applies an inline font size of `1.0rem`.\n\nThe source iterates over **$header**. Each **$H['label']** is placed in a centered `th` together with **$H['style']**.\n\nFor each entry in **$record**, the source assigns the row's class from **$R['class']**, iterates over **$R['row']**, and renders each cell using **$RR['class']** and **$RR['value']**."
    },
    {
        "title": "CGB monthly table — `imspr/novusoft/include/cgb/view/table.php`",
        "body": "The view declares a responsive table with the classes `table table-bordered table-striped data-table-list no-footer`. Its fixed columns are `Item Code`, `Description`, `Account Desc`, `Unit`, and `Unit Price`.\n\nFor every entry in **$month**, the header adds a month group with three columns: `Budget`, `Earmark`, and `Balance`.\n\nFor each result row in **$results** and each month, the source splits **$R['plan_qty']** on semicolons. It calculates **$budget** as the indexed plan quantity multiplied by **$R['unit_price_catalog']**. When **$earmarkitem[$R['item_code']]** exists, **$earmark** uses its dynamic month property multiplied by the catalog unit price; otherwise, **$earmark** is zero. **$variance** is **$budget** minus **$earmark**.\n\nThe item fields, unit price, budget, earmark, and variance are output from the row. Numeric values are formatted with two decimal places."
    }
]

Updated