Как я могу вывести данные формы в полезную нагрузку (файл yaml), используя javascript? - PullRequest
0 голосов
/ 25 февраля 2020
<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...