Замените целочисленный идентификатор на строковое имя, связанное с ним для CSV - AngularJS - PullRequest
0 голосов
/ 13 марта 2020

У меня есть интересная проблема, которую, к сожалению, хотя я думал, что изначально это было легко сделать, мне, похоже, не удалось решить. У меня есть метод GET, содержащий несколько значений, которые используются для вызова моей базы данных для заполнения таблицы.

testForm(test=%, test=%, groupType=1...)

Как вы можете видеть, groupType является целым числом, однако я хотел бы изменить его на мой CSV на имя, связанное с идентификатором. Я знаю, что немедленная логика c будет передавать целое число в ответ, но, к сожалению, я не могу этого сделать.

SpringDataRestService.query(
        {
            "collection": "userGroupTypes"
        },
        function (response) {                   // Success Function
            var userGroupType = response;
            for (var i = 0, len = userGroupType.length; i < len; i++) {
                var newUserGroupType = {
                    id: userGroupType[i].groupTypeId,
                    name: userGroupType[i].groupTypeName
                };
                $scope.userGroupTypeList.push(newUserGroupType);
            }
        },
        function (response) {                   // Failure Function
        }
    );
    $scope.targetEntity.groupType = $scope.userGroupTypeList[0].id;

Как вы можете видеть, этот метод используется из выпадающего списка на GUI и передает идентификатор. Следующий фрагмент кода - мой метод JSON to CSV, который используется, когда метод GET заполняет таблицу.

function json2csv(data) {
            var elementDelimiter = ',';
            var rowDelimiter = '\n';
            var csv_output = '';

            // Getting all keys from first data entry
            var keys = Object.keys(data[0]);
            var filteredKeysString = '';
            var filteredKeys = [];

            // Counters
            var numRows = 0;
            var keyCtr = 0;
            var nullFound = 0;
            var ctr = 0;

            // Get number of rows
            angular.forEach(data, function (item) {
                // Get number of rows of data
                numRows++;
            });

            // Filtering out null keys for all rows
            angular.forEach(keys, function (key) {

                nullFound = 0;

                angular.forEach(data, function (item) {

                    if (item[key] == null) {
                        nullFound++;
                    }
                });
                // if a null found in all columns, do not add it to filtered list
                if (nullFound !== numRows) {
                    if (keyCtr > 0) {
                        filteredKeysString += elementDelimiter;
                    }
                    filteredKeys.push(key);
                    filteredKeysString += key;
                    keyCtr++;
                }
            });

            // Add filtered keys as header of columns
            csv_output += filteredKeysString;
            csv_output += rowDelimiter;

            // Loop over each row and get value detailed by key
            angular.forEach(data, function (item) {
                $log.info(JSON.stringify(item.grouptype.name))

                ctr = 0;
                angular.forEach(filteredKeys, function (key) {

                    // Don't allow null/empty values -> Will cause unnecessary commas
                    if (item[key] != null && item[key] !== ' ') {

                        if (ctr > 0) {
                            csv_output += elementDelimiter;
                        }

                        csv_output += item[key];
                        ctr++;
                    }
                });

                csv_output += rowDelimiter;
            });

            $scope.tableNotGenerated = false;
            return csv_output;
        }

        $scope.downloadCSV = function (filename) {

            if ($scope.csv_response != null && filename != null) {
                var downloadElement = document.createElement('a');
                downloadElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv_file);
                downloadElement.target = '_blank';
                downloadElement.download = filename + "_" + today.toString() + '.csv';
                downloadElement.click();

            } else {
                $log.error("Error")
            }
        };

Поэтому я надеюсь, что кто-то может пролить свет на эту проблему, поскольку я изо всех сил пытался увидеть, как именно я могу достичь этого. Я подумал позвонить в колонку и затем заменить идентификатор на имена, но даже не уверен, как это сделать. Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...