Skip to content
Scott Reeves edited this page Feb 23, 2021 · 2 revisions

Each of the files in xHV serve particular purposes and it's important to understand the directory layouts.

Html, CSS and JavaScript (Views, Components)

App.accdb

This is the entry point to the app and contains all the VBA modules and the App form that make up the app.

app\config\HandleViewErr.config.xml

All the custom error codes for the framework are defined here.

app\css\handleview.css

Custom global CSS classes for xhv. Gets imported by styles.css.

app\css\styles.css

Main stylesheet. Imports other stylesheets.

app\host\AppHost.html

This is the HTML wrapper for the entire app. Here is where you would define global JavaScript and CSS that will be used throughout the entire app.

app\host\app.host.js

Loaded in AppHost.html. This is a global JS file. Load functions here that will be in the global namespace

app\images

Directory for static images

app\js\handleview\xhv-required.js

Loaded in AppHost.html. This file connects DOM elements to event handlers.

app\js\handleview\xhv-helpers.js

Loaded in AppHost.html. Misc. xhv helper functions.

app\js\handleview\xhv-init.js

Disables browser right-click menu

app\views\HomeView\home.view.html

First component that gets rendered and inserted into the AppHost.html during the Render phase.

app\views\HomeView\home.view.js

JavaScript specifically for the HomeView.

app\views\Shared folder

Components that can be reused in multiple views should be placed in this folder

app\views\Shared\AppView\app.view.html

Primary View that typically manages the header and footer along with header and side navigation components.

app\views\Shared\BoostrapSubmitButtonView\BootstrapSubmitButton.view.html

This component (view) is how Submit buttons can be intercepted and turned into simple events. Uses Bootstrap for styling.

app\views\Shared\BootrapSubmitButtonView\BootstrapSubmitButton.view.js

This is the logic that validates the form and intercepts the POST action for a Submit button.

app\views\Shared\TopBarView\topBar.view.html

Optional header navigation component

VBA files (Models and Controllers)

AppController.cls

Main Controller that serves as initial logic to bootstrap the App. Implements xhvIController.

BootstrapSubmitButtonController.cls

Controller for the BootstrapSubmitButton Component. Implements xhvIController.

ButtonController.cls

General Controller for a simple Button Component. Implements xhvIController.

Form_App.doccls

This is the single form that hosts the Web Browser control (WB).

HomeController.cls

First application logic route Controller. Implements xhvIController.

JsonConverter.bas

JSON conversion library.

TopBarController.cls

Controller for the top navigation bar Component.

xhv.cls

The main xHV Framework class.

xhvBaseController.cls

Contains the base methods that each component needs. Used in each concrete component class.

xhvCachedComponent.cls

A simple in-memory cache object for rendered components. xHV will draw from here before re-rendering a component if it's available.

xhvComponentFactory.cls

This class is the Factory for building instances of other classes for Dependency Injection.

xhvConfigLogging.bas

This module is used to configure logging services in a centralized place. Eventually, these configuration could be placed in a config file. Think of this module as if it was a config file.

xhvConfigRouter.bas

This module is used to configure all Routes for the application in a centralized place.

xhvConfigServices.bas

Configurations of the services used by the app. Add services we develop for this application in the DI container (xhvDI class)

xhvConfigurator.cls

Provides methods to add configuration in the application. These Configurations will be available in the Global Configuration Dictionary

xhvConstants.bas

This module contains the Global Const for HandleView

xhvDI.cls

HandleView Dependency Injection System

xhvEnum.bas

This module contains the public Enums for HandleView

xhvExceptionManagement.bas

Contains functions to help manage error in HandleView and Application

xhvExceptionManager.cls

Used for custom error (Exception) management

xhvGlobalObjects.bas

Various shortcuts to various Global Objects and Functions in the Framework. These are just use to simplify code and calls to these Objects/Functions

xhvHelpers.bas

Bunch of little functions for trivial tasks.

xhvHtmlHelpers.bas

Framework HTML Helper functions. Can be useful in the rendering of the component.

xhvHtmlTemplatingSyntax.bas

This module contains the type def for the HandleView Syntax of HTML templates

xhvIController.cls

Interface that describes all properties and methods a Controller must implement.

xhvILogger.cls

Interface that describes all properties and methods that a Logger class must implement.

xhvILoggerEnhancement.cls

Interface that describes all properties and methods that a Logger Enhancement class must implement.

xhvInterpolation.cls

Interface that describes all the properties and methods that an Interpolation class must implement.

xhvLog.cls

This class represents the Log Static Class used for logging. It's the main part of the Logging System.

xhvLogEnhancementWithUserContext.cls

This class an enhancement for the Logging Service that return the username of the actual user logged on to the machine.

xhvLoggerConsole.cls

This class represents the Logger for the Console.

xhvLoggerEnhancementFactory.cls

This class is responsible for creating instances of enhancement classes for the HandleView Logger.

xhvLoggerFactory.cls

This class is responsible for creating and initializing Logger instances in the Logging System.

xhvLoggerJson.cls

This class represents the Logger for a JSON text file.

xhvLoggerTextFile.cls

This class represents the Logger for a text file.

xhvNavigationHistory.cls

This class represents the History of navigation made by the Router. It serves for the Back and Forward navigation implementation.

xhvNavigationHistoryNode.cls

This class represents a history node (which is a xhvRoute).

xhvRenderer.cls

This class is used to "pre-render" the Component - Ex: Loading the template. In fact, each Component is responsible for its own rendering in the DOM.

xhvRoute.cls

This class represents a route - Routes are used to navigate in the application.

xhvRouter.cls

This class is used to Navigate through the application.

xhvRouterPort.cls

This class represents a RouterPort - RouterPorts are used to render components in the HTML Document.

xhvService.cls

Represents a Service in the DI system. This is a model class only.

xhvServiceFactory.cls

This class is responsible for creating and initializing services in the DI framework.

xhvStartupApp.bas

Contains Application Startup functions for HandleView Framework.

xhvStartupHost.bas

Contains Host Startup functions for HandleView Framework.

xhvStream.cls

Represents a stream of data as char.

xhvType.bas

This module contains the type def of global type used in the framework.

xhvWinApi.bas

This module allows VBA to call into the Win32 API.

Clone this wiki locally