(function (angular) { var module = angular.module('framework.directives.UI'); module.directive('fieldFor', fieldForDirective); module.directive('formFor', formForDirective); module.filter('propSearch', propertySearchFilter); formForDirective.$inject = ['Model']; function formForDirective(Model) { return { restrict: 'A', scope: true, transclude: true, template: function (element, attrs) { return '
'; }, link: function (scope, element, attrs, ctrls, transcludeFn) { scope.formFor = (scope.formFor || {}); scope.formFor.target = scope.$eval(attrs.formFor); scope.formFor.schema = (attrs.schema) ? Model[attrs.schema].$schema : scope.target.$$schema; scope.formFor.mode = 'EDIT'; scope.$watch(function () { return scope.target; }, function (newvalue) { }); if (attrs.mode) { scope.formFor.mode = attrs.mode; attrs.$observe('mode', function (newvalue) { scope.formFor.mode = newvalue; }); } transcludeFn(scope, function (clone, scope) { element.children('.transclude-target').append(clone); }); } } }; fieldForDirective.$inject = ['Model']; function fieldForDirective(Model) { var defaults = { inputType: 'text', required: false, selectTheme: 'selectize', selectSelectedTemplate: '{{$select.selected.Name}}', selectOptionTemplate: '{{option.Description}}' }; return { restrict: 'A', scope: true, template: function (element, attrs) { var formParent = element.closest('[form-for]'), subformParent = element.closest('[sub-form-for]'), schemaName = ((subformParent.length) ? subformParent : formParent).attr('schema'), ctor = Model[schemaName], schema = ctor && ctor.$schema, fieldDef = schema && schema[attrs.fieldFor], subForm = subformParent.attr('sub-form-for') || ''; if (!fieldDef) { return; } var inputConfig = angular.extend({ display: attrs.fieldFor, inputType: 'text' }, defaults, fieldDef, fieldDef.input, attrs); //need to fetch these. var labelText = attrs.display || attrs.fieldFor, fieldName = attrs.fieldFor, selectFrom = attrs.selectFrom; var template = '' + '