ui/forms/version/version.directive.js

const templateUrl = require('../form.html');

/**
 * @module avVersion
 * @memberof app.ui
 * @restrict E
 * @description
 *
 * The `avVersion` directive for the version form
 *
 */
angular
    .module('app.ui')
    .directive('avVersion', avVersion);

/**
 * `avVersion` directive body.
 *
 * @function avVersion
 * @return {object} directive body
 */
function avVersion() {
    const directive = {
        restrict: 'E',
        templateUrl,
        scope: { },
        controller: Controller,
        controllerAs: 'self',
        bindToController: true,
        link: (scope, element, attrs) => {
            scope.$on('sf-render-finished', (scope, element) => {
            });
        }
    };

    return directive;
}

function Controller($scope, $translate, events, modelManager, stateManager, formService) {
    'ngInject';
    const self = this;
    self.modelName = 'version';
    self.sectionName = $translate.instant('app.section.version');
    self.formService = formService;

    // when schema is loaded or create new config is hit, initialize the schema, form and model
    events.$on(events.avSchemaUpdate, () => {
        $scope.model = modelManager.getModel(self.modelName);
        init();
    });

    // when user load a config file, set form and model
    events.$on(events.avLoadModel, () => {
        modelManager.updateModel($scope, self.modelName);
        init();
    });

    // when user change language, reset schema and form
    events.$on(events.avSwitchLanguage, () => {
        self.sectionName = $translate.instant('app.section.version');
        init();
    });

    function init() {
        $scope.schema = modelManager.getSchema(self.modelName);

        $scope.form = angular.copy($scope.form);
        $scope.form = setForm();
    }

    events.$on(events.avValidateForm, () => {
        $scope.$broadcast('schemaFormValidate');
        // There's no tab just the form
        stateManager.validateModel(self.modelName, $scope.activeForm, $scope.form, $scope.model);
    });

    function setForm() {
        return [{ 'key': 'version' }];
    }
}