<script src="C:\Users\735908\Desktop\Start\jsapp\node_modules\esprima/esprima.js"></script>
<script src="C:\Users\735908\Desktop\Start\jsapp\node_modules\js-yaml\dist/js-yaml.min.js"></script>
Я использую две вышеупомянутые библиотеки, чтобы использовать jsyaml.safedump () в моем коде. Я пытаюсь загрузить данные формы, введенные пользователем, захватывая их соответствующими классами, а затем используя ссылку, чтобы указать на данные, которые необходимо загрузить в файл yaml. Я не могу получить какие-либо данные, добавленные в addToPayload, может кто-нибудь, пожалуйста, помогите, чтобы этот код мог быть исправлен (проблема в основном в for l oop, где я перебираю ключи объекта).
JS Часть для добавления в полезную нагрузку:
const Ctids = document.querySelectorAll('.CONTROLLER_ID');
const mcIps = document.querySelectorAll('.mc_ip');
const icsciIp = document.querySelectorAll('.iSCSI_IP');
const mcNetmasks = document.querySelectorAll('.Netmask_IP');
const mcGateways = document.querySelectorAll('.Gateway_IP');
const mc = document.querySelectorAll('.RBOD_MC');
const ec = document.querySelectorAll('.RBOD_EC');
const fu = document.querySelectorAll('.RBOD_FU');
const sc = document.querySelectorAll('.RBOD_SC');
const step = oForm.chassis.value;
let payload=''
var ctrl_ref={0:[0,1],
1:[2,3]};
for (let i = 0; i < step; i++) {
// console.log('Walking east one step');
const ctrl_id=ctrl_ref[i];
const A = mcIps[ctrl_id[0]].value
const B = mcNetmasks[ctrl_id[0]].value
const C = mcGateways[ctrl_id[0]].value
const D = mc[ctrl_id[0]].value
const E = sc[ctrl_id[0]].value
const F = fu[ctrl_id[0]].value
const G = ec[ctrl_id[0]].value
const H = Ctids[ctrl_id[0]].value
const I = mcIps[ctrl_id[1]].value
const J = mcNetmasks[ctrl_id[1]].value
const K = mcGateways[ctrl_id[1]].value
const L = mc[ctrl_id[1]].value
const M = sc[ctrl_id[1]].value
const N = fu[ctrl_id[1]].value
const O = ec[ctrl_id[1]].value
const P = Ctids[ctrl_id[1]].value
payload+= '- # UUT' + i + ' configuration'+'\n - # Chassis ' + i + ' configuration'+ String.fromCharCode(10);
const addToPayload = (object, whitespace) => {
for(const key of Object.keys(object)) {
payload += key + '\n';}
let data = { PDU: { PDU_IP: '10.25.255.0', PDU_LEFT: [ '2' ], PDU_RIGHT: [ '3' ] },
CONTROLLER:
[ { MC_IP: A,
MC_Netmask: B,
MC_Gateway: C,
MC: D,
SC: E,
FU: F,
EC: G,
ID: H },
{ MC_IP: I,
MC_Netmask: J,
MC_Gateway: K,
MC: L,
SC: M,
FU: N,
EC: O,
ID: P } ] }
let yamlStr = jsyaml.safeDump(data);
addToPayload(yamlStr);
console.log(yamlStr);
}
}
Код для загрузки файла yaml
const blob = new Blob([payload], {
type: 'text/yaml'
});
var file = oForm.test.value + "_" + oForm.protocol.value + "_UUT_Config" + '.yaml';
let link = document.createElement('a');
link.download = file;
if (window.webkitURL != null) {
link.href = window.webkitURL.createObjectURL(blob);
} else {
link.href = window.URL.createObjectURL(blob);
link.style.display = "none";
document.body.appendChild(link);
}
link.click();
HTML Часть
<div id="tab1" class="tabcontent">
<h4>Chasis 1 Details</h4>
<div id="extra" style="display:hidden;">
<h6>Additional Details Required for Controller A</h6>
<label for='Controller_ID1'>Controller_ID:</label><input type="text" class="CONTROLLER_ID" value="A" id='Controller_ID1' disabled="disabled"/>
<label for='iSCSI1'>iSCSI IPs:</label><input class="iSCSI_IP" type='text' name='iSCSIip1' id="ip1" placeholder='Enter iSCSI ips' disabled="disabled" />
<label for='HBA_Ports_A'>HBA_Ports:</label><input class="hba_ports" type='text' id="hba" name='hba_ports1' placeholder='Enter the HBA Ports' disabled="disabled" />
<label for='MC_IP_A'>MC_IP:</label><input class="mc_ip" type='text' name='extra_ip1' id='mc_ip' placeholder='Enter the MC_IP' />
<label for='MC_Netmask_A'>MC_Netmask:</label><input class="Netmask_IP" type='text' id='netmask_ip1' placeholder='Enter the MC_Netmask' />
<label for='MC_Gateway_A'>MC_Gateway:</label><input class="Gateway_IP" type='text' id='gateway_ip1' placeholder='Enter the MC_Gateway' />
<label for='MC_A'>MC:</label><input class="RBOD_MC" type='text' id='rbod_mc1' placeholder='Enter the MC Port' />
<label for='SC_A'>SC:</label><input class="RBOD_SC" type='text' id='rbod_sc1' placeholder='Enter the SC Port' />
<label for='FU_A'>FU:</label><input class="RBOD_FU" type='text' id='rbod_fu1' placeholder='Enter the FU Port' />
<label for='EC_A'>EC:</label><input class="RBOD_EC" type='text' id='rbod_ec1' placeholder='Enter the EC Port' />
<br>
<br>
<h6>Additional Details Required for Controller B</h6>
<label for='Controller_ID1'>Controller_ID:</label><input type="text" class="CONTROLLER_ID" value="B" id='Controller_ID' required />
<label for='iSCSI2'>iSCSI IPs:</label><input class="iSCSI_IP" type='text' name='iSCSIip2' id="ip2" placeholder='Enter iSCSI ips' disabled="disabled" />
<label for='HBA_Ports'>HBA_Ports:</label><input class="hba_ports" type='text' id="hba1" placeholder='Enter the HBA Ports' disabled="disabled" />
<label for='MC_IP'>MC_IP:</label><input class="mc_ip" type='text' id='mcip' name='extra_ip' placeholder='Enter the MC_IP' />
<label for='MC_Netmask'>MC_Netmask:</label><input class="Netmask_IP" type='text' id="netmaskip" placeholder='Enter the MC_Netmask' />
<label for='MC_Gateway'>MC_Gateway:</label><input class="Gateway_IP" type='text' id="gatewayip" placeholder='Enter the MC_Gateway' />
<label for='MC'>MC:</label><input class="RBOD_MC" type='text' name='rbod_mc' placeholder='Enter the MC Port' id="rbodmc" />
<label for='SC'>SC:</label><input class="RBOD_SC" type='text' name='rbod_sc' placeholder='Enter the SC Port' id="rbodsc" />
<label for='FU'>FU:</label><input class="RBOD_FU" type='text' name='rbod_fu' placeholder='Enter the FU Port' id="rbodfu" />
<label for='EC'>EC:</label><input class="RBOD_EC" type='text' name='rbod_ec' placeholder='Enter the EC Port' id="rbodec" />
</div>
</div>