diff --git a/console/deploy/console.yaml b/console/deploy/console.yaml
index 76deac0..8498192 100644
--- a/console/deploy/console.yaml
+++ b/console/deploy/console.yaml
@@ -55,7 +55,7 @@ spec:
serviceAccountName: fission-console
containers:
- name: console
- image: naeel/fission-console:v1.3.73
+ image: naeel/fission-console:v1.3.74
imagePullPolicy: Always
ports:
- containerPort: 8090
diff --git a/console/ui/index.html b/console/ui/index.html
index 9f009b1..acf8570 100644
--- a/console/ui/index.html
+++ b/console/ui/index.html
@@ -102,7 +102,7 @@
NUBES
FISSION CONSOLE
- v1.3.73
+ v1.3.74
@@ -509,7 +509,7 @@
- v1.3.73
+ v1.3.74
diff --git a/console/ui/js/functions.js b/console/ui/js/functions.js
index dbed988..c907dab 100644
--- a/console/ui/js/functions.js
+++ b/console/ui/js/functions.js
@@ -248,6 +248,12 @@ async function submitEdit() {
var isTfFn = /^tf-/.test(name);
if (!isTfFn) {
var envVars = collectEnvVars('e');
+ // Проверка на дубли ключей
+ var keys = envVars.map(function(e) { return e.name; });
+ var dupes = keys.filter(function(k, i) { return keys.indexOf(k) !== i; });
+ if (dupes.length > 0) {
+ throw new Error('Дублирующиеся ключи переменных: ' + dupes.join(', '));
+ }
await requestJSON(API_BASE + '/functions/' + encodeURIComponent(name) + '/envvars', 'PUT', {
env_vars: envVars
});
@@ -311,6 +317,8 @@ function makeEnvVarRow(prefix, key, val, readOnly, idx) {
kInput.disabled = readOnly;
kInput.style.cssText = 'flex:1; font-size:12px; font-family:monospace;';
kInput.dataset.envKey = '1';
+ // Подсветка дублей при изменении ключа
+ kInput.addEventListener('input', function() { highlightDupeKeys(prefix); });
var vInput = document.createElement('input');
vInput.placeholder = 'value';
@@ -340,6 +348,20 @@ function makeEnvVarRow(prefix, key, val, readOnly, idx) {
return row;
}
+// highlightDupeKeys подсвечивает красным все поля KEY с одинаковыми именами
+function highlightDupeKeys(prefix) {
+ var list = document.getElementById(prefix + '-envvars-list');
+ if (!list) return;
+ var inputs = list.querySelectorAll('[data-env-key]');
+ var keys = Array.from(inputs).map(function(i) { return i.value.trim(); });
+ inputs.forEach(function(inp) {
+ var k = inp.value.trim();
+ var isDupe = k !== '' && keys.filter(function(x) { return x === k; }).length > 1;
+ inp.style.outline = isDupe ? '2px solid #f44' : '';
+ inp.title = isDupe ? 'Дублирующийся ключ!' : '';
+ });
+}
+
// addEnvVarRow добавляет пустую строку в список env vars
function addEnvVarRow(prefix) {
var list = document.getElementById(prefix + '-envvars-list');