{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import functions.lego_classes as lego_classes\n",
    "from functions.lego_classes import LegoItem\n",
    "from functions.lego_classes import LegoComponent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[<functions.lego_classes.LegoComponent object at 0x000002720F4BF7F0>, <functions.lego_classes.LegoComponent object at 0x000002720F4BF790>]\n"
     ]
    }
   ],
   "source": [
    "# Test manually creating some item and components\n",
    "\n",
    "item1 = LegoItem(1,0.10,10)\n",
    "item2 = LegoItem(3,0.30,30)\n",
    "item3 = LegoItem(2, 0.2,20)\n",
    "\n",
    "\n",
    "\n",
    "component1 = LegoComponent()\n",
    "# component1.add_item(item1)\n",
    "component2 = LegoComponent(item2) \n",
    "\n",
    "componentall = LegoComponent([component1,component2]) # This will be saved as items for some reasaon\n",
    "# component3 = LegoComponent(item3,component1)\n",
    "# component3.add(item2) # Can't really use an item twice\n",
    "# component3.add(component2)\n",
    "print(componentall.items)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Let's test the json stuff\n",
    "import json\n",
    "# import tkinter as tk\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# First level list handling\n",
    "\n",
    "def read_json(file_path):\n",
    "    with open(file_path, 'r') as f:\n",
    "        data = json.load(f)\n",
    "    return data\n",
    "json_list_data = read_json('example_item_data_list.json')\n",
    "# that produces a list, we'd prefer a dict\n",
    "\n",
    "# Clever way to just create an item for each listed element\n",
    "def create_all_items(data):\n",
    "    items = []\n",
    "    for item_data in data:\n",
    "        item_number = item_data.get('item_number')\n",
    "        mass = item_data.get('mass')\n",
    "        delivery_time = item_data.get('delivery_time')\n",
    "        # specific_data = item_data.get('specific_data', {})\n",
    "        item = LegoItem(item_number, mass, delivery_time)\n",
    "        items.append(item)\n",
    "    return items\n",
    "\n",
    "all_items = create_all_items(json_list_data)    \n",
    "\n",
    "# How to get entries for a specific item\n",
    "def get_item_by_number(data, item_number):\n",
    "    datasheet = [item for item in data if item['item_number' ] == item_number] \n",
    "    return datasheet\n",
    "\n",
    "sheet1 = get_item_by_number(json_list_data, 2) # this is a list? meh\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'dict'>\n",
      "{'item_number': 1, 'mass': 10, 'delivery_time': 1}\n"
     ]
    }
   ],
   "source": [
    "# vs first level dict handling\n",
    "\n",
    "with open('example_item_data_dict.json') as json_file:\n",
    "    json_dict = json.load(json_file)\n",
    "    print(type(json_dict))\n",
    "    print(json_dict[\"1\"])\n",
    "\n",
    "sheet2_from_dict = json_dict[\"2\"]\n",
    "# Create an item for this:\n",
    "def create_item_from_sheet(dict):\n",
    "    item_number = dict[\"item_number\"]\n",
    "    mass = dict[\"mass\"]\n",
    "    delivery_time =[\"delivery_time\"]\n",
    "    item = LegoItem(item_number, mass, delivery_time)\n",
    "    return item\n",
    "\n",
    "itemfromdict = create_item_from_sheet(sheet2_from_dict)\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.10.7"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "369f2c481f4da34e4445cda3fffd2e751bd1c4d706f27375911949ba6bb62e1c"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}