Browse Source

Merge branch 'Docs-module-improvements-discussion' of https://github.com/abpframework/abp into Docs-module-improvements-discussion

pull/13804/head
gizemmutukurt 4 years ago
parent
commit
fd5ec2fa64
  1. 157
      modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/index.js

157
modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/index.js

@ -7,119 +7,104 @@ $(function () {
}; };
var comboboxItems = []; var comboboxItems = [];
service.getFilterItems() service.getFilterItems()
.then(function (result) { .then(function (result) {
comboboxItems = result; comboboxItems = result;
fillOptions(); fillOptions();
}).catch(function (error) { }).catch(function (error) {
abp.message.error(error); abp.message.error(error);
}); });
var $projectId = $('#ProjectId'); var $projectId = $('#ProjectId');
var $version = $('#Version');
var $languageCode = $('#LanguageCode');
var $format = $('#Format');
function fillOptions() { $projectId.on('change', function () {
var selectedVersion = $version.val(); fillOptions();
var selectedLanguageCode = $languageCode.val(); });
var selectedFormat = $format.val();
var selectedProjectId = $projectId.val();
$version.empty(); var comboboxs = {
$languageCode.empty(); version: $('#Version'),
$format.empty(); languageCode: $('#LanguageCode'),
format: $('#Format')
};
$version.append($('<option/>').val('')); for (var key in comboboxs) {
$languageCode.append($('<option/>').val('')); comboboxs[key].on('change', function () {
$format.append($('<option/>').val('')); fillOptions();
});
}
comboboxItems.forEach(function (item) { var selectedItem = getSelectedItem();
if (!selectedProjectId || item.projectId === selectedProjectId) {
appendVersion(item,selectedVersion,selectedLanguageCode,selectedFormat);
appendLanguageCode(item,selectedLanguageCode,selectedVersion,selectedFormat);
appendFormat(item,selectedFormat,selectedVersion,selectedLanguageCode);
}
});
} function emptyComboboxs() {
function appendFormat(item,selectedFormat,selectedVersion,selectedLanguageCode) { for (var key in comboboxs) {
if(selectedVersion && selectedVersion !== item.version) { comboboxs[key].empty();
return;
}
if(selectedLanguageCode && selectedLanguageCode !== item.languageCode) {
return;
} }
}
if($format.find('option[value="' + item.format + '"]').length === 0) { function getSelectedItem() {
var formatOption = $('<option>',{ var item = {};
value: item.format, for (var key in comboboxs) {
text: item.format item[key] = comboboxs[key].val();
});
if(selectedFormat === item.format) {
formatOption.attr('selected', 'selected');
}
$format.append(formatOption);
} }
return item;
} }
function appendLanguageCode(item,selectedLanguageCode,selectedVersion,selectedFormat) { function SetComboboxsValues(item) {
if(selectedVersion && selectedVersion !== item.version) { for (var key in comboboxs) {
return; comboboxs[key].val(item[key]);
}
if(selectedFormat && selectedFormat !== item.format) {
return;
} }
}
if($languageCode.find('option[value="' + item.languageCode + '"]').length === 0) { function addComboboxsEmptyItem() {
var languageCodeOption = $('<option>',{ for (var key in comboboxs) {
value: item.languageCode, comboboxs[key].append($('<option/>').val('').text(''));
text: item.languageCode
});
if(selectedLanguageCode === item.languageCode) {
languageCodeOption.attr('selected', 'selected');
}
$languageCode.append(languageCodeOption);
} }
} }
function appendVersion(item,selectedVersion,selectedLanguageCode,selectedFormat) {
if(selectedLanguageCode && item.languageCode !== selectedLanguageCode) {
return;
}
if(selectedFormat && selectedFormat !== item.format) {
return;
}
if($version.find('option[value="' + item.version + '"]').length === 0) { function fillOptions() {
var versionOption = $('<option>', {
value: item.version, selectedItem = getSelectedItem();
text: item.version
}) var selectedProjectId = $projectId.val();
if(selectedVersion === item.version) {
versionOption.attr('selected', 'selected'); emptyComboboxs();
addComboboxsEmptyItem();
var selectedProjectItems = comboboxItems.filter((item) => !selectedProjectId || item.projectId === selectedProjectId);
for (var key in selectedItem) {
var item = selectedProjectItems.find((item) => item[key] === selectedItem[key]);
if (item) {
selectedItem[key] = item[key];
}else {
selectedItem[key] = '';
} }
$version.append(versionOption);
} }
}
$projectId.on('change', function () {
fillOptions();
});
$version.on('change', function () {
fillOptions();
});
$languageCode.on('change', function () { selectedProjectItems.forEach(function (item) {
fillOptions(); for (var key in comboboxs) {
}); appendComboboxItem(comboboxs[key], item, key);
}
});
$format.on('change', function () { SetComboboxsValues(selectedItem);
fillOptions(); }
}); function appendComboboxItem($combobox, item , key) {
$.each(item, function (index, value) {
if(index !== key) {
if(selectedItem[index] && selectedItem[index] !== value) {
return ;
}}
});
if($combobox.find('option[value="' + item[key] + '"]').length === 0){
$combobox.append($('<option/>').val(item[key]).text(item[key]));
}
}
var getFilter = function () { var getFilter = function () {
return { return {

Loading…
Cancel
Save