stateText: gettext('State'),
groupText: gettext('Group'),
- language_map: {
- ar: 'Arabic',
- ca: 'Catalan',
- zh_CN: 'Chinese (Simplified)',
- zh_TW: 'Chinese (Traditional)',
- da: 'Danish',
- nl: 'Dutch',
- en: 'English',
- eu: 'Euskera (Basque)',
- fr: 'French',
- de: 'German',
- he: 'Hebrew',
- it: 'Italian',
- ja: 'Japanese',
- kr: 'Korean',
- nb: 'Norwegian (Bokmal)',
- nn: 'Norwegian (Nynorsk)',
- fa: 'Persian (Farsi)',
- pl: 'Polish',
- pt_BR: 'Portuguese (Brazil)',
- ru: 'Russian',
- sl: 'Slovenian',
- es: 'Spanish',
- sv: 'Swedish',
- tr: 'Turkish',
+ language_map: { //language map is sorted alphabetically by iso 639-1
+ ar: `العربية - ${gettext("Arabic")}`,
+ ca: `Català - ${gettext("Catalan")}`,
+ da: `Dansk - ${gettext("Danish")}`,
+ de: `Deutsch - ${gettext("German")}`,
+ en: `English - ${gettext("English")}`,
+ es: `Español - ${gettext("Spanish")}`,
+ eu: `Euskera (Basque) - ${gettext("Euskera (Basque)")}`,
+ fa: `فارسی - ${gettext("Persian (Farsi)")}`,
+ fr: `Français - ${gettext("French")}`,
+ he: `עברית - ${gettext("Hebrew")}`,
+ it: `Italiano - ${gettext("Italian")}`,
+ ja: `日本語 - ${gettext("Japanese")}`,
+ kr: `한국어 - ${gettext("Korean")}`,
+ nb: `Bokmål - ${gettext("Norwegian (Bokmal)")}`,
+ nl: `Nederlands - ${gettext("Dutch")}`,
+ nn: `Nynorsk - ${gettext("Norwegian (Nynorsk)")}`,
+ pl: `Polski - ${gettext("Polish")}`,
+ pt_BR: `Português Brasileiro - ${gettext("Portuguese (Brazil)")}`,
+ ru: `Русский - ${gettext("Russian")}`,
+ sl: `Slovenščina - ${gettext("Slovenian")}`,
+ sv: `Svenska - ${gettext("Swedish")}`,
+ tr: `Türkçe - ${gettext("Turkish")}`,
+ zh_CN: `中文(简体)- ${gettext("Chinese (Simplified)")}`,
+ zh_TW: `中文(繁體)- ${gettext("Chinese (Traditional)")}`,
},
render_language: function(value) {
return value;
},
+ renderEnabledIcon: enabled => `<i class="fa fa-${enabled ? 'check' : 'minus'}"></i>`,
+
language_array: function() {
let data = [['__default__', Proxmox.Utils.render_language('')]];
Ext.Object.each(Proxmox.Utils.language_map, function(key, value) {
return data;
},
+ theme_map: {
+ crisp: 'Light theme',
+ "proxmox-dark": 'Proxmox Dark',
+ },
+
+ render_theme: function(value) {
+ if (!value || value === '__default__') {
+ return Proxmox.Utils.defaultText + ' (auto)';
+ }
+ let text = Proxmox.Utils.theme_map[value];
+ if (text) {
+ return text;
+ }
+ return value;
+ },
+
+ theme_array: function() {
+ let data = [['__default__', Proxmox.Utils.render_theme('')]];
+ Ext.Object.each(Proxmox.Utils.theme_map, function(key, value) {
+ data.push([key, Proxmox.Utils.render_theme(value)]);
+ });
+
+ return data;
+ },
+
bond_mode_gettext_map: {
'802.3ad': 'LACP (802.3ad)',
'lacp-balance-slb': 'LACP (balance-slb)',
return new Promise((resolve, _reject) => setTimeout(resolve, millis));
},
});
+
+Ext.override(Ext.data.Store, {
+ // If the store's proxy is changed while it is waiting for an AJAX
+ // response, `onProxyLoad` will still be called for the outdated response.
+ // To avoid displaying inconsistent information, only process responses
+ // belonging to the current proxy.
+ onProxyLoad: function(operation) {
+ let me = this;
+ if (operation.getProxy() === me.getProxy()) {
+ me.callParent(arguments);
+ } else {
+ console.log(`ignored outdated response: ${operation.getRequest().getUrl()}`);
+ }
+ },
+});