key-value-configuration-editing.ctrl.js 7.38 KB
Newer Older
eddie.woo's avatar
eddie.woo committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
systemConfigurationModule.controller('keyValueConfigEditingController', ['$log', '$scope', '$translate', 'serviceTypeService', 'orgService',
    'KeyValueConfigService', 'enums',
function ($log, $scope, $translate, serviceTypeService, orgService, KeyValueConfigService, enums) {
    var serviceTypeDic, induestryDic;
   
    serviceTypeService.getServiceTypeList().success(function (serviceTypesFromServer) {
        $scope.serviceTypes = serviceTypesFromServer;
        serviceTypeDic = PWC.toDict($scope.serviceTypes, 'id');
    });

    orgService.getProjectIndustrys().success(function (industriesFromSever) {
        $scope.industries = industriesFromSever;
        induestryDic = PWC.toDict($scope.industries, 'id');
    });

    $scope.industriesSelectOption = {
        displayExpr: "name",
        valueExpr: "id",
        showSelectionControls: true,
        searchEnabled: true,
        bindingOptions: {
            value: 'editingModel.industryIds',
            dataSource: 'industries',
            disabled: 'state === 0'
        },
        placeholder: $translate.instant('SelectIndustryRequired')
    };
    $scope.industriesSelectOptionValid = {
        name: 'industry',
        validationRules: [
            { type: 'required', message: $translate.instant('RequiredInfo') }
        ],
        validationGroup:'keyValueGroup'
    };
    $scope.serviceTypeSelectOptionValid = {
        name: 'serviceType',
        validationRules: [
            { type: 'required', message: $translate.instant('RequiredInfo') }
        ],
        validationGroup: 'keyValueGroup'
    };
    $scope.serviceTypeSelectOption = {
        displayExpr: "name",
        valueExpr: "id",
        showSelectionControls: true,
        searchEnabled: true,
        bindingOptions: {
            value: 'editingModel.serviceTypeIds',
            dataSource: 'serviceTypes',
            disabled: 'state === 0'
        },
        placeholder: $translate.instant('SelectTaxType')
    };

    $scope.saveEditingKvc = function () {
        angular.forEach($scope.kvcForm.$error.required, function (field) {
            field.$setDirty();
        });
        var fieldValidateResult = DevExpress.validationEngine.getGroupConfig("keyValueGroup").validate();
        
        if (!($scope.kvcForm.$valid &&fieldValidateResult.isValid)) {
            return;
        }
        $scope.editingModel.serviceTypeNames = [];
        $scope.editingModel.industryNames = [];

        _.each($scope.editingModel.serviceTypeIds,function (serviceType) {
            $scope.editingModel.serviceTypeNames.push(serviceTypeDic[serviceType].name);
        });
        $scope.editingModel.serviceTypes = $scope.editingModel.serviceTypeNames.join(',');
        _.each($scope.editingModel.industryIds,function (industryId) {
            $scope.editingModel.industryNames.push(induestryDic[industryId].name);
        });
        $scope.editingModel.industrys = $scope.editingModel.industryNames.join(',');
        $scope.editingModel.dataSource = $scope.editingModel.dataSourceKey + '_' + $scope.editingModel.dataSourceName;
        var copiedEditingModel = angular.copy($scope.editingModel);
        if ($scope.state === 2) {
            KeyValueConfigService.addNewKeyValueConifg($scope.editingModel).success(function () {
                $scope.editDone({ editingModel: copiedEditingModel });
                var dataGrid = $("#KVgridContainer").dxDataGrid("instance");
                dataGrid.refresh();
            });
        } else if ($scope.state === 1) {
            KeyValueConfigService.updateNewKeyValueConifg($scope.editingModel).success(function () {
                $scope.editDone({ editingModel: copiedEditingModel });
                var dataGrid = $("#KVgridContainer").dxDataGrid("instance");
                dataGrid.refresh();
            });
        }
        $('#kvc-editing-modal').modal('hide');

    };

    $scope.editKvc = function () {
        $scope.state = 1;
    };

    $('#kvc-editing-modal').on('hidden.bs.modal', function () {
        $scope.editingModel = {};
        $scope.kvcForm.$setPristine();
    });
   
    $scope.keyInValue = null;
    //var dataSourceChange = function (selectedItem) {
    //    if (_.isNull(selectedItem)) return;
    //    if (selectedItem.key === enums.formulaDataSourceType.KeyInSource) {
    //        if ($scope.state === 2) {
    //            $scope.editingModel.dataSourceName = null;
    //        }
    //        $('#keyInValue').show();
    //    } else {
    //        $scope.editingModel.dataSourceName = selectedItem.value;
    //        $('#keyInValue').hide();
    //    }
    //};
    $scope.dataSourceNameOptions = {
        disabled: true
    };
    //$scope.datasourceOptions = {
    //    bindingOptions: {
    //        dataSource: 'dataSourceList',
    //        disabled: 'state === 0'
    //    },
    //    //dataSource: $scope.dataSourceList,
    //    valueExpr: 'key',
    //    displayExpr: 'value',
    //    onSelectionChanged: function (e) {

    //        var selectedItem = e.selectedItem;
    //        dataSourceChange(selectedItem);
    //    }
    //};
    var formatCharacters = ['(', '+', '-', '*', '/'];
    $scope.mappingDataSource = function () {
        var formula = $scope.editingModel.formula
        if (formula) {
            var r = formula.replace(/[\(|\+|\-|\*|\/]/g, "#");
            formula = r.split('#')[0];
            var source = _.findWhere($scope.dataSourceList, {formulaName:formula});
            if (_.isUndefined(source)) {
                source = {
                    dataSourceType: 10,
                    dataSourceName: $translate.instant('KeyInSource')
                }
            }
            $scope.editingModel.dataSourceKey = source.dataSourceType;
            $scope.editingModel.dataSourceName = source.dataSourceName;
            //KeyValueConfigService.mappingDataSource(formula).success(function (res) {
            //    if (res) {
            //       // var obj = { id: res.data.dataSourceID, name: res.data.dataSourceName };
            //        $scope.editingModel.dataSourceKey = res.data.dataSourceID;
            //        $scope.editingModel.dataSourceName = res.data.dataSourceName;
            //       // dataSourceChange(obj);

            //    }
                
            //}).error(function (err) {
            //    console.log(err);
            //});
        }
    }
    //var getAllKeyCode = function () {
    //    KeyValueConfigService.getAll().success(function (data) {
    //        $scope.mentionList = _.map(data, function (config) { return { code: '@' + config.keyCode, name: config.name, description: config.description } });
    //    });
    //};
    var getAllDataSource = function () {
        KeyValueConfigService.getAllDataSource().success(function (res) {
            $scope.dataSourceList = res.data;
        });
    };

    (function initalization() {
        //getAllKeyCode();
      //  $scope.dataSourceList = _.chain(enums.formulaDataSourceType)
        //.pairs().map(function (obj) { return { id: obj[1], name: $translate.instant(obj[0]) }; }).value();
        getAllDataSource();
        //$('#kvc-editing-modal').on('show.bs.modal', function () {
        //    // 执行一些动作...
        //    $('#keyInValue').hide();
        //})
        var titleStr = $scope.state === 0 ? 'ViewKeyValueConfig' : $scope.state === 1 ? 'UpdateKeyValueConfiguration' : $scope.state === 2 ? 'AddKeyValueConfiguration' : '';
        $scope.modalTitle = $translate.instant(titleStr);
    })();
}]);