{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b4a134ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import the required packages\n",
    "import ipyvuetify as v\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ef68797f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Widgets\n",
    "app = v.App()\n",
    "\n",
    "image = v.Img(\n",
    "    lazy_src=\"https://seeq.com/sites/default/files/seeq-content/seeq-logo-blue-web-33h.svg\",\n",
    "    aspect_ratio=\"16/9\",\n",
    "    width=100,\n",
    "    src=\"https://seeq.com/sites/default/files/seeq-content/seeq-logo-blue-web-33h.svg\",\n",
    ")\n",
    "message = v.Text(\n",
    "    children=[\"Seeq Data Lab Add-on Tool!\"],\n",
    "    style_=\"font-size:25px\"\n",
    ")\n",
    "\n",
    "header = v.Container(children=[image,message])\n",
    "\n",
    "url_input = v.TextField(label='Workbench URL', v_model=None)\n",
    "\n",
    "execute_button = v.Btn(\n",
    "    button_style='success',\n",
    "    children=['Get Signals']\n",
    ")\n",
    "\n",
    "\n",
    "items_dropdown = v.Select(item_text='Name', \n",
    "                          item_value='ID', \n",
    "                          label=\"Select Signal\", \n",
    "                          v_model=None, \n",
    "                          return_object=True\n",
    "                         )\n",
    "items_dropdown.disabled = True\n",
    "\n",
    "add_5_checkbox = v.Checkbox(label='Add 5', v_model=False)\n",
    "add_5_checkbox.disabled = True\n",
    "\n",
    "multiply_3_checkbox = v.Checkbox(label='Multiply by 3', v_model=False)\n",
    "multiply_3_checkbox.disabled = True\n",
    "\n",
    "submit_button = v.Btn(\n",
    "    button_style='success',\n",
    "    children=['Submit'])\n",
    "submit_button.disabled = True\n",
    "\n",
    "input_container = v.Container(children=[url_input,\n",
    "                                        execute_button,\n",
    "                                        items_dropdown,\n",
    "                                        add_5_checkbox,\n",
    "                                        multiply_3_checkbox,\n",
    "                                       submit_button])\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a485050e",
   "metadata": {},
   "outputs": [],
   "source": [
    "#  Actions\n",
    "def get_worksheet_items(*args):\n",
    "   \n",
    "    #Get Items on worksheet\n",
    "    execute_button.loading = True\n",
    "    items = spy.search(url_input.v_model, quiet=True)\n",
    "    signals = items.loc[items.Type.str.contains('Signal')]\n",
    "    dropdown_items = list(signals[['Name','ID']].T.to_dict().values())\n",
    "    items_dropdown.items = dropdown_items\n",
    "    items_dropdown.select = dropdown_items[0]\n",
    "    items_dropdown.disabled=False\n",
    "    submit_button.disabled=False\n",
    "    add_5_checkbox.disabled=False\n",
    "    multiply_3_checkbox.disabled=False\n",
    "    execute_button.loading = False\n",
    "\n",
    "    \n",
    "def submit_formula(*args):\n",
    "    submit_button.loading = True\n",
    "    name = f\"{items_dropdown.v_model['Name']}\"\n",
    "    workbook_id = spy.utils.get_workbook_id_from_url(url_input.v_model)\n",
    "    worksheet_id = spy.utils.get_worksheet_id_from_url(url_input.v_model)\n",
    "    ws = spy.search({'ID':worksheet_id}, quiet=True)\n",
    "    worksheet_name = ws['Name'].iloc[0]\n",
    "    formula = \"$s\"\n",
    "    same_name = True\n",
    "    if multiply_3_checkbox.v_model:\n",
    "        formula += \".multiply(3)\"\n",
    "        name +=' x3 '\n",
    "        same_name = False\n",
    "    if add_5_checkbox.v_model:\n",
    "        formula += \".add(5)\"\n",
    "        name +=' +5'\n",
    "        same_name = False\n",
    "    if same_name :\n",
    "        name +=' Copy'\n",
    "    current_signals = spy.search(url_input.v_model, quiet=True)\n",
    "    new_signal = pd.DataFrame([{\n",
    "    'Name': name,\n",
    "    'Type': 'Signal',\n",
    "    'Formula': formula,\n",
    "    'Formula Parameters': {\n",
    "        '$s': items_dropdown.v_model['ID']\n",
    "    }\n",
    "    }])\n",
    "    metadata = pd.concat([current_signals, new_signal]).reset_index(drop=True)\n",
    "    metadata = metadata.drop_duplicates(subset=['ID'])\n",
    "    spy.push(metadata=metadata[['Name','Type','ID','Formula','Formula Parameters']], \n",
    "             workbook=workbook_id, \n",
    "             worksheet=worksheet_id,\n",
    "             errors='catalog',\n",
    "             quiet=True)\n",
    "    submit_button.loading=False\n",
    "    \n",
    "\n",
    "execute_button.on_event('click',get_worksheet_items)\n",
    "submit_button.on_event('click', submit_formula)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "392c5955",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# Output \n",
    "app.children=[\n",
    "        header,\n",
    "        input_container\n",
    "    ]\n",
    "app"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "74246279",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.17"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
