viberadar 0.3.214 → 0.3.215
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/dashboard.html +94 -16
- package/package.json +1 -1
package/dist/ui/dashboard.html
CHANGED
|
@@ -1793,6 +1793,7 @@ let loadDurationDraft = '30s';
|
|
|
1793
1793
|
let loadDataDirDraft = '';
|
|
1794
1794
|
let loadResultDirDraft = '';
|
|
1795
1795
|
let loadAccountsJsonDraft = '';
|
|
1796
|
+
let loadImportedEnvVarsDraft = {};
|
|
1796
1797
|
let loadView = 'library'; // 'library' | 'editor'
|
|
1797
1798
|
|
|
1798
1799
|
function toggleObsHint(id) {
|
|
@@ -7767,6 +7768,8 @@ function applyLoadConfigToFields(cfg) {
|
|
|
7767
7768
|
loadDurationDraft = cfg.duration || loadDurationDraft;
|
|
7768
7769
|
loadDataDirDraft = cfg.dataDir || loadDataDirDraft;
|
|
7769
7770
|
loadResultDirDraft = cfg.resultDir || loadResultDirDraft;
|
|
7771
|
+
if (cfg.accountsJson) loadAccountsJsonDraft = cfg.accountsJson;
|
|
7772
|
+
if (cfg.accounts) loadAccountsJsonDraft = typeof cfg.accounts === 'string' ? cfg.accounts : JSON.stringify(cfg.accounts, null, 2);
|
|
7770
7773
|
const baseEl = document.getElementById('loadBaseUrl');
|
|
7771
7774
|
const vusEl = document.getElementById('loadVus');
|
|
7772
7775
|
const durEl = document.getElementById('loadDuration');
|
|
@@ -7800,6 +7803,71 @@ function normalizeAccountsJson(raw) {
|
|
|
7800
7803
|
}
|
|
7801
7804
|
}
|
|
7802
7805
|
|
|
7806
|
+
function normalizeLoadImport(raw, sourceName) {
|
|
7807
|
+
const root = raw && typeof raw === 'object' ? raw : {};
|
|
7808
|
+
const cfg = root.config && typeof root.config === 'object' ? { ...root.config, ...root } : root;
|
|
7809
|
+
const envVars = cfg.envVars && typeof cfg.envVars === 'object' && !Array.isArray(cfg.envVars) ? { ...cfg.envVars } : {};
|
|
7810
|
+
const imported = {
|
|
7811
|
+
scriptName: cfg.scriptName || cfg.name || (sourceName || '').replace(/\.json$/i, '') || '',
|
|
7812
|
+
script: cfg.script || cfg.k6Script || cfg.code || '',
|
|
7813
|
+
baseUrl: cfg.baseUrl || envVars.BASE_URL || '',
|
|
7814
|
+
vus: cfg.vus || cfg.VUs || cfg.users || '',
|
|
7815
|
+
duration: cfg.duration || cfg.testDuration || '',
|
|
7816
|
+
dataDir: cfg.dataDir || cfg.dataPath || '',
|
|
7817
|
+
resultDir: cfg.resultDir || cfg.resultsDir || '',
|
|
7818
|
+
accounts: cfg.accounts || cfg.usersJson || cfg.accountsJson || envVars.TEST_ACCOUNTS_JSON || '',
|
|
7819
|
+
envVars,
|
|
7820
|
+
};
|
|
7821
|
+
delete imported.envVars.BASE_URL;
|
|
7822
|
+
delete imported.envVars.TEST_ACCOUNTS_JSON;
|
|
7823
|
+
delete imported.envVars.TEST_EMAIL;
|
|
7824
|
+
delete imported.envVars.TEST_PASSWORD;
|
|
7825
|
+
return imported;
|
|
7826
|
+
}
|
|
7827
|
+
|
|
7828
|
+
function applyLoadImport(raw, sourceName) {
|
|
7829
|
+
const imported = normalizeLoadImport(raw, sourceName);
|
|
7830
|
+
if (imported.script) loadScriptDraft = String(imported.script);
|
|
7831
|
+
if (imported.scriptName) loadScriptNameDraft = String(imported.scriptName);
|
|
7832
|
+
if (imported.baseUrl) loadBaseUrlDraft = String(imported.baseUrl);
|
|
7833
|
+
if (imported.vus) loadVusDraft = parseInt(String(imported.vus), 10) || loadVusDraft;
|
|
7834
|
+
if (imported.duration) loadDurationDraft = String(imported.duration);
|
|
7835
|
+
if (imported.dataDir) loadDataDirDraft = String(imported.dataDir);
|
|
7836
|
+
if (imported.resultDir) loadResultDirDraft = String(imported.resultDir);
|
|
7837
|
+
if (imported.accounts) {
|
|
7838
|
+
loadAccountsJsonDraft = typeof imported.accounts === 'string'
|
|
7839
|
+
? imported.accounts
|
|
7840
|
+
: JSON.stringify(imported.accounts, null, 2);
|
|
7841
|
+
}
|
|
7842
|
+
loadImportedEnvVarsDraft = imported.envVars || {};
|
|
7843
|
+
loadView = 'editor';
|
|
7844
|
+
renderContent();
|
|
7845
|
+
}
|
|
7846
|
+
|
|
7847
|
+
function loadImportConfigClick() {
|
|
7848
|
+
const input = document.getElementById('loadConfigImportFile');
|
|
7849
|
+
if (input) {
|
|
7850
|
+
input.value = '';
|
|
7851
|
+
input.click();
|
|
7852
|
+
}
|
|
7853
|
+
}
|
|
7854
|
+
|
|
7855
|
+
function loadImportConfigFile(input) {
|
|
7856
|
+
const file = input && input.files && input.files[0];
|
|
7857
|
+
if (!file) return;
|
|
7858
|
+
const reader = new FileReader();
|
|
7859
|
+
reader.onload = () => {
|
|
7860
|
+
try {
|
|
7861
|
+
const raw = JSON.parse(String(reader.result || '{}'));
|
|
7862
|
+
applyLoadImport(raw, file.name);
|
|
7863
|
+
} catch (e) {
|
|
7864
|
+
alert('Конфиг не импортирован: ' + e.message);
|
|
7865
|
+
}
|
|
7866
|
+
};
|
|
7867
|
+
reader.onerror = () => alert('Не удалось прочитать файл конфига');
|
|
7868
|
+
reader.readAsText(file);
|
|
7869
|
+
}
|
|
7870
|
+
|
|
7803
7871
|
function renderLoad(c) {
|
|
7804
7872
|
const isRunning = loadState && loadState.status === 'running';
|
|
7805
7873
|
const isDone = loadState && (loadState.status === 'done' || loadState.status === 'stopped');
|
|
@@ -7853,10 +7921,14 @@ function renderLoad(c) {
|
|
|
7853
7921
|
<div class="load-library-header">
|
|
7854
7922
|
<div>
|
|
7855
7923
|
<div style="font-size:16px;font-weight:600;color:var(--fg)">Нагрузочные тесты</div>
|
|
7856
|
-
<div style="font-size:12px;color:var(--muted);margin-top:2px">${loadK6Version ? escapeHtml(loadK6Version) : ''} · ${loadSavedScripts.length} сохранённых</div>
|
|
7857
|
-
</div>
|
|
7858
|
-
<
|
|
7859
|
-
|
|
7924
|
+
<div style="font-size:12px;color:var(--muted);margin-top:2px">${loadK6Version ? escapeHtml(loadK6Version) : ''} · ${loadSavedScripts.length} сохранённых</div>
|
|
7925
|
+
</div>
|
|
7926
|
+
<div class="load-btns" style="margin:0">
|
|
7927
|
+
<button class="load-btn" style="font-size:13px;padding:8px 14px" onclick="loadImportConfigClick()">Импорт конфига</button>
|
|
7928
|
+
<button class="load-btn load-btn-run" style="font-size:13px;padding:8px 20px" onclick="loadNewTest()">+ Новый тест</button>
|
|
7929
|
+
</div>
|
|
7930
|
+
</div>
|
|
7931
|
+
<input id="loadConfigImportFile" type="file" accept=".json,application/json" style="display:none" onchange="loadImportConfigFile(this)" />
|
|
7860
7932
|
|
|
7861
7933
|
${loadSavedScripts.length === 0
|
|
7862
7934
|
? `<div class="load-library-empty">
|
|
@@ -7905,10 +7977,12 @@ function renderLoad(c) {
|
|
|
7905
7977
|
|
|
7906
7978
|
c.innerHTML = `<div class="load-screen">
|
|
7907
7979
|
|
|
7908
|
-
<div class="load-editor-topbar">
|
|
7909
|
-
${!isRunning ? `<button class="load-back-btn" onclick="loadView='library';renderContent()">← Все тесты</button>` : ''}
|
|
7910
|
-
|
|
7911
|
-
|
|
7980
|
+
<div class="load-editor-topbar">
|
|
7981
|
+
${!isRunning ? `<button class="load-back-btn" onclick="loadView='library';renderContent()">← Все тесты</button>` : ''}
|
|
7982
|
+
${!isRunning ? `<button class="load-btn" style="font-size:12px;padding:5px 10px" onclick="loadImportConfigClick()">Импорт конфига</button>` : ''}
|
|
7983
|
+
<input id="loadConfigImportFile" type="file" accept=".json,application/json" style="display:none" onchange="loadImportConfigFile(this)" />
|
|
7984
|
+
<span style="font-size:12px;color:var(--muted);margin-left:4px">${statusBadge}</span>
|
|
7985
|
+
</div>
|
|
7912
7986
|
|
|
7913
7987
|
<div class="load-section">
|
|
7914
7988
|
<div class="load-section-title">Конфигурация ${loadK6Version ? `<span style="color:var(--dim);font-weight:400">${escapeHtml(loadK6Version)}</span>` : ''}</div>
|
|
@@ -8021,18 +8095,20 @@ function renderLoad(c) {
|
|
|
8021
8095
|
}
|
|
8022
8096
|
}
|
|
8023
8097
|
|
|
8024
|
-
function loadNewTest() {
|
|
8025
|
-
loadScriptDraft = '';
|
|
8026
|
-
loadScriptNameDraft = '';
|
|
8027
|
-
|
|
8028
|
-
|
|
8029
|
-
|
|
8098
|
+
function loadNewTest() {
|
|
8099
|
+
loadScriptDraft = '';
|
|
8100
|
+
loadScriptNameDraft = '';
|
|
8101
|
+
loadImportedEnvVarsDraft = {};
|
|
8102
|
+
loadView = 'editor';
|
|
8103
|
+
renderContent();
|
|
8104
|
+
}
|
|
8030
8105
|
|
|
8031
8106
|
function loadOpenScript(name) {
|
|
8032
8107
|
const s = loadSavedScripts.find(x => x.name === name);
|
|
8033
8108
|
if (!s) return;
|
|
8034
8109
|
loadScriptDraft = s.script;
|
|
8035
8110
|
loadScriptNameDraft = s.name;
|
|
8111
|
+
loadImportedEnvVarsDraft = {};
|
|
8036
8112
|
if (s.baseUrl) loadBaseUrlDraft = s.baseUrl;
|
|
8037
8113
|
if (s.vus) loadVusDraft = s.vus;
|
|
8038
8114
|
if (s.duration) loadDurationDraft = s.duration;
|
|
@@ -8082,8 +8158,8 @@ async function runLoadTest() {
|
|
|
8082
8158
|
loadLogLines = [];
|
|
8083
8159
|
loadBuckets = [];
|
|
8084
8160
|
|
|
8085
|
-
try {
|
|
8086
|
-
const envVars = {};
|
|
8161
|
+
try {
|
|
8162
|
+
const envVars = { ...(loadImportedEnvVarsDraft || {}) };
|
|
8087
8163
|
if (accountsInfo.accounts.length > 0) {
|
|
8088
8164
|
envVars.TEST_ACCOUNTS_JSON = accountsInfo.text;
|
|
8089
8165
|
envVars.TEST_EMAIL = accountsInfo.accounts[0].email;
|
|
@@ -8278,6 +8354,7 @@ async function loadOpenRun(runId) {
|
|
|
8278
8354
|
loadLogLines = d.logs || [];
|
|
8279
8355
|
loadScriptDraft = d.script || '';
|
|
8280
8356
|
loadScriptNameDraft = d.config?.scriptName || d.scriptName || '';
|
|
8357
|
+
loadImportedEnvVarsDraft = {};
|
|
8281
8358
|
if (d.config) applyLoadConfigToFields(d.config);
|
|
8282
8359
|
loadView = 'editor';
|
|
8283
8360
|
renderContent();
|
|
@@ -8321,6 +8398,7 @@ async function loadLoadScript(name) {
|
|
|
8321
8398
|
if (!s) return;
|
|
8322
8399
|
loadScriptDraft = s.script;
|
|
8323
8400
|
loadScriptNameDraft = s.name;
|
|
8401
|
+
loadImportedEnvVarsDraft = {};
|
|
8324
8402
|
if (s.baseUrl) loadBaseUrlDraft = s.baseUrl;
|
|
8325
8403
|
if (s.vus) loadVusDraft = s.vus;
|
|
8326
8404
|
if (s.duration) loadDurationDraft = s.duration;
|