link: function()

in tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Web/wwwroot/app/directives/common.directive.js [563:672]


            link: function (scope, element, attrs) {
                var obj = "";
                obj = eval('(' + attrs.colorder + ')');
                if (scope.input.columnPosition == obj && scope.input.displayInUI == "true") {
                    var el = angular.element('<span  />');
                    if (scope.input.type.toLowerCase() == 'boolean') {
                        scope.input.required = false;
                        el.append('<div class="directiveMatterExtraBoolLabel"><span ng-show="' + scope.input.required + '" class="mandatory pull-left">*&nbsp;</span>' +
                           '<span ng-hide="' + scope.input.required + '" class="pull-left">&nbsp;&nbsp;&nbsp;&nbsp;</span>' +
                           '<label class="directiveFormFieldsLableWidth" >{{input.name}}: </label></div>');
                    }
                    else {
                        el.append('<div><span ng-show="' + scope.input.required + '" class="mandatory pull-left">*&nbsp;</span>' +
                           '<span ng-hide="' + scope.input.required + '" class="pull-left">&nbsp;&nbsp;&nbsp;&nbsp;</span>' +
                           '<label class="directiveFormFieldsLableWidth" >{{input.name}}: </label></div>');
                    }

                    switch (scope.input.type.toLowerCase()) {
                        case 'boolean':
                            if (scope.input.defaultValue != null && scope.input.defaultValue != undefined) {
                                scope.input.value = scope.input.defaultValue;
                            }
                            el.append('<div class="directiveMatterExtraBoolField"><input  ng-checked="{{input.value}}" id="' + scope.input.fieldInternalName + '"  aria-label="' + scope.input.fieldInternalName + '"  type="checkbox" ng-model="input.value"/></div>');
                            break;
                        case 'text':
                            if (scope.input.defaultValue != null && scope.input.defaultValue != undefined) {
                                scope.input.value = scope.input.defaultValue;
                            }
                            if (scope.input.required == "true") {
                                el.append('<div class="directiveMatterExtraFields"><input id="' + scope.input.fieldInternalName + '" class="directiveFormFields" aria-label="' + scope.input.fieldInternalName + '" ng-class="{errorBorder: (input.value == undefined && cm.addFieldReq == true)}"  required type="text" ng-model="input.value"/></div>');
                            }
                            else {
                                el.append('<div class="directiveMatterExtraFields"><input id="' + scope.input.fieldInternalName + '" aria-label="' + scope.input.fieldInternalName + '" class="directiveFormFields" type="text" ng-model="input.value"/></div>');
                            }
                            break;
                        case 'radiobuttons':
                            if (scope.input.defaultValue != null && scope.input.defaultValue != undefined) {
                                scope.input.value = scope.input.defaultValue;
                            }
                            var radioButtontText = "";

                            if (scope.input.required == "true") {
                                if (scope.input.defaultValue == null || scope.input.defaultValue == undefined) {
                                    scope.input.value = scope.input.values[0].choiceValue;
                                }

                                for (var i = 0; i < scope.input.values.length; i++) {
                                    radioButtontText += '<input name="radioGroup' + scope.input.values[i].fieldInternalName + '" type="radio" aria-label="' + scope.input.fieldInternalName + '" ng-model="input.value" value="' + scope.input.values[i].choiceValue + '"><label id="">' + scope.input.values[i].choiceValue + ' </label>'
                                }
                            }
                            else {
                                for (var i = 0; i < scope.input.values.length; i++) {
                                    radioButtontText += '<input name="radioGroup' + scope.input.values[i].fieldInternalName + '" type="radio"  aria-label="' + scope.input.fieldInternalName + '" ng-model="input.value" value="' + scope.input.values[i].choiceValue + '"><label id="">' + scope.input.values[i].choiceValue + ' </label>'
                                }
                            }
                            el.append('<div class="directiveMatterExtraFields">' + radioButtontText + '</div>')
                            break;
                        case 'dropdown':
                            if (scope.input.defaultValue != null && scope.input.defaultValue != undefined) {
                                var defaultValue = scope.input.defaultValue;
                                angular.forEach(scope.input.values, function (option) {
                                    if (option.choiceValue == defaultValue) {
                                        scope.input.value = option;                                        
                                    }                                   
                                });                               
                            }                           
                            if (scope.input.required == "true") {
                                el.append('<div class="directiveMatterExtraFields"><select id="' + scope.input.fieldInternalName + '" aria-label="' + scope.input.fieldInternalName + '" class="directiveFormFields" ng-class="{errorBorder: (input.value == undefined && cm.addFieldReq == true)}" required ng-model="input.value" ng-options=" x.choiceValue   for x in  input.values "> <option value="" label="- Select -"></option></select></div>')
                            }
                            else {
                                el.append('<div class="directiveMatterExtraFields"><select id="' + scope.input.fieldInternalName + '" aria-label="' + scope.input.fieldInternalName + '" class="directiveFormFields" ng-model="input.value" ng-options=" x.choiceValue   for x in  input.values "> <option value="" label="- Select -"></option></select></div>')
                            }
                            break;
                        case 'datetime':
                            if (scope.input.defaultValue != null && scope.input.defaultValue != undefined) {                              
                                scope.input.value = $filter('date')(scope.input.defaultValue, 'MM/dd/yyyy');
                                scope.input.value = new Date(scope.input.value);
                            }
                            if (scope.input.required == "true") {
                                el.append('<div class="directiveMatterExtraFields"> <input id="' + scope.input.fieldInternalName + '" class="directiveFormFields" aria-label="' + scope.input.fieldInternalName + '" ng-class="{errorBorder: (input.value == undefined && cm.addFieldReq == true)}" required type="text" class="calendar form-control " uib-datepicker-popup="MM/dd/yyyy" data-ng-model="input.value"  is-open="opened" placeholder="mm/dd/yyyy"  data-ng-model="" datepicker-options="dateOptions" ng-required="true" close-text="Close" readonly ng-keydown="$event.keyCode==13?open1():null"  ng-click="open1()"  /> </div>')
                            }
                            else {
                                el.append('<div class="directiveMatterExtraFields"> <input id="' + scope.input.fieldInternalName + '" class="directiveFormFields" aria-label="' + scope.input.fieldInternalName + '" type="text" class="calendar form-control " uib-datepicker-popup="MM/dd/yyyy" data-ng-model="input.value"  is-open="opened" placeholder="mm/dd/yyyy"  data-ng-model="" datepicker-options="dateOptions" ng-required="true" close-text="Close" readonly ng-keydown="$event.keyCode==13?open1():null" ng-click="open1()"  /> </div>')
                            }
                            break;
                        case 'multichoice':
                            if (scope.input.defaultValue != null && scope.input.defaultValue != undefined) {                                
                                var defaultOptions = scope.input.defaultValue.split(',');
                                scope.input.value = [];
                                for (var aCount = 0; aCount < defaultOptions.length; aCount++) {
                                    angular.forEach(scope.input.values, function (option) {
                                        if (option.choiceValue == defaultOptions[aCount]) {
                                            scope.input.value.push(option);
                                        }
                                    });
                                }
                            }
                            if (scope.input.required == "true") {
                                el.append('<div class="directiveMatterExtraFields"><select aria-label="' + scope.input.fieldInternalName + '"  id="' + scope.input.fieldInternalName + '" class="multiSelectHeight directiveFormFields" required style="height:100px;" multiple ng-model="input.value" ng-class="{errorBorder: (input.value == undefined && cm.addFieldReq == true)}" ng-options="x.choiceValue for x  in input.values "> <option value="" label="- Select -"></option></select></div>')
                            }
                            else {
                                el.append('<div class="directiveMatterExtraFields"><select aria-label="' + scope.input.fieldInternalName + '"  id="' + scope.input.fieldInternalName + '" class="multiSelectHeight directiveFormFields" required style="height:100px;" multiple ng-model="input.value" ng-options="x.choiceValue for x  in input.values "> <option value="" label="- Select -"></option></select></div>')
                            }
                            break;
                    }

                    $compile(el)(scope);
                    element.append(el);
                }
            },