template: require()

in entity-browser-frontend/app/directive/form-view.js [15:104]


            template: require('../templates/form-view.html'),
            link: function (scope, element) {
                var navigation = navigationService(currentDatabase.get());

                scope.editMode = (scope.entity().id === null || $location.search().edit);
                scope.toggleView = function () {
                    scope.editMode = !scope.editMode;
                };
                scope.cancel = function () {
                    if (scope.editMode && !currentDatabase.get().readonly) {
                        confirmExit(toSearch);
                    } else {
                        navigation.toType(scope.entity().typeId);
                    }
                };
                scope.getMessage = getMessage;

                scope.hasError = function (formName, inputName) {
                    var field = getForm(formName)[inputName];
                    return field && field.$invalid && field.$dirty;
                };
                scope.makeDirty = function (form) {
                    angular.forEach(Object.keys(form), function (key) {
                        var value = form[key];
                        if (value && angular.isFunction(value.$setDirty)) {
                            value.$setDirty(true);
                        }
                    });
                };
                scope.getForm = getForm;
                var cleanUp = scope.$on('$locationChangeStart', function (event, next) {
                        if (scope.editMode && !currentDatabase.get().readonly) {
                            confirmExit(function () {
                                $window.location = next; //$location.path is too buggy
                            });
                            event.preventDefault();
                        }
                    }
                );
                scope.$on('$destroy', cleanUp);

                function getMessage(formName, name) {
                    var field = getForm(formName)[name];
                    if (('undefined' === typeof(field)) || field.$valid) {
                        return undefined;
                    }

                    var message = '';
                    if (field.$error['number']) {
                        message += ' - not a number';
                    }
                    if (field.$error['min']) {
                        message += ' - too small';
                    }
                    if (field.$error['max']) {
                        message += ' - too large';
                    }
                    if (field.$error['pattern']) {
                        message += ' - not match pattern';
                    }
                    if (field.$error['duplicated']) {
                        message += ' - duplicated';
                    }
                    if (field.$error['required'] && !message) {
                        message += ' - required field';
                    }
                    return '\u2718' + message;
                }

                function getForm(name) {
                    return angular.element($('form[name="' + name + '"]')).scope()[name];
                }

                function confirmExit(callback) {
                    return confirmation({
                        label: 'You can loose unsaved data',
                        message: 'Are you sure to proceed?',
                        action: 'Proceed'
                    }, function (result) {
                        if (result) {
                            scope.editMode = false;
                            callback();
                        }
                    });
                }

                function toSearch() {
                    navigation.toType(scope.entity().typeId);
                }
            }