/*
* Copyright (c) 2021 Xilinx, Inc.
* 
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 
* associated documentation files (the "Software"), to deal in the Software without restriction, including 
* without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
* copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to 
* the following conditions: 
* 
* The above copyright notice and this permission notice shall be included in all copies or substantial 
* portions of the Software. 
* 
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 
* LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* 
*
*
*/
import { PolymerElement, html } from "../../../../node_modules/@polymer/polymer/polymer-element.js";
import { clockTreeData } from '../../../shared/shared-script.js';
import { configObj, notificationRef } from '../../../shared/constants.js';

class Clkcpmtree extends PolymerElement {
  static get template() {
    return html`
      <style>
        .mt-15p {
          margin-top: 15px;
        }
      </style>
      <div id="pllClk" class="mt-15p"></div>
    `;
  }

  connectedCallback() {
    super.connectedCallback();
    const key = this.getAttribute('displayname');
    const pkey = this.getAttribute('pkey');
    const lckey = key.toLowerCase();
    document.querySelector("#pageloader").style.display = "block";

    if (!MyAppGlobals.boardstatus) {
      notificationRef.setAttribute('text', 'Please connect to board and try again');
      notificationRef.open();
      document.querySelector("#pageloader").style.display = "none";
      return;
    }

    if (configObj && configObj[`${pkey}clockdata`] && configObj[`${pkey}clockdata`][key] !== 'undefined') {
      const clkkey = configObj[`${pkey}clockdata`][key];
      const clkname = configObj['clockname'];
      const refclockObj = configObj['cpmrefclockObj'];
      const ref_clk = configObj[`${pkey}clockdata`].refclk && configObj[`${pkey}clockdata`].refclk.key ? configObj[`${pkey}clockdata`].refclk.key.selected_pll : '';
      configObj[lckey] = {};

      if (clkkey) {
        configObj[lckey]['plldata'] = clockTreeData(clkkey, ref_clk, refclockObj, clkname);
        const element = document.createElement('custom-tree');
        element.setAttribute('data-key', lckey);
        element.setAttribute('data-pkey', pkey);
        this.$.pllClk.appendChild(element);
        import('../custom_tree.js');
      }
    }

    document.querySelector("#pageloader").style.display = "none";
  }

}

window.customElements.define('clkcpm-tree', Clkcpmtree);