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');