/*
* 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 {html, PolymerElement} from '@polymer/polymer/polymer-element.js';
import { clockTreeData } from '../../../shared/shared-script.js';
import { configObj, notificationRef } from '../../../shared/constants.js';

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

  connectedCallback() {
    super.connectedCallback();
    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.psclockdata && configObj.psclockdata.APLL !== 'undefined') {
      const APLL = configObj.psclockdata.APLL;
      configObj['apll'] = {};
      const clkname = configObj['clockname'];
      const refclockObj = configObj['refclockObj'];
      const ref_clk = configObj.psclockdata.refclk && configObj.psclockdata.refclk.APLL ? configObj.psclockdata.refclk.APLL.selected_pll : '';
      if (APLL) {
        configObj['apll']['plldata'] = clockTreeData(APLL, ref_clk, refclockObj, clkname);
        const element = document.createElement('custom-tree');
        element.setAttribute('data-key', 'apll');
        element.setAttribute('data-pkey', 'ps');
        this.$.apllbox.appendChild(element);
        import('../custom_tree.js');
      }
    }
    document.querySelector("#pageloader").style.display = "none";
  }
}

window.customElements.define('apll-tree', ApllTree);