basicDataModule.directive('businessUnit', ['$log', 'SweetAlert', '$translate',
    function ($log, SweetAlert, $translate) {
        'use strict';
        $log.debug('businessUnit.ctor()...');

        return {
            restrict: 'E',
            templateUrl: '/app/admin/basicData/masterData/businessUnit/business-unit.html' + '?_=' + Math.random(),
            scope:
            {
                //addCtrlFn: '&addBsFn',
                //removeCtrlFn: '&removeBsFn',
                //editCtrlFn: '&editBsFn',
                //stopCtrlFn: '&stopBsFn',
                //attr: '@',
                //list:'=bind'
            },
            controller: 'businessUnitController',
            //link: function (scope, element, attrs, $element) {
            //    var originalContent, target, isEdit, isAdd;
            //    var originalArray = [];
            //    var isNodeActive = $translate.instant('OrganizationStructureActive');
            //    var isNodeDisabled = $translate.instant('OrganizationStructureDisabled');
            //    var disableNode = $translate.instant('OrganizationStructureDisabledNode');
            //    var activeNode = $translate.instant('OrganizationStructureEnableNode');
            //    var emptyNote = $translate.instant('BusinessUnitEmptyNode');
            //    var outOfLengthNote = $translate.instant('BusinessUnitOutOfLengthNode');
            //    var depulicateNote = $translate.instant('BusinessUnitDuplicateNode');
            //    var addInvalidNote = $translate.instant('OrganizationStructureOperationAddInvalid');
            //    var editInvalidNote = $translate.instant('OrganizationStructureOperationEditInvalid');

            //    //添加行的时候删除行
            //    $(document).on('click', '.remove-bs-row', function () {
            //        var tr = $(this).parent().parent();
            //        var id = $(tr).children('td').eq(2).text();
            //        $(tr).remove();

            //        if (id !== '') {
            //            scope.removeCtrlFn({ id: id });
            //        }

            //        if ($('.remove-bs-row').length == 0) {
            //            $(".bs-save-group").css('display', 'none');
            //            isAdd = false;
            //        }
            //    });

            //    //选中行
            //    $(document).on('click', '#businessUnitTable tr:not(.header)', function (evt) {
            //        $("#businessUnitTable tr").removeClass("selected");
            //        $(this).toggleClass('selected');

            //        target = $("#businessUnitTable tr.selected td");

            //    });

            //    //编辑
            //    scope.editBusinessUnit = function (e, org) {

            //        if (isAdd) {
            //            SweetAlert.warning(editInvalidNote);
            //            return;
            //        }

            //        var elem;

            //        isEdit = true; isAdd = false;
            //        $(".bs-save-group").css('display', 'block');

            //        elem = (e.srcElement || e.target);  //for IE: e.srcElement, others, e.target
            //        target = $(elem).parent().parent().parent().children('td');

            //        scope.currentTarget = target;
            //        scope.currentOrg = org;

            //        var element = $(target).eq(0);
            //        originalContent = $(element).text();
            //        var result = $.grep(originalArray, function (e) { return e.id === org.id });
            //        if (result.length === 0 || originalContent != '') {
            //            //add to originalArray for the cancel 
            //            originalArray.push({ 'id': org.id, 'content': originalContent });

            //            $(element).addClass("cellEditing");
            //            $(element).html("<input type='text' class='form-control' value='" + originalContent + "' /></div>");
            //            $(element).children().first().focus();
            //            $(element).children().first().keypress(function (e) {
            //                if (e.which == 13) {
            //                    var newContent = $(element).children().first().val();
            //                    $(element).text(newContent);
            //                    $(element).removeClass("cellEditing");
            //                }
            //            });
            //        }
            //    };

            //    //取消保存
            //    scope.cancelBusinessUnit = function (e) {
            //        var elem = (e.srcElement || e.target);  //for IE: e.srcElement, others, e.target
            //        if (isEdit) {

            //            var element = $(".cellEditing");
            //            element.each(function (index) {
            //                var td = $(this).parent().children('td').eq(2);
            //                var id = $(td).text();
            //                var obj = $.grep(originalArray, function (x) { return x.id === id });
            //                if (obj.length > 0) {
            //                    $(this).text(obj[0].content);
            //                    $(this).removeClass("cellEditing");
            //                }
            //            });
            //            originalArray = [];
            //            isEdit = false;
            //        } else {
            //            $('.new-add-bs').remove();
            //            isAdd = false;
            //        }
            //        $(".bs-save-group").css('display', 'none');
            //    };

            //    $("#btnAddBusinessUnit").on('click', function () {
            //        if (isEdit) {
            //            SweetAlert.warning(addInvalidNote);
            //            return;
            //        }
            //        isEdit = false; isAdd = true;
            //        $(".bs-save-group").css('display', 'block');
            //        $('#businessUnitTable tr:last').after('<tr class="new-add-bs"><td><input type="text" class="form-control new-add-input" value="" /></td><td>' + isNodeActive + '</td><td><i class="fa fa-times remove-bs-row" aria-hidden="true"></i></td></tr>');

            //    });

            //    //保存
            //    scope.saveBusinessUnit = function (e) {
            //        if (isEdit) {
            //            //编辑保存
            //            var elem = (e.srcElement || e.target);  //for IE: e.srcElement, others, e.target
            //            var element = $(".cellEditing");
            //            var newValues = [];
            //            var idArray = [];

            //            element.each(function (index) {
            //                var td = $(this).parent().children('td');
            //                var newContent = $(td).eq(0).children().first().val();
            //                var isActive = $(td).eq(1).text();
            //                var id = $(td).eq(2).text();
            //                idArray.push(id);
            //                newValues.push({
            //                    id: id, name: newContent, isActive: isActive
            //                });
            //            });

            //            var validationResult = formValidation(newValues);

            //            if (!validationResult.duplicateFlag && !validationResult.emptyFlag && !validationResult.outOfLengthFlag) {
            //                isEdit = false;
            //                $(".bs-save-group").css('display', 'none');

            //                element.each(function (index) {
            //                    var td = $(this).parent().children('td');
            //                    var firstTd = $(td).eq(0);
            //                    var newVal = $(firstTd).children().first().val();
            //                    $(firstTd).text(newVal);
            //                    $(firstTd).removeClass("cellEditing");
            //                });

            //                scope.editCtrlFn({
            //                    newcontent: newValues
            //                });

            //                originalArray = [];
            //            }

            //        } else {
            //            //新增层级
            //            var newaddTarget = $('.new-add-input');
            //            var values = [];
            //            var hasName = true;
            //            var outOfLength = false;
            //            var duplicate = false;
            //            var newValues = [];

            //            $(newaddTarget).each(function () {
            //                var guid = PWC.newGuid();
            //                var name = $(this).val();

            //                newValues.push({
            //                    id: guid, name: name, isActive: true
            //                });
            //            });

            //            var validationResult = formValidation(newValues);

            //            if (!validationResult.duplicateFlag && !validationResult.emptyFlag && !validationResult.outOfLengthFlag) {
            //                $(".bs-save-group").css('display', 'none');
            //                $('.new-add-bs').remove();
            //                var newAdd = {
            //                    newrow: newValues
            //                };
            //                newValues.forEach(function (item) {
            //                    scope.businessUnitList.push(item);
            //                });
            //                scope.addCtrlFn(newAdd);
            //                originalArray = [];
            //            }
            //        }
            //    };

            //    //停用和启用
            //    var currentId;
            //    scope.stopOrActiveBusinessUnit = function (org) {

            //        currentId = org.id;
            //        var name = org.name;
            //        var id = org.id;
            //        var updateArray = [];
            //        var values = { id: id, name: name, isActive: !org.isActive };
            //        updateArray.push(values);

            //        scope.stopCtrlFn({ newcontent: updateArray });

            //        scope.$on('to-child', function (event, successFlag) {
            //            if (successFlag) {
            //                var item = _.where(scope.businessUnitList, { id: currentId });
            //                item[0].isActive = values.isActive;
            //            }
            //        });
            //    };

            //    //form validation before saving add/edit operation
            //    var formValidation = function (newValues) {

            //        var duplicateFlag = false;
            //        var emptyFlag = false;
            //        var outOfLengthFlag = false;

            //        //判断同时输入多个的时候不能重复
            //        var uniqueList = _.uniq(newValues, function (item, key, name) {
            //            return item.name;
            //        });

            //        if (uniqueList.length != newValues.length) {
            //            duplicateFlag = true;
            //        }

            //        newValues.forEach(function (item) {

            //            var filterResult = _.find(scope.businessUnitList, { name: item.name });
            //            //如果找的这个object和newvalue的id是同一个的话,不是重复 
            //            if (filterResult != undefined && filterResult.id !== item.id) {
            //                duplicateFlag = true;
            //            } else if (item.name === '') {
            //                emptyFlag = true;
            //            } else if (PWC.getLength(item.name) > constant.businessUnit.BUmaxLength) {
            //                outOfLengthFlag = true;
            //            }
            //        });

            //        //give notice to user
            //        if (emptyFlag) {
            //            SweetAlert.warning(emptyNote);
            //        } else if (duplicateFlag) {
            //            SweetAlert.warning(depulicateNote);
            //        } else if (outOfLengthFlag) {
            //            SweetAlert.warning(outOfLengthNote);
            //        }

            //        return {
            //            duplicateFlag: duplicateFlag,
            //            emptyFlag: emptyFlag,
            //            outOfLengthFlag: outOfLengthFlag
            //        };
            //    };
            //}
        };
    }
]);