From 0fccf3ed5452a97cfa453758cec86fa8638e6615 Mon Sep 17 00:00:00 2001 From: ozgurilter <147427263+ozgurilter@users.noreply.github.com> Date: Sat, 9 Mar 2024 18:16:37 +0300 Subject: [PATCH 1/4] Create types_ozgur_ilter.py --- Week02/types_ozgur_ilter.py | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Week02/types_ozgur_ilter.py diff --git a/Week02/types_ozgur_ilter.py b/Week02/types_ozgur_ilter.py new file mode 100644 index 000000000..db26bc456 --- /dev/null +++ b/Week02/types_ozgur_ilter.py @@ -0,0 +1,4 @@ +my_int = 1 +my_float =1.5 +my_bool = True +my_complex = 5i From e3b651704c974ccdf43301b1931c20ca3ee7a607 Mon Sep 17 00:00:00 2001 From: ozgurilter Date: Tue, 4 Jun 2024 14:55:57 +0300 Subject: [PATCH 2/4] Bugbusters --- Projects/Bugbusters | 1 + 1 file changed, 1 insertion(+) create mode 160000 Projects/Bugbusters diff --git a/Projects/Bugbusters b/Projects/Bugbusters new file mode 160000 index 000000000..87de82bb2 --- /dev/null +++ b/Projects/Bugbusters @@ -0,0 +1 @@ +Subproject commit 87de82bb24653778e799a4c7f3893c52e6121f0b From 19815e2a940af48aceb30c07d9861b8eeb732342 Mon Sep 17 00:00:00 2001 From: ozgurilter Date: Tue, 4 Jun 2024 15:08:18 +0300 Subject: [PATCH 3/4] Delete Bugbusters --- Projects/Bugbusters | 1 - 1 file changed, 1 deletion(-) delete mode 160000 Projects/Bugbusters diff --git a/Projects/Bugbusters b/Projects/Bugbusters deleted file mode 160000 index 87de82bb2..000000000 --- a/Projects/Bugbusters +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 87de82bb24653778e799a4c7f3893c52e6121f0b From 0250c7d6052c728338881fcadb7020c15244f05d Mon Sep 17 00:00:00 2001 From: ozgurilter <147427263+ozgurilter@users.noreply.github.com> Date: Fri, 7 Jun 2024 13:43:27 +0300 Subject: [PATCH 4/4] Add Bugbusters --- Projects/Bugbusters/app.py | 449 +++++ Projects/Bugbusters/csv/data.csv | 994 ++++++++++ Projects/Bugbusters/csv/people-100.csv | 101 + Projects/Bugbusters/database/aa.db | Bin 0 -> 45056 bytes Projects/Bugbusters/database/university.db | Bin 0 -> 45056 bytes Projects/Bugbusters/json/university.json | 1 + Projects/Bugbusters/savecsv/university.csv | 994 ++++++++++ .../static/icons/application_go.svg | 1 + .../static/icons/application_link.svg | 1 + .../static/icons/arrow_refresh_small.svg | 1 + .../static/icons/bullet_arrow_bottom.svg | 1 + .../static/icons/bullet_arrow_down.svg | 1 + .../static/icons/bullet_arrow_top.svg | 1 + .../static/icons/bullet_arrow_up.svg | 1 + Projects/Bugbusters/static/icons/cancel.svg | 1 + Projects/Bugbusters/static/icons/cog.svg | 1 + Projects/Bugbusters/static/icons/cog_go.svg | 1 + Projects/Bugbusters/static/icons/cross.svg | 1 + Projects/Bugbusters/static/icons/database.svg | 1 + .../Bugbusters/static/icons/database_add.svg | 1 + .../Bugbusters/static/icons/database_go.svg | 1 + .../Bugbusters/static/icons/database_link.svg | 1 + .../static/icons/database_refresh.svg | 1 + .../Bugbusters/static/icons/database_save.svg | 1 + Projects/Bugbusters/static/icons/edit_cut.svg | 67 + .../Bugbusters/static/icons/find_edit.svg | 478 +++++ Projects/Bugbusters/static/icons/help.svg | 1 + Projects/Bugbusters/static/icons/icons.qrc | 109 ++ .../static/icons/icons8-refresh.svg | 25 + .../Bugbusters/static/icons/indent-solid.svg | 1 + Projects/Bugbusters/static/icons/package.svg | 1 + .../Bugbusters/static/icons/package_go.svg | 1 + .../static/icons/package_rename.svg | 357 ++++ .../Bugbusters/static/icons/package_save.svg | 603 ++++++ .../Bugbusters/static/icons/package_world.svg | 1 + Projects/Bugbusters/static/icons/page_add.svg | 1 + .../Bugbusters/static/icons/page_save.svg | 1 + .../static/icons/page_white_text.svg | 1 + Projects/Bugbusters/static/icons/picture.svg | 1 + .../Bugbusters/static/icons/picture_add.svg | 1 + .../Bugbusters/static/icons/plugin_add.svg | 1 + Projects/Bugbusters/static/icons/printer.svg | 1 + .../Bugbusters/static/icons/server_go.svg | 1 + .../Bugbusters/static/icons/sqlitebrowser.png | Bin 0 -> 15047 bytes Projects/Bugbusters/static/icons/tab_add.svg | 1 + Projects/Bugbusters/static/icons/tag_blue.svg | 1 + .../Bugbusters/static/icons/tag_blue_add.svg | 1 + .../static/icons/tag_blue_delete.svg | 1 + Projects/Bugbusters/static/script.js | 1727 +++++++++++++++++ Projects/Bugbusters/static/style.css | 600 ++++++ Projects/Bugbusters/templates/index.html | 1521 +++++++++++++++ 51 files changed, 8060 insertions(+) create mode 100644 Projects/Bugbusters/app.py create mode 100644 Projects/Bugbusters/csv/data.csv create mode 100644 Projects/Bugbusters/csv/people-100.csv create mode 100644 Projects/Bugbusters/database/aa.db create mode 100644 Projects/Bugbusters/database/university.db create mode 100644 Projects/Bugbusters/json/university.json create mode 100644 Projects/Bugbusters/savecsv/university.csv create mode 100644 Projects/Bugbusters/static/icons/application_go.svg create mode 100644 Projects/Bugbusters/static/icons/application_link.svg create mode 100644 Projects/Bugbusters/static/icons/arrow_refresh_small.svg create mode 100644 Projects/Bugbusters/static/icons/bullet_arrow_bottom.svg create mode 100644 Projects/Bugbusters/static/icons/bullet_arrow_down.svg create mode 100644 Projects/Bugbusters/static/icons/bullet_arrow_top.svg create mode 100644 Projects/Bugbusters/static/icons/bullet_arrow_up.svg create mode 100644 Projects/Bugbusters/static/icons/cancel.svg create mode 100644 Projects/Bugbusters/static/icons/cog.svg create mode 100644 Projects/Bugbusters/static/icons/cog_go.svg create mode 100644 Projects/Bugbusters/static/icons/cross.svg create mode 100644 Projects/Bugbusters/static/icons/database.svg create mode 100644 Projects/Bugbusters/static/icons/database_add.svg create mode 100644 Projects/Bugbusters/static/icons/database_go.svg create mode 100644 Projects/Bugbusters/static/icons/database_link.svg create mode 100644 Projects/Bugbusters/static/icons/database_refresh.svg create mode 100644 Projects/Bugbusters/static/icons/database_save.svg create mode 100644 Projects/Bugbusters/static/icons/edit_cut.svg create mode 100644 Projects/Bugbusters/static/icons/find_edit.svg create mode 100644 Projects/Bugbusters/static/icons/help.svg create mode 100644 Projects/Bugbusters/static/icons/icons.qrc create mode 100644 Projects/Bugbusters/static/icons/icons8-refresh.svg create mode 100644 Projects/Bugbusters/static/icons/indent-solid.svg create mode 100644 Projects/Bugbusters/static/icons/package.svg create mode 100644 Projects/Bugbusters/static/icons/package_go.svg create mode 100644 Projects/Bugbusters/static/icons/package_rename.svg create mode 100644 Projects/Bugbusters/static/icons/package_save.svg create mode 100644 Projects/Bugbusters/static/icons/package_world.svg create mode 100644 Projects/Bugbusters/static/icons/page_add.svg create mode 100644 Projects/Bugbusters/static/icons/page_save.svg create mode 100644 Projects/Bugbusters/static/icons/page_white_text.svg create mode 100644 Projects/Bugbusters/static/icons/picture.svg create mode 100644 Projects/Bugbusters/static/icons/picture_add.svg create mode 100644 Projects/Bugbusters/static/icons/plugin_add.svg create mode 100644 Projects/Bugbusters/static/icons/printer.svg create mode 100644 Projects/Bugbusters/static/icons/server_go.svg create mode 100644 Projects/Bugbusters/static/icons/sqlitebrowser.png create mode 100644 Projects/Bugbusters/static/icons/tab_add.svg create mode 100644 Projects/Bugbusters/static/icons/tag_blue.svg create mode 100644 Projects/Bugbusters/static/icons/tag_blue_add.svg create mode 100644 Projects/Bugbusters/static/icons/tag_blue_delete.svg create mode 100644 Projects/Bugbusters/static/script.js create mode 100644 Projects/Bugbusters/static/style.css create mode 100644 Projects/Bugbusters/templates/index.html diff --git a/Projects/Bugbusters/app.py b/Projects/Bugbusters/app.py new file mode 100644 index 000000000..aeba0d533 --- /dev/null +++ b/Projects/Bugbusters/app.py @@ -0,0 +1,449 @@ +import os +from flask import Flask, render_template, request,jsonify +import sqlite3 +import json, csv +import pandas as pd + +class DBBrowserApp: + def __init__(self, db_file_path=os.path.join(os.getcwd(), 'database'), + db_file_name=None, + csv_file_name = None, + csv_file_path =os.path.join(os.getcwd(), 'csv'), + json_file_path = os.path.join(os.getcwd(), 'json'), + json_file_name = None, + scsv_file_path = os.path.join(os.getcwd(), 'savecsv'), + scsv_file_name = None,): + + self.app = Flask(__name__) + self._db_file_path = db_file_path + self._db_file_name = db_file_name + self._db = None # db açık mı değil mi kontrol etmek için + self._csv_file_name = csv_file_name + self._csv_file_path = csv_file_path + self._json_file_path = json_file_path + self._json_file_name = json_file_name + self._scsv_file_path = scsv_file_path + self._scsv_file_name = scsv_file_name + self.setup_routes() + + def setup_routes(self): + @self.app.route('/') + def index(): + return render_template('index.html') + + @self.app.route('/fileinfo', methods=['GET']) + def get_file_info(): + return {'file_path': self._db_file_path} + + @self.app.route('/save', methods=['POST']) + def save_file(): + data = request.get_json() + self._db_file_path = data.get('file_path') + self._db_file_name = data.get('file_name') + + if not self._db_file_name.endswith(".db"): + self._db_file_name += ".db" + + if self._db_file_path and self._db_file_name: + db_file_path = os.path.join(self._db_file_path, self._db_file_name) + if not os.path.exists(self._db_file_path): + os.makedirs(self._db_file_path) + # with open(db_file_path, 'w') as f: + # pass # boş dosya oluşturulur + conn = sqlite3.connect(db_file_path) + + cursor = conn.cursor() + # Tabloları al + cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") + tables = cursor.fetchall() + table_names = [table[0] for table in tables] + + # Tablolara ait sütun adlarını ve türlerini al + table_columns = {} + for table_name in table_names: + cursor.execute(f"PRAGMA table_info({table_name});") + columns_info = cursor.fetchall() + columns = [{'name': col[1], 'type': col[2]} for col in columns_info] + table_columns[table_name] = columns + + return {'message': 'File saved successfully','tables': table_names, 'table_columns': table_columns}, 201 + else: + return {'error': 'File path or variable error'}, 400 + + @self.app.route('/save-sql', methods=['POST']) # gerek yok gibi + def save_sql(): + data = request.get_json() + sql_query = data.get('sql') + + if self._db_file_name and sql_query: + try: + cursor = self._db_file_name.cursor() + cursor.execute(sql_query) + self._db_file_name.commit() + return jsonify({'message': 'SQL executed and table created successfully'}) + except sqlite3.Error as e: + return jsonify({'error': str(e)}), 400 + else: + return jsonify({'error': 'Invalid SQL query or database connection'}), 400 + + + @self.app.route('/create_table', methods=['POST']) #yeni tablo oluşturulduktan sonra fronta + def create_table(): + data = request.get_json() + sql_query = data.get('sql_query') + db_file_path = os.path.join(self._db_file_path, self._db_file_name) + if not sql_query: + return {'error': 'SQL query is missing'}, 400 + + try: + with sqlite3.connect(db_file_path) as db: + cursor = db.cursor() + cursor.execute(sql_query) + db.commit() + return {'message': 'Table created successfully'}, 201 + except sqlite3.Error as e: + return {'error': str(e)}, 500 + + @self.app.route('/close_database', methods=['POST']) + def close_database(): + if self._db: # Bağlantı kontrolü + try: + self._db.close() + self._db = None + self._db_file_name = None + return jsonify({'message': 'Database successfully closed'}), 200 + except Exception as e: + return jsonify({'error': f'Error closing the database: {str(e)}'}), 500 + else: + return jsonify({'error': 'No database connection to close'}), 400 + + + + @self.app.route('/open_database', methods=['POST']) + def open_database(): + try: + self._db_file_name = request.json.get('file_name') + if not self._db_file_name: + return jsonify({'error': 'No file name provided'}), 400 + if self._db_file_name.endswith('.db'): + conn = os.path.join(self._db_file_path, self._db_file_name) + self._db = sqlite3.connect(conn) # Bağlantıyı self._db içine atayın + cursor = self._db.cursor() + + cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") + tables = cursor.fetchall() + table_names = [table[0] for table in tables] + + table_columns = {} + for table_name in table_names: + cursor.execute(f"PRAGMA table_info({table_name});") + columns_info = cursor.fetchall() + columns = [{'name': col[1], 'type': col[2]} for col in columns_info] + table_columns[table_name] = columns + + return jsonify({'message': 'Database opened successfully', 'tables': table_names, 'table_columns': table_columns}), 200 + else: + return jsonify({'error': 'Invalid file format'}), 400 + except Exception as e: + return jsonify({'error': str(e)}), 500 + + @self.app.route('/execute_sql', methods=['POST']) + def execute_sql(): + try: + # Gelen JSON verisinden SQL sorgusunu alın + sql_query = request.json.get('sql_query', '') + + # Eğer veritabanı bağlantısı yoksa veya SQL sorgusu yoksa hata döndür + if not self._db or not sql_query: + return jsonify({'error': 'Invalid database connection or SQL query'}), 400 + + conn = os.path.join(self._db_file_path, self._db_file_name) + self._db = sqlite3.connect(conn) + # SQL sorgusunu veritabanında çalıştırın + cursor = self._db.cursor() + cursor.execute(sql_query) + result = cursor.fetchall() + + # Sütun adlarını al + column_names = [description[0] for description in cursor.description] + + # Sonucu JSON formatına dönüştürün + result_data = {'column_names': column_names, 'result': result} + + # Sonucu JSON olarak yanıtlayın + return jsonify({'data': result_data}), 200 + except sqlite3.Error as e: + # Bir hata oluşursa, hata mesajını JSON olarak yanıtlayın + return jsonify({'error': str(e)}), 500 + + @self.app.route('/open_csv', methods=['POST']) + def open_csv(): + try: + data = request.get_json() + self._csv_file_name = data.get('csvFile') + print(f"csv_file_name: {self._csv_file_name}") + print(f"csv_file_path: {self._csv_file_path}") + print(f"db_file_path: {self._db_file_path}") + print(f"db_file_name: {self._db_file_name}") + csv_file_path = os.path.join(self._csv_file_path, self._csv_file_name) + + if not os.path.exists(csv_file_path): + return jsonify({'error': 'CSV file not found'}), 400 + + df = pd.read_csv(csv_file_path) + tables = df.values.tolist() + column_names = df.columns.tolist() + preview_data = { + 'column_names': column_names, + 'tables': tables, + 'message': 'CSV file opened successfully' + } + + return jsonify(preview_data), 200 + except Exception as e: + return jsonify({'error': str(e)}), 500 + + @self.app.route('/update_csv_preview', methods=['POST']) + def update_csv_preview(): + try: + data = request.get_json() + self._csv_file_name = data.get('csvFile') + settings = data.get('settings') + csv_file_path = os.path.join(self._csv_file_path, self._csv_file_name) + + if not os.path.exists(csv_file_path): + return jsonify({'error': 'CSV file not found'}), 400 + + column_names_in_first_line = settings.get('columnNamesInFirstLine', True) + field_separator = settings.get('fieldSeparator', ',') + quote_character = settings.get('quoteCharacter', '"') + encoding = settings.get('encoding', 'utf-8') + trim_fields = settings.get('trimFields', False) + + df = pd.read_csv( + csv_file_path, + sep=field_separator, + quotechar=quote_character, + encoding=encoding, + skipinitialspace=trim_fields, + header=0 if column_names_in_first_line else None + ) + + tables = df.values.tolist() + column_names = df.columns.tolist() + + preview_data = { + 'column_names': column_names, + 'tables': tables + } + + return jsonify(preview_data), 200 + except Exception as e: + return jsonify({'error': str(e)}), 500 + + @self.app.route('/add_csv_to_db', methods=['POST']) + def add_csv_to_db(): + data = request.json + table_name = data.get('table_name') + + csv_file_path = os.path.join(self._csv_file_path, self._csv_file_name) + db_file_path = os.path.join(self._db_file_path, self._db_file_name) + print(f"csv_file_path: {csv_file_path}") + print(f"db_file_path: {db_file_path}") + print(f"table_name: {table_name}") + print(f"db dosya yolu: {self._db_file_path}") + print(f"db dosya adı: {self._db_file_name}") + print(f"csv dosya adı: {self._csv_file_name}") + print(f"csv dosya yolu: {self._csv_file_path}") + + if not csv_file_path or not db_file_path or not table_name: + return jsonify({"error": "Missing required parameters"}), 400 + + # Check if CSV file exists + if not os.path.exists(csv_file_path): + return jsonify({"error": "CSV file not found"}), 404 + + # Check if database file exists + if not os.path.exists(db_file_path): + return jsonify({"error": "Database file not found"}), 404 + + try: + # Read the CSV file into a DataFrame + df = pd.read_csv(csv_file_path) + + # Connect to the SQLite database + conn = sqlite3.connect(db_file_path) + cursor = conn.cursor() + + # Create table if it doesn't exist + df.to_sql(table_name, conn, if_exists='replace', index=False) + + conn.commit() + + return jsonify({"message": f"CSV data added to table '{table_name}' in database."}), 200 + except Exception as e: + return jsonify({"error": str(e)}), 500 + + @self.app.route('/show_table', methods=['GET']) + def show_table(): + try: + print(f"db_file_path: {self._db_file_path}") + print(f"db_file_name: {self._db_file_name}") + if not self._db_file_name: + return jsonify({'error': 'No file name provided'}), 400 + if self._db_file_name.endswith('.db'): + # Dosya yolunu oluştur + db_file_path = os.path.join(self._db_file_path, self._db_file_name) + + # Veritabanını aç ve self._db'yi güncelle + self._db = sqlite3.connect(db_file_path) + cursor = self._db.cursor() + cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") + table_names = cursor.fetchall() + + tables_data = {} + + for table in table_names: + table_name = table[0] + + # Get the structure of the table + cursor.execute("PRAGMA table_info({})".format(table_name)) + table_structure = cursor.fetchall() + + # Get column names + columns = [column[1] for column in table_structure] + + # Query the data + cursor.execute('SELECT * FROM {}'.format(table_name)) + data = cursor.fetchall() + + # Store data in a dictionary + tables_data[table_name] = { + 'columns': columns, + 'data': data + } + + return jsonify({'message': 'Tables fetched successfully', 'tables': tables_data}), 200 + else: + return jsonify({'error': 'Invalid file format'}), 400 + except Exception as e: + return jsonify({'error': str(e)}), 500 + + @self.app.route('/get_table_names', methods=['GET']) + def get_table_names(): + try: + if not self._db_file_name: + return jsonify({'error': 'No file name provided'}), 400 + if self._db_file_name.endswith('.db'): + # Dosya yolunu oluştur + db_file_path = os.path.join(self._db_file_path, self._db_file_name) + + # Veritabanını aç ve self._db'yi güncelle + self._db = sqlite3.connect(db_file_path) + cursor = self._db.cursor() + cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") + table_names = cursor.fetchall() + + # Extract table names from the fetched data + table_names = [table[0] for table in table_names] + + return jsonify({'message': 'Table names fetched successfully', 'table_names': table_names}), 200 + else: + return jsonify({'error': 'Invalid file format'}), 400 + except Exception as e: + return jsonify({'error': str(e)}), 500 + + + @self.app.route('/save_json', methods=['POST']) + def save_json(): + try: + # Frontend'den gelen tablo adlarını al + selected_tables = request.json.get("selectedTables") + + # Veritabanı dosyasını aç + db_file_path = os.path.join(self._db_file_path, self._db_file_name) + self._db = sqlite3.connect(db_file_path) + cursor = self._db.cursor() + + # Seçili tabloların verilerini al ve JSON dosyası oluştur + for table_name in selected_tables: + cursor.execute(f"SELECT * FROM {table_name}") + data = cursor.fetchall() + + # JSON dosyasını oluştur + if self._db_file_name.endswith(".db"): + self._json_file_name = f"{self._db_file_name[:-3]}.json" + else: + self._json_file_name = f"{self._db_file_name}.json" + json_file_path = os.path.join(self._json_file_path, self._json_file_name) + + # Sütun adlarını al + cursor.execute(f"PRAGMA table_info({table_name})") + columns_info = cursor.fetchall() + column_names = [col[1] for col in columns_info] + + # JSON verisine sütun adlarını dahil et + json_data = { + "table_name": table_name, + "column_names": column_names, + "data": data + } + # JSON dosyasına yaz + with open(json_file_path, "w") as json_file: + json.dump(json_data, json_file) + + return jsonify({"message": "Data successfully saved as JSON files"}), 200 + + except Exception as e: + # Hata durumunda hatayı dön + return jsonify({"error": str(e)}), 500 + + @self.app.route('/save_csv', methods=['POST']) + def save_csv(): + try: + selected_tables = request.json.get("selectedTables") + + # Veritabanı dosyasını aç + db_file_path = os.path.join(self._db_file_path, self._db_file_name) + self._db = sqlite3.connect(db_file_path) + cursor = self._db.cursor() + + # CSV dosyasını oluştur + if self._db_file_name.endswith(".db"): + self._scsv_file_name = f"{self._db_file_name[:-3]}.csv" + else: + self._scsv_file_name = f"{self._db_file_name}.csv" + csv_file_path = os.path.join(self._scsv_file_path, self._scsv_file_name) + + # Seçili tabloların verilerini al ve CSV dosyasına dönüştür + with open(csv_file_path, mode='w', newline='') as csv_file: + writer = csv.writer(csv_file) + for table_name in selected_tables: + # Tablo verilerini al + cursor.execute(f"SELECT * FROM {table_name}") + table_data = cursor.fetchall() + + # # Tablo başlığını yaz + # writer.writerow([f"Table: {table_name}"]) + + # Tablo verilerini yaz + column_names = [description[0] for description in cursor.description] + writer.writerow(column_names) # Sütun başlıklarını yaz + + for row in table_data: + writer.writerow(row) + + return jsonify({"message": "Data successfully saved as CSV file"}), 200 + + except Exception as e: + # Hata durumunda hatayı dön + return jsonify({"error": str(e)}), 500 + + + + def run(self): + self.app.run(debug=True) + +if __name__ == '__main__': + app = DBBrowserApp() + app.run() \ No newline at end of file diff --git a/Projects/Bugbusters/csv/data.csv b/Projects/Bugbusters/csv/data.csv new file mode 100644 index 000000000..f6bb143e1 --- /dev/null +++ b/Projects/Bugbusters/csv/data.csv @@ -0,0 +1,994 @@ +product,price +Crab - Imitation Flakes,$17.00 +Broom - Push,$28.29 +Muffin - Banana Nut Individual,$24.46 +"Chicken - Leg, Boneless",$19.85 +Ecolab - Hobart Upr Prewash Arm,$20.54 +Island Oasis - Strawberry,$17.62 +Bread - Raisin,$5.57 +Wine - Chateau Timberlay,$29.01 +"Coffee - Colombian, Portioned",$17.84 +Daikon Radish,$18.78 +Paper Cocktail Umberlla 80 - 180,$6.82 +Mushroom - Chanterelle Frozen,$23.84 +"Pepsi, 355 Ml",$22.23 +Chinese Foods - Cantonese,$1.14 +Celery Root,$9.71 +Bacardi Breezer - Strawberry,$12.93 +"Ice - Clear, 300 Lb For Carving",$15.85 +Dried Apple,$6.85 +Scallops - 20/30,$14.59 +Foil Wrap,$24.60 +Buffalo - Tenderloin,$3.61 +Carbonated Water - Blackcherry,$14.55 +Wood Chips - Regular,$21.82 +"Juice - Apple, 1.36l",$26.45 +"Nut - Almond, Blanched, Sliced",$7.82 +Longos - Chicken Cordon Bleu,$8.44 +"Juice - Grape, White",$23.54 +Cheese - Marble,$16.06 +"Mushroom - Shitake, Fresh",$21.60 +Grenadillo,$27.89 +Tarts Assorted,$16.51 +Numi - Assorted Teas,$8.41 +Wine - Puligny Montrachet A.,$6.28 +Dill Weed - Fresh,$24.59 +Tomatoes - Grape,$17.91 +Rosemary - Fresh,$16.54 +Maple Syrup,$6.52 +Longos - Chicken Curried,$26.65 +Cheese - Roquefort Pappillon,$1.93 +External Supplier,$2.16 +"Asparagus - Green, Fresh",$18.18 +Nori Sea Weed,$23.20 +"Wine - Red, Antinori Santa",$5.42 +Hipnotiq Liquor,$20.22 +Blueberries - Frozen,$15.00 +Sprouts - Onion,$12.45 +Okra,$12.82 +Mustard Prepared,$1.08 +Cod - Black Whole Fillet,$26.29 +Butcher Twine 4r,$6.54 +Veal - Kidney,$11.57 +Towels - Paper / Kraft,$13.74 +"Potatoes - Instant, Mashed",$1.98 +Cocoa Powder - Dutched,$1.31 +Fuji Apples,$26.44 +Wine - Baron De Rothschild,$5.22 +Barramundi,$14.08 +Cornstarch,$23.40 +Port - 74 Brights,$12.62 +Cream - 35%,$13.63 +Soup Campbells Split Pea And Ham,$8.82 +Yoplait Drink,$12.21 +Mushroom - Chanterelle Frozen,$25.77 +"Wine - Red, Wolf Blass, Yellow",$23.30 +Food Colouring - Blue,$1.80 +Sprouts - Peppercress,$17.64 +Salt - Sea,$24.32 +Chocolate - Semi Sweet,$12.84 +Rice - 7 Grain Blend,$7.48 +Truffle Shells - White Chocolate,$29.27 +The Pop Shoppe - Cream Soda,$19.72 +"Mushroom - Oyster, Fresh",$12.41 +The Pop Shoppe - Lime Rickey,$21.35 +"Juice - Apple, 341 Ml",$5.90 +Tuna - Loin,$13.30 +Nantucket Orange Juice,$24.91 +Tuna - Yellowfin,$23.23 +"Lamb - Leg, Diced",$12.36 +Chocolate - Chips Compound,$7.77 +Zucchini - Green,$11.30 +Gherkin - Sour,$19.13 +Sole - Fillet,$17.97 +Lettuce - Baby Salad Greens,$23.01 +Toamtoes 6x7 Select,$7.70 +Mace Ground,$24.48 +Wine - Black Tower Qr,$22.37 +Pants Custom Dry Clean,$23.76 +Veal - Leg,$25.48 +"Chocolate - Pistoles, Lactee, Milk",$20.28 +Beans - Butter Lrg Lima,$22.82 +Pepper - Yellow Bell,$27.60 +Bread Roll Foccacia,$11.94 +Muffin - Bran Ind Wrpd,$24.22 +Rye Special Old,$25.71 +Island Oasis - Lemonade,$21.13 +"Soup - Campbells, Butternut",$17.47 +Eggwhite Frozen,$17.63 +Cookie - Dough Variety,$8.36 +Numi - Assorted Teas,$20.33 +Madeira,$16.60 +Wine - Chardonnay South,$5.22 +Jam - Apricot,$1.54 +"Pasta - Lasagna Noodle, Frozen",$13.42 +Fish - Bones,$25.04 +"Pasta - Penne Primavera, Single",$10.14 +"Orange - Canned, Mandarin",$10.73 +Salt - Seasoned,$1.18 +V8 Splash Strawberry Kiwi,$3.58 +Flour - Strong,$7.27 +Cheese - Feta,$17.86 +"Tart Shells - Sweet, 3",$15.20 +"Star Anise, Whole",$10.67 +Pickle - Dill,$29.57 +Cocktail Napkin Blue,$4.26 +Cream Of Tartar,$10.43 +"Pepper - Black, Whole",$11.70 +Icecream - Dstk Super Cone,$8.01 +Salmon - Canned,$25.30 +Beets - Pickled,$3.09 +Wiberg Super Cure,$19.96 +Sausage - Blood Pudding,$7.08 +Dooleys Toffee,$28.64 +Bag Stand,$18.48 +"Pepper - Green, Chili",$12.37 +"Ecolab - Orange Frc, Cleaner",$15.49 +Container - Clear 16 Oz,$24.48 +Salt - Table,$29.27 +Wine - Savigny - Les - Beaune,$17.15 +Miso - Soy Bean Paste,$16.92 +Ginger - Crystalized,$29.76 +Pork - Backfat,$2.97 +Appetizer - Chicken Satay,$23.76 +Sausage - Chorizo,$26.74 +"Extract - Vanilla,artificial",$14.19 +"Pasta - Rotini, Colour, Dry",$13.13 +Cake - Mini Cheesecake,$26.39 +"Wine - Red, Lurton Merlot De",$10.26 +Nantucket Cranberry Juice,$2.75 +Truffle Cups Green,$16.49 +Chips Potato Swt Chilli Sour,$15.89 +"Brandy - Orange, Mc Guiness",$17.18 +Jameson - Irish Whiskey,$5.34 +Chocolate - Dark,$9.40 +Strawberries - California,$22.26 +Sage - Ground,$9.12 +Table Cloth 54x72 Colour,$24.52 +Soup - Campbells Beef Stew,$20.37 +Wine - Vidal Icewine Magnotta,$10.80 +Calypso - Strawberry Lemonade,$21.32 +Spinach - Spinach Leaf,$2.99 +Veal - Heart,$18.58 +"Yogurt - Cherry, 175 Gr",$21.29 +Veal - Liver,$9.98 +Foil Wrap,$3.66 +Smoked Tongue,$11.06 +Veal - Striploin,$7.80 +Creme De Cacao Mcguines,$24.02 +Beans - Butter Lrg Lima,$17.34 +Pork - Inside,$27.87 +"Basil - Primerba, Paste",$22.98 +Pie Pecan,$9.34 +Bread - Raisin Walnut Oval,$5.55 +"Wine - Magnotta - Red, Baco",$3.15 +"Beef - Tenderlion, Center Cut",$5.95 +Sherbet - Raspberry,$25.05 +True - Vue Containers,$17.47 +Stainless Steel Cleaner Vision,$4.89 +Beef - Inside Round,$24.82 +Bacardi Breezer - Strawberry,$21.23 +Appetizer - Tarragon Chicken,$9.72 +Tea - Herbal - 6 Asst,$25.09 +Vodka - Moskovskaya,$27.30 +"Cheese - Romano, Grated",$19.72 +Dc - Sakura Fu,$20.07 +Urban Zen Drinks,$19.52 +Wine - Gato Negro Cabernet,$20.17 +Rootbeer,$9.98 +Creme De Menth - White,$11.98 +Beer - Molson Excel,$20.22 +"Rice Pilaf, Dry,package",$9.51 +Nougat - Paste / Cream,$20.53 +Wine - Pinot Noir Pond Haddock,$19.83 +Corn Syrup,$27.68 +Bandage - Flexible Neon,$26.09 +Chocolate - White,$1.26 +Dasheen,$22.40 +Mushroom - Lg - Cello,$27.01 +"Bread - Pullman, Sliced",$29.62 +French Kiss Vanilla,$5.08 +"Tart Shells - Sweet, 4",$26.89 +Tuna - Sushi Grade,$8.29 +"Bread - Dark Rye, Loaf",$12.93 +Water - Evian 355 Ml,$5.02 +"Veal - Leg, Provimi - 50 Lb Max",$1.49 +Salmon Steak - Cohoe 8 Oz,$20.80 +"Jam - Strawberry, 20 Ml Jar",$4.77 +"Wine - White, Pinot Grigio",$7.99 +"Cheese - Boursin, Garlic / Herbs",$20.55 +Chicken - Livers,$9.44 +Bay Leaf,$8.60 +Cake - Box Window 10x10x2.5,$15.14 +Flour - Fast / Rapid,$11.97 +Cups 10oz Trans,$20.10 +Parsley - Fresh,$20.62 +"Mushrooms - Black, Dried",$4.18 +Wine - Chardonnay Mondavi,$3.45 +Curry Powder,$29.67 +Bag Stand,$2.65 +Muffin - Mix - Bran And Maple 15l,$17.44 +Tea - Jasmin Green,$20.74 +Beer - True North Lager,$5.08 +Raisin - Golden,$10.98 +Raspberries - Fresh,$1.34 +"Rum - Coconut, Malibu",$11.54 +"Nut - Walnut, Chopped",$10.64 +Lettuce - Baby Salad Greens,$23.88 +Salt - Seasoned,$26.89 +Wine - Valpolicella Masi,$12.92 +"Pepper - Green, Chili",$24.05 +"Ecolab - Orange Frc, Cleaner",$28.09 +Water - Green Tea Refresher,$25.71 +Vol Au Vents,$6.36 +Sauce - Plum,$22.61 +Wine - Fino Tio Pepe Gonzalez,$10.31 +"Leeks - Baby, White",$1.31 +"Crush - Grape, 355 Ml",$21.60 +Calypso - Pineapple Passion,$18.53 +Onions - Vidalia,$13.84 +Beef - Shank,$17.98 +"Nut - Peanut, Roasted",$22.05 +Tomatoes - Hot House,$24.74 +Muffin Mix - Oatmeal,$4.87 +"Soup - Canadian Pea, Dry Mix",$15.35 +Bread - Granary Small Pull,$22.03 +Longos - Grilled Veg Sandwiches,$8.69 +Soup Campbells Mexicali Tortilla,$6.93 +Beef Flat Iron Steak,$10.34 +Vinegar - White,$2.68 +Cinnamon - Stick,$18.69 +Mousse - Banana Chocolate,$6.55 +Ecolab Crystal Fusion,$20.05 +Wood Chips - Regular,$9.36 +Pork - Back Ribs,$4.63 +Lambcasing,$21.20 +Croissants Thaw And Serve,$12.16 +"Bread - Dark Rye, Loaf",$27.37 +"Bread - Sticks, Thin, Plain",$20.20 +"Olives - Black, Pitted",$9.41 +Corn Kernels - Frozen,$14.73 +Godiva White Chocolate,$29.98 +"Pepper - White, Ground",$24.42 +Chocolate Bar - Smarties,$27.57 +Orange Roughy 4/6 Oz,$28.22 +Teriyaki Sauce,$17.25 +Piping Jelly - All Colours,$18.74 +Chicken Thigh - Bone Out,$24.30 +Lobster - Tail 6 Oz,$25.06 +"Nestea - Ice Tea, Diet",$26.90 +"Pork - Butt, Boneless",$9.67 +"Zucchini - Mini, Green",$28.53 +"Pork - Tenderloin, Frozen",$27.90 +Turkey Leg With Drum And Thigh,$16.40 +"Nut - Almond, Blanched, Whole",$24.85 +Puree - Raspberry,$15.95 +Foam Espresso Cup Plain White,$13.51 +"Cherries - Maraschino,jar",$9.04 +Pie Shell - 9,$11.30 +Soup Campbells,$6.35 +Sole - Fillet,$20.02 +Chevere Logs,$17.75 +Cheese Cloth No 60,$4.86 +Longos - Burritos,$11.96 +Beef - Inside Round,$10.29 +Raisin - Golden,$25.48 +"Veal - Round, Eye Of",$9.48 +"Oil - Truffle, Black",$2.42 +Cheese - Sheep Milk,$16.80 +Tart - Raisin And Pecan,$28.89 +Bread - Raisin,$15.71 +Ice Cream - Fudge Bars,$6.98 +Squid - Breaded,$1.38 +Cinnamon - Ground,$7.24 +Shrimp - 100 / 200 Cold Water,$9.88 +"Ecolab - Orange Frc, Cleaner",$9.99 +Tea - Lemon Scented,$26.02 +Tahini Paste,$25.15 +Beer - True North Lager,$28.08 +Cookie Trail Mix,$3.82 +Pastry - Cherry Danish - Mini,$20.03 +Pastry - Baked Scones - Mini,$12.44 +Sprouts - Peppercress,$27.49 +Marjoram - Fresh,$20.44 +Island Oasis - Sweet And Sour Mix,$29.90 +Honey - Lavender,$19.71 +"Wine - Red, Pelee Island Merlot",$25.75 +Cabbage - Green,$15.18 +Mayonnaise,$3.91 +"Pepsi, 355 Ml",$13.30 +"Crush - Grape, 355 Ml",$1.13 +Table Cloth 62x114 Colour,$8.27 +"Wine - Red, Pelee Island Merlot",$22.97 +Wine - Ice Wine,$15.68 +Lime Cordial - Roses,$5.25 +Soup - Campbellschix Stew,$11.80 +Gelatine Leaves - Envelopes,$12.70 +Mousse - Passion Fruit,$28.55 +Yoplait Drink,$5.83 +"Salt - Rock, Course",$8.86 +Pastry - Plain Baked Croissant,$15.04 +"Napkin - Cocktail,beige 2 - Ply",$29.47 +Bag Stand,$26.26 +Yeast Dry - Fleischman,$27.98 +"Mushroom - Enoki, Dry",$5.41 +Cake - Cheese Cake 9 Inch,$22.62 +Dried Peach,$20.75 +"Wine - Red, Concha Y Toro",$2.24 +Grapefruit - White,$5.92 +"Rum - Light, Captain Morgan",$2.98 +Sandwich Wrap,$8.04 +Salt And Pepper Mix - White,$10.76 +Salmon - Canned,$12.61 +Cheese - Mozzarella,$7.80 +Muffin - Mix - Creme Brule 15l,$23.48 +Carbonated Water - Strawberry,$7.70 +Flour - Chickpea,$9.31 +Versatainer Nc - 9388,$8.72 +Ketchup - Tomato,$6.76 +Ice Cream Bar - Oreo Cone,$16.69 +Bread Crumbs - Japanese Style,$15.85 +"Artichoke - Bottom, Canned",$29.10 +"Cherries - Bing, Canned",$1.42 +Icecream Cone - Areo Chocolate,$3.89 +Shrimp - Black Tiger 6 - 8,$3.82 +Versatainer Nc - 9388,$5.16 +Lamb Tenderloin Nz Fr,$12.12 +"Pork - Sausage, Medium",$25.39 +Wine - Cave Springs Dry Riesling,$25.83 +Wine - Delicato Merlot,$20.83 +Grapefruit - White,$2.48 +Food Colouring - Red,$20.34 +"Nut - Hazelnut, Whole",$17.48 +Croissants Thaw And Serve,$22.59 +Ocean Spray - Ruby Red,$4.66 +"Beef - Kindney, Whole",$25.38 +Boogies,$7.25 +Cloves - Whole,$6.45 +Cheese - Bocconcini,$17.58 +Broom - Angled,$9.20 +Pail For Lid 1537,$26.12 +Pepper - Green,$20.26 +Cheese - Perron Cheddar,$2.44 +Sausage - Meat,$15.94 +Squash - Guords,$24.78 +Grapes - Red,$21.85 +Longos - Grilled Chicken With,$28.64 +Beef - Flank Steak,$3.33 +Salad Dressing,$1.53 +Cup - Translucent 7 Oz Clear,$3.55 +Ecolab - Medallion,$21.66 +Icecream Bar - Del Monte,$19.25 +Lobak,$9.26 +Nantucket - Orange Mango Cktl,$14.26 +Curry Powder Madras,$24.80 +Table Cloth 90x90 White,$20.67 +Beef - Ground Medium,$11.55 +Breakfast Quesadillas,$10.85 +Oil - Peanut,$14.35 +Truffle Cups Green,$24.46 +Galliano,$18.22 +"Nut - Walnut, Chopped",$13.55 +Wine - Trimbach Pinot Blanc,$20.78 +Bagels Poppyseed,$22.36 +Jolt Cola - Red Eye,$9.43 +"Wine - Magnotta, Merlot Sr Vqa",$6.20 +"Sprite, Diet - 355ml",$2.70 +Smoked Paprika,$9.67 +Meldea Green Tea Liquor,$14.60 +Carbonated Water - Lemon Lime,$3.83 +Filo Dough,$10.86 +Rice - Aborio,$9.61 +Filter - Coffee,$19.95 +Absolut Citron,$6.62 +Pastry - Apple Large,$22.34 +"Tomatoes - Vine Ripe, Yellow",$24.06 +Shichimi Togarashi Peppeers,$14.64 +Soupfoamcont12oz 112con,$15.85 +Bagel - Ched Chs Presliced,$17.43 +Ecolab Silver Fusion,$6.12 +Wine - Kwv Chenin Blanc South,$25.02 +Pate - Peppercorn,$7.45 +Lemon Tarts,$27.38 +"Wine - White, Lindemans Bin 95",$19.74 +Wine - Riesling Dr. Pauly,$12.87 +Maple Syrup,$5.48 +Beer - Blue,$29.70 +Bagelers,$6.78 +Puree - Passion Fruit,$1.35 +"Veal - Brisket, Provimi, Bone - In",$21.50 +Mustard Prepared,$23.25 +Bar Mix - Lime,$6.30 +Nacho Chips,$14.67 +"Beef - Rib Roast, Capless",$22.55 +Wine - Ej Gallo Sierra Valley,$18.14 +Bread - Bistro White,$2.18 +Flavouring - Orange,$11.65 +Otomegusa Dashi Konbu,$21.36 +Cheese - Goat With Herbs,$6.96 +Yoplait Drink,$7.61 +Nantucket - Carrot Orange,$4.58 +Bread - Malt,$18.94 +"Nut - Pine Nuts, Whole",$15.72 +Cabbage - Green,$21.13 +Piping - Bags Quizna,$25.75 +Glaze - Apricot,$26.20 +"Soup - Cream Of Broccoli, Dry",$2.96 +Beef Dry Aged Tenderloin Aaa,$14.05 +Veal - Inside,$27.43 +"Soup - Campbells, Chix Gumbo",$11.77 +Creme De Banane - Marie,$4.47 +Island Oasis - Wildberry,$20.87 +Peach - Halves,$18.85 +"Wine - Red, Harrow Estates, Cab",$6.02 +Basil - Pesto Sauce,$5.44 +Wine - Riesling Alsace Ac 2001,$8.43 +Wine - Penfolds Koonuga Hill,$28.95 +Pastry - French Mini Assorted,$11.66 +Broom Handle,$5.12 +Pasta - Canelloni,$4.58 +Cafe Royale,$17.75 +Scallops - U - 10,$14.59 +Nantucket Apple Juice,$24.95 +Rice Paper,$16.86 +"Cheese - Cheddar, Medium",$2.02 +"Beans - Black Bean, Preserved",$15.71 +Island Oasis - Sweet And Sour Mix,$20.67 +Chocolate Bar - Smarties,$6.59 +Tequila Rose Cream Liquor,$25.89 +Macaroons - Two Bite Choc,$23.66 +Cheese - Pied De Vents,$20.42 +Beer - Mcauslan Apricot,$2.14 +"Oranges - Navel, 72",$20.16 +Basil - Thai,$29.34 +Tea - Jasmin Green,$12.96 +Wine - Kwv Chenin Blanc South,$7.38 +Chick Peas - Canned,$1.98 +Cheese - Blue,$20.39 +Pike - Frozen Fillet,$26.59 +Wine - Sogrape Mateus Rose,$16.19 +Sugar - Brown,$10.03 +Muffin Batt - Blueberry Passion,$8.24 +Pasta - Fusili Tri - Coloured,$18.86 +Mussels - Frozen,$8.72 +Pastry - Baked Scones - Mini,$24.65 +Appetizer - Smoked Salmon / Dill,$5.87 +"Vermacelli - Sprinkles, Assorted",$2.86 +Lettuce - Boston Bib,$18.99 +Lamb Shoulder Boneless Nz,$6.45 +Smoked Paprika,$29.24 +Bread - Corn Muffaletta,$7.00 +Table Cloth 62x114 Colour,$7.88 +Pie Shell - 9,$24.52 +Beer - Pilsner Urquell,$10.84 +Tart - Lemon,$26.59 +Potatoes - Mini White 3 Oz,$15.08 +Flour - All Purpose,$27.47 +Tomato - Tricolor Cherry,$20.91 +Yukon Jack,$22.06 +"Mustard - Dry, Powder",$6.15 +"Brownies - Two Bite, Chocolate",$2.09 +Wine - Chateau Bonnet,$11.49 +Wine - Semi Dry Riesling Vineland,$15.51 +Compound - Orange,$23.55 +"Carrots - Mini, Stem On",$22.62 +Chip - Potato Dill Pickle,$23.93 +Sprouts - Onion,$16.77 +Yogurt - French Vanilla,$26.49 +Cookies - Assorted,$25.18 +Bread Crumbs - Panko,$1.16 +Tomatoes - Orange,$26.27 +"Pasta - Fett Alfredo, Single Serve",$15.73 +Cookie - Oreo 100x2,$5.57 +Vol Au Vents,$15.88 +Sausage - Andouille,$4.95 +Bar - Granola Trail Mix Fruit Nut,$22.28 +Soup - Base Broth Chix,$17.66 +Juice - Orangina,$17.40 +Appetizer - Chicken Satay,$12.54 +Sausage - Andouille,$26.45 +"Pepper - Chillies, Crushed",$22.92 +Beans - Butter Lrg Lima,$29.95 +"Cheese - Romano, Grated",$9.78 +Cake - Dulce De Leche,$28.67 +Pancetta,$5.05 +Bok Choy - Baby,$9.06 +Langers - Mango Nectar,$25.97 +Ginsing - Fresh,$17.62 +Lobster - Live,$11.61 +Wine - Hardys Bankside Shiraz,$5.60 +Cinnamon - Ground,$25.83 +Water Chestnut - Canned,$5.22 +"Turkey - Breast, Boneless Sk On",$17.72 +Onions - Red,$9.74 +Rolled Oats,$3.71 +Momiji Oroshi Chili Sauce,$28.11 +Oil - Hazelnut,$29.50 +Plate Pie Foil,$15.84 +Wine - Manischewitz Concord,$13.05 +"Pesto - Primerba, Paste",$17.88 +Uniform Linen Charge,$17.44 +Cilantro / Coriander - Fresh,$10.64 +Curry Powder,$5.32 +"Lamb - Leg, Boneless",$9.58 +Lemons,$26.27 +Cheese - Bakers Cream Cheese,$15.30 +Pie Pecan,$15.12 +Wine - Zonnebloem Pinotage,$27.19 +"Radish - Black, Winter, Organic",$10.86 +"Artichoke - Bottom, Canned",$23.33 +Chicken - White Meat With Tender,$15.59 +"Oil - Truffle, Black",$16.96 +Pork - Ground,$6.60 +Pickles - Gherkins,$5.09 +Cardamon Ground,$18.79 +Potatoes - Idaho 100 Count,$7.08 +Pork - Back Ribs,$24.34 +Pomello,$22.91 +Cinnamon Rolls,$12.11 +Halibut - Steaks,$5.16 +"Soup - Knorr, French Onion",$22.61 +Spinach - Baby,$21.54 +Dome Lid Clear P92008h,$8.52 +Butter - Unsalted,$29.40 +"Pork - Loin, Bone - In",$18.91 +Cake - Cake Sheet Macaroon,$8.88 +Icecream - Dstk Strw Chseck,$18.02 +Wine - Casablanca Valley,$14.32 +Fenngreek Seed,$28.61 +"Beef - Baby, Liver",$12.61 +Veal - Osso Bucco,$1.39 +Wine - Chablis J Moreau Et Fils,$15.67 +Eggplant Oriental,$26.65 +Sausage - Blood Pudding,$11.82 +Dc Hikiage Hira Huba,$26.51 +Cinnamon - Stick,$14.96 +Flour - Teff,$2.56 +"Nut - Almond, Blanched, Whole",$5.15 +Langers - Cranberry Cocktail,$22.14 +Sugar - Splenda Sweetener,$12.54 +Grapes - Red,$14.70 +Cleaner - Lime Away,$25.14 +Beef - Top Sirloin,$26.94 +Corn Kernels - Frozen,$1.51 +Longos - Cheese Tortellini,$28.22 +Jack Daniels,$27.04 +Cake - French Pear Tart,$10.59 +Chocolate - Feathers,$7.08 +"Ranchero - Primerba, Paste",$6.01 +Food Colouring - Green,$9.20 +Sauce - Rosee,$11.26 +Sausage - Meat,$1.76 +Soup - Campbells Beef Noodle,$15.09 +Coffee - Egg Nog Capuccino,$8.98 +"Tendrils - Baby Pea, Organic",$17.99 +Tomatoes - Yellow Hot House,$9.43 +Mushroom - Porcini Frozen,$12.46 +Cookie Dough - Oatmeal Rasin,$7.55 +Juice - Mango,$15.57 +Initation Crab Meat,$19.70 +Wine - Bouchard La Vignee Pinot,$27.49 +"Yogurt - Cherry, 175 Gr",$12.58 +"Juice - Tomato, 10 Oz",$28.32 +Cake Sheet Combo Party Pack,$15.47 +Quiche Assorted,$20.16 +Pork - Backfat,$26.04 +Beer - Sleemans Cream Ale,$13.66 +Wine - Masi Valpolocell,$23.26 +Seabream Whole Farmed,$3.08 +Horseradish - Prepared,$16.20 +"Zucchini - Mini, Green",$24.67 +Langers - Mango Nectar,$16.86 +Lid - 0090 Clear,$11.22 +Canada Dry,$10.27 +Island Oasis - Mango Daiquiri,$5.26 +Steel Wool S.o.s,$9.86 +Oil - Safflower,$2.09 +Grenadine,$5.44 +Breadfruit,$9.23 +"Wine - Red, Harrow Estates, Cab",$6.50 +Dc - Frozen Momji,$11.49 +"Wine - White, Schroder And Schyl",$25.72 +"Cherries - Maraschino,jar",$14.40 +Muffin Hinge Container 6,$20.66 +Kiwano,$9.17 +Ecolab - Power Fusion,$24.56 +Ice Cream Bar - Rolo Cone,$14.52 +Silicone Paper 16.5x24,$24.19 +Pear - Asian,$21.09 +Appetizer - Sausage Rolls,$14.36 +Coffee Cup 12oz 5342cd,$22.71 +Mushrooms - Honey,$4.96 +Soup - French Can Pea,$4.62 +"Lettuce - Romaine, Heart",$21.24 +"Nut - Pine Nuts, Whole",$22.91 +Lamb - Loin Chops,$13.86 +Broom - Angled,$23.51 +Cod - Fillets,$4.73 +"Beans - Black Bean, Canned",$9.67 +Pie Filling - Apple,$6.48 +Wine - Chateau Aqueria Tavel,$26.83 +Eggplant - Asian,$1.80 +V8 - Vegetable Cocktail,$11.92 +Appetizer - Lobster Phyllo Roll,$29.16 +Ocean Spray - Kiwi Strawberry,$13.85 +Wine - Casablanca Valley,$13.81 +Gelatine Leaves - Envelopes,$18.05 +"Wine - White, Pelee Island",$12.19 +Sour Puss Raspberry,$27.60 +Cheese - Comte,$28.51 +"Corn - Cream, Canned",$2.37 +Pork Casing,$29.08 +Onions - Cooking,$21.23 +Spinach - Spinach Leaf,$27.21 +Flower - Leather Leaf Fern,$15.57 +Sauce - Sesame Thai Dressing,$27.73 +Flour - Masa De Harina Mexican,$20.78 +"Vodka - Lemon, Absolut",$18.42 +"Cheese - Brie, Triple Creme",$8.31 +"Soup - Campbells, Lentil",$4.97 +Sauce - Chili,$19.59 +"Mushroom - Trumpet, Dry",$25.92 +Oil - Olive Bertolli,$13.36 +Muffin Carrot - Individual,$3.07 +Wine - Pinot Noir Pond Haddock,$29.43 +Apple - Custard,$20.41 +Bar Nature Valley,$16.76 +V8 Splash Strawberry Banana,$2.85 +Cognac - Courvaisier,$3.05 +Cheese - Comte,$4.09 +Vinegar - White Wine,$20.93 +Lighter - Bbq,$23.36 +Wine - Fume Blanc Fetzer,$20.59 +Cleaner - Lime Away,$8.06 +Worcestershire Sauce,$18.51 +Bouillion - Fish,$2.65 +Juice - Lemon,$4.57 +Guinea Fowl,$8.85 +Mix Pina Colada,$8.43 +Milk - Homo,$13.28 +Tomato - Green,$7.56 +Sterno - Chafing Dish Fuel,$7.23 +Beef - Tenderloin Tails,$23.15 +"Beans - Black Bean, Canned",$20.43 +Vinegar - White,$25.05 +Spic And Span All Purpose,$5.25 +Fudge - Cream Fudge,$18.61 +Lid - 3oz Med Rec,$1.46 +Juice - Happy Planet,$18.07 +Rice - Sushi,$5.46 +Wine - White Cab Sauv.on,$29.48 +Basil - Thai,$6.26 +Muffin - Mix - Creme Brule 15l,$8.86 +Longos - Grilled Chicken With,$12.13 +Ginger - Pickled,$2.26 +Wine - Magnotta - Bel Paese White,$10.02 +Cranberry Foccacia,$6.39 +"Cod - Salted, Boneless",$5.07 +Chicken - Soup Base,$15.41 +Wine - Duboeuf Beaujolais,$18.95 +Wine - Clavet Saint Emilion,$23.39 +Wine - Vovray Sec Domaine Huet,$16.59 +Blackberries,$1.55 +Cocoa Feuilletine,$14.68 +"Tart Shells - Savory, 2",$27.71 +Island Oasis - Ice Cream Mix,$6.46 +Bread - Granary Small Pull,$9.98 +Beef Striploin Aaa,$25.68 +"Thyme - Lemon, Fresh",$22.30 +Pop - Club Soda Can,$5.43 +Wine - Cotes Du Rhone Parallele,$25.57 +"Pepper - Julienne, Frozen",$23.95 +Cod - Fillets,$16.08 +"Pepper - Black, Ground",$4.72 +Daikon Radish,$10.56 +Pear - Halves,$9.70 +Cheese - Asiago,$13.54 +Pail With Metal Handle 16l White,$7.08 +"Cherries - Maraschino,jar",$25.40 +Oil - Margarine,$4.54 +Curry Powder,$5.02 +Coffee - 10oz Cup 92961,$11.15 +Stainless Steel Cleaner Vision,$14.55 +Remy Red,$17.83 +"Yogurt - Peach, 175 Gr",$17.30 +Langers - Cranberry Cocktail,$9.92 +Ocean Spray - Kiwi Strawberry,$29.03 +"Beef - Rouladin, Sliced",$26.45 +Ice Cream Bar - Oreo Sandwich,$6.43 +Beans - Green,$11.33 +Dc - Frozen Momji,$26.97 +"Juice - Apple, 341 Ml",$29.87 +Lid Tray - 12in Dome,$23.16 +Muffin Batt - Ban Dream Zero,$27.19 +Trout Rainbow Whole,$15.00 +Soup - Campbells - Chicken Noodle,$21.60 +"Cake Circle, Foil, Scallop",$5.37 +Coffee - Espresso,$2.82 +"Sauce - White, Mix",$21.36 +"Flour - Buckwheat, Dark",$11.20 +Wooden Mop Handle,$7.19 +Wine - Soave Folonari,$14.87 +Appetizer - Seafood Assortment,$7.70 +Vaccum Bag - 14x20,$25.42 +Bowl 12 Oz - Showcase 92012,$15.50 +Lettuce - Radicchio,$22.99 +Magnotta - Bel Paese White,$29.30 +"Tomatoes - Plum, Canned",$26.63 +"Coffee - Beans, Whole",$11.87 +Yeast Dry - Fermipan,$9.00 +"Juice - Apple, 1.36l",$1.55 +Carbonated Water - Strawberry,$13.42 +"Lamb - Leg, Bone In",$22.00 +Star Fruit,$5.87 +"Pepper - Black, Crushed",$25.41 +Lobster - Tail 6 Oz,$17.94 +Wine - Vovray Sec Domaine Huet,$2.67 +"Tart Shells - Savory, 4",$7.71 +Trout Rainbow Whole,$2.20 +"Melon - Watermelon, Seedless",$21.26 +Apron,$8.53 +"Beer - Alexander Kieths, Pale Ale",$1.91 +Sauce - Thousand Island,$17.12 +Galliano,$12.70 +Apple - Macintosh,$5.64 +Rice - Aborio,$8.09 +"Wine - Red, Lurton Merlot De",$6.52 +"Lid - High Heat, Super Clear",$13.60 +"Bread - Sticks, Thin, Plain",$29.97 +"Bread - Pullman, Sliced",$4.80 +Russian Prince,$2.80 +"Chocolate - Pistoles, White",$15.87 +Lobster - Cooked,$17.81 +Lamb - Rack,$2.92 +Clam - Cherrystone,$4.71 +Lettuce - Lambs Mash,$13.66 +Tea - Camomele,$12.22 +"Sauce - Bernaise, Mix",$11.24 +Puree - Kiwi,$17.34 +Star Fruit,$11.76 +Bread - Pumpernickel,$29.19 +Veal - Sweetbread,$1.84 +Sponge Cake Mix - Chocolate,$4.01 +Appetizer - Southwestern,$4.32 +"Trout - Rainbow, Fresh",$2.20 +Cookie Dough - Peanut Butter,$7.01 +Muffin - Banana Nut Individual,$21.39 +Milk - 2% 250 Ml,$14.36 +"Sugar - Brown, Individual",$9.23 +Heavy Duty Dust Pan,$7.72 +Cheese - Marble,$17.48 +Paste - Black Olive,$19.88 +Pizza Pizza Dough,$15.31 +Pastry - Key Limepoppy Seed Tea,$4.76 +Pears - Bartlett,$6.25 +Blueberries,$8.24 +Bread Fig And Almond,$25.00 +Lumpfish Black,$14.08 +Ginsing - Fresh,$4.98 +Langers - Cranberry Cocktail,$1.32 +Bagel - Whole White Sesame,$7.49 +Cookies - Englishbay Chochip,$12.42 +Pepper Squash,$13.36 +"Cookies - Oreo, 4 Pack",$29.46 +Kiwi,$25.45 +"Wine - White, Riesling, Henry Of",$15.13 +Iced Tea Concentrate,$29.85 +Oil - Sesame,$24.38 +Pepper - Red Chili,$3.45 +Tuna - Sushi Grade,$21.55 +"Bread - Dark Rye, Loaf",$23.14 +"Wine - Red, Lurton Merlot De",$5.73 +Orange Roughy 6/8 Oz,$25.02 +Sole - Fillet,$1.28 +Beef - Top Butt,$22.28 +"Bread - Roll, Canadian Dinner",$5.41 +Wine - Conde De Valdemar,$13.14 +"Wine - White, Schroder And Schyl",$28.28 +Foil - Round Foil,$28.54 +Cod - Fillets,$9.95 +Shallots,$29.40 +Rum - Mount Gay Eclipes,$3.31 +Pastry - Trippleberry Muffin - Mini,$20.82 +Rabbit - Whole,$21.81 +"Soup - Campbells, Beef Barley",$6.30 +Kippers - Smoked,$2.71 +Steam Pan - Half Size Deep,$23.76 +Cleaner - Bleach,$14.20 +Flour Dark Rye,$13.35 +"Pasta - Lasagna, Dry",$1.68 +Cheese - Oka,$21.24 +Croissants Thaw And Serve,$23.58 +Wine - Sake,$7.61 +Chocolate - Mi - Amere Semi,$27.91 +Foie Gras,$9.22 +Juice - Ocean Spray Cranberry,$25.23 +Veal - Heart,$15.31 +Pepper - Chili Powder,$15.81 +Beer - Original Organic Lager,$3.88 +Phyllo Dough,$3.10 +Wine - Prosecco Valdobiaddene,$24.38 +Remy Red Berry Infusion,$21.15 +Cotton Wet Mop 16 Oz,$19.46 +Wine - Spumante Bambino White,$7.29 +Filter - Coffee,$25.11 +Sour Puss Sour Apple,$27.71 +Puree - Blackcurrant,$8.34 +Cheese - Swiss,$12.59 +Wine - Savigny - Les - Beaune,$10.80 +Salad Dressing,$14.07 +Spice - Montreal Steak Spice,$18.74 +"Fish - Soup Base, Bouillon",$11.73 +Relish,$29.57 +Chips Potato Swt Chilli Sour,$6.54 +Foam Cup 6 Oz,$9.81 +Lettuce - Boston Bib - Organic,$21.07 +Sponge Cake Mix - Vanilla,$9.83 +Beef - Top Butt,$6.01 +Horseradish Root,$22.04 +Tandoori Curry Paste,$24.11 +Lettuce - Curly Endive,$6.58 +"Soup - Knorr, Chicken Noodle",$16.75 +"Wine - Red, Mouton Cadet",$21.74 +Bar Energy Chocchip,$29.31 +Smirnoff Green Apple Twist,$14.72 +Bacardi Limon,$21.52 +Beef Cheek Fresh,$12.15 +Gherkin,$29.31 +Lettuce - Boston Bib - Organic,$16.43 +"Pork - Back, Short Cut, Boneless",$11.44 +Sauce - Sesame Thai Dressing,$26.79 +Oven Mitts 17 Inch,$25.19 +Langers - Ruby Red Grapfruit,$29.79 +Nantucket - Orange Mango Cktl,$3.01 +Wine - Manischewitz Concord,$14.33 +Bread - Assorted Rolls,$17.89 +Soup Campbells Mexicali Tortilla,$20.66 +"Crab - Claws, 26 - 30",$14.46 +Spaghetti Squash,$13.43 +"Oil - Olive, Extra Virgin",$8.66 +Mushroom - Portebello,$24.89 +Flour - Bread,$13.22 +Tomato - Plum With Basil,$14.25 +Chocolate - Compound Coating,$23.73 +"Cake Circle, Paprus",$16.44 +Sage - Fresh,$3.59 +Milk - Chocolate 500ml,$7.58 +Mushroom - Crimini,$21.27 +Dome Lid Clear P92008h,$6.99 +Lettuce - Spring Mix,$9.87 +Coffee Swiss Choc Almond,$3.98 +Shallots,$25.95 +Broom - Angled,$24.31 +"Capon - Breast, Double, Wing On",$26.47 +Bonito Flakes - Toku Katsuo,$29.82 +Island Oasis - Ice Cream Mix,$28.35 +Hog / Sausage Casing - Pork,$9.73 +Veal - Insides Provini,$12.32 +Cheese - Brick With Onion,$27.40 +"Pepper - Chillies, Crushed",$21.75 +Buffalo - Tenderloin,$20.22 +Beef Cheek Fresh,$28.07 +"Wine - Magnotta - Red, Baco",$17.89 +"Pepper - Julienne, Frozen",$15.33 +Soup - French Can Pea,$19.68 +Spice - Onion Powder Granulated,$3.07 +Bread - Raisin Walnut Pull,$11.95 +"Sauce - White, Mix",$9.36 +"Pasta - Canelloni, Single Serve",$23.54 +Ice Cream Bar - Hagen Daz,$12.52 +"Oil - Truffle, White",$4.54 +"Marsala - Sperone, Fine, D.o.c.",$6.99 +Sour Puss Raspberry,$12.06 +Bread - Bistro Sour,$18.02 +Wine - Prosecco Valdobienne,$8.25 +Carrots - Jumbo,$5.47 +Longos - Grilled Salmon With Bbq,$3.74 +Toamtoes 6x7 Select,$18.88 +Pea - Snow,$25.06 +Wine - Cabernet Sauvignon,$15.48 +Potatoes - Mini White 3 Oz,$8.40 +Wine - Jaboulet Cotes Du Rhone,$29.47 +"Wine - Red, Concha Y Toro",$26.31 +Pork - Bacon Cooked Slcd,$27.65 +Cheese - Grana Padano,$3.78 +Juice - Orangina,$18.46 +Sponge Cake Mix - Chocolate,$10.70 +Sprouts - Baby Pea Tendrils,$23.85 +Muffin Mix - Blueberry,$18.03 +"Rum - Dark, Bacardi, Black",$28.13 +Blueberries,$7.45 +Truffle Shells - Semi - Sweet,$9.52 +Brandy Apricot,$12.03 +Cheese - Montery Jack,$6.03 +Foie Gras,$4.28 +Bacardi Raspberry,$5.35 +Raspberries - Frozen,$20.80 +"Doilies - 8, Paper",$25.54 +"Stock - Beef, White",$24.21 +Apples - Spartan,$8.58 +Flavouring Vanilla Artificial,$1.19 +Cheese - Parmesan Cubes,$16.28 +Cheese - Brick With Pepper,$28.91 +Mayonnaise - Individual Pkg,$19.18 +Nantucket Orange Juice,$22.66 +Energy Drink,$6.11 +Okra,$15.92 +Bread - Ciabatta Buns,$21.67 +Lotus Rootlets - Canned,$11.56 +Cup - 4oz Translucent,$6.18 +Oneshot Automatic Soap System,$11.00 +Cookie Chocolate Chip With,$20.35 +Tea - Jasmin Green,$18.33 +Bread - Olive Dinner Roll,$17.77 +Bacardi Limon,$10.81 +Oil - Peanut,$27.36 +Glucose,$7.02 +Nescafe - Frothy French Vanilla,$17.41 +Bread - Malt,$8.36 +Sauce - Oyster,$29.77 +Sugar - Monocystal / Rock,$26.25 +Wine - Sogrape Mateus Rose,$28.74 +Drambuie,$28.20 +Lambcasing,$21.09 +Tequila - Sauza Silver,$8.12 +"Wine - White, Ej Gallo",$12.61 +"Crab - Claws, 26 - 30",$13.08 +Wine - Rioja Campo Viejo,$7.71 +Veal - Kidney,$28.44 +Dried Figs,$28.71 +Carrots - Mini Red Organic,$28.19 +Tea - Black Currant,$1.50 +Cookie Chocolate Chip With,$27.46 +"Onions - Dried, Chopped",$11.33 +Cleaner - Bleach,$13.68 +Wine - Fat Bastard Merlot,$10.12 +Sprouts - China Rose,$23.71 +Muffin Mix - Blueberry,$12.86 +Sage - Ground,$15.50 +"Soup - Beef, Base Mix",$3.87 +Pork - Shoulder,$18.44 +"Flour - Bran, Red",$18.04 +Rolled Oats,$14.86 +White Fish - Filets,$25.35 +Bagel - Whole White Sesame,$1.26 +Bagel - Everything Presliced,$20.13 +Orange - Blood,$2.76 +Gatorade - Xfactor Berry,$26.78 +Lemon Grass,$14.05 +Celery Root,$14.39 +Sour Puss Sour Apple,$15.99 +Vinegar - Cider,$2.53 +"Pasta - Penne, Rigate, Dry",$25.36 +Foil Cont Round,$15.41 +Potatoes - Idaho 100 Count,$28.41 +Flower - Leather Leaf Fern,$29.83 +Tea - Green,$18.60 +"Juice - Apple, 1.36l",$9.41 +Oranges,$20.70 +Cheese - Taleggio D.o.p.,$10.88 +Cheese - Perron Cheddar,$16.42 +Pickles - Gherkins,$20.11 +"Wine - Red, Mouton Cadet",$12.50 +Broom - Push,$1.81 +"Beef - Rib Roast, Cap On",$9.01 +Sugar Thermometer,$19.79 +Pastry - Apple Large,$27.60 +Creamers - 10%,$26.95 +Beer - Upper Canada Lager,$11.82 +Mint - Fresh,$7.12 +Wine - Piper Heidsieck Brut,$22.68 +Pop - Club Soda Can,$20.45 +Wine - Cousino Macul Antiguas,$9.12 +Juice - Lemon,$23.92 +Sugar - Brown,$4.73 +Table Cloth 72x144 White,$15.83 +Wine - Fino Tio Pepe Gonzalez,$6.18 +"Pork - Loin, Center Cut",$8.92 +Container - Clear 16 Oz,$5.77 +Beef Tenderloin Aaa,$15.03 +Chicken - Soup Base,$23.89 +Soup - Campbells Beef Noodle,$1.68 +Chicken Thigh - Bone Out,$8.12 +Foam Espresso Cup Plain White,$1.92 +deneme,500 diff --git a/Projects/Bugbusters/csv/people-100.csv b/Projects/Bugbusters/csv/people-100.csv new file mode 100644 index 000000000..b8d39f2c5 --- /dev/null +++ b/Projects/Bugbusters/csv/people-100.csv @@ -0,0 +1,101 @@ +Index,User Id,First Name,Last Name,Sex,Email,Phone,Date of birth,Job Title +1,88F7B33d2bcf9f5,Shelby,Terrell,Male,elijah57@example.net,001-084-906-7849x73518,1945-10-26,Games developer +2,f90cD3E76f1A9b9,Phillip,Summers,Female,bethany14@example.com,214.112.6044x4913,1910-03-24,Phytotherapist +3,DbeAb8CcdfeFC2c,Kristine,Travis,Male,bthompson@example.com,277.609.7938,1992-07-02,Homeopath +4,A31Bee3c201ef58,Yesenia,Martinez,Male,kaitlinkaiser@example.com,584.094.6111,2017-08-03,Market researcher +5,1bA7A3dc874da3c,Lori,Todd,Male,buchananmanuel@example.net,689-207-3558x7233,1938-12-01,Veterinary surgeon +6,bfDD7CDEF5D865B,Erin,Day,Male,tconner@example.org,001-171-649-9856x5553,2015-10-28,Waste management officer +7,bE9EEf34cB72AF7,Katherine,Buck,Female,conniecowan@example.com,+1-773-151-6685x49162,1989-01-22,Intelligence analyst +8,2EFC6A4e77FaEaC,Ricardo,Hinton,Male,wyattbishop@example.com,001-447-699-7998x88612,1924-03-26,Hydrogeologist +9,baDcC4DeefD8dEB,Dave,Farrell,Male,nmccann@example.net,603-428-2429x27392,2018-10-06,Lawyer +10,8e4FB470FE19bF0,Isaiah,Downs,Male,virginiaterrell@example.org,+1-511-372-1544x8206,1964-09-20,"Engineer, site" +11,BF0BbA03C29Bb3b,Sheila,Ross,Female,huangcathy@example.com,895.881.4746,2008-03-20,Advertising account executive +12,F738c69fB34E62E,Stacy,Newton,Male,rayleroy@example.org,710.673.3213x80335,1980-10-20,Warden/ranger +13,C03fDADdAadAdCe,Mandy,Blake,Male,jefferynoble@example.org,(992)466-1305x4947,2007-12-08,"Scientist, clinical (histocompatibility and immunogenetics)" +14,b759b74BD1dE80d,Bridget,Nash,Female,mercedes44@example.com,(216)627-8359,2004-06-28,Social worker +15,1F0B7D65A00DAF9,Crystal,Farmer,Male,pmiranda@example.org,+1-024-377-5391,1992-03-09,Agricultural consultant +16,50Bb061cB30B461,Thomas,Knight,Female,braunpriscilla@example.net,+1-360-880-0766,2006-02-18,Sport and exercise psychologist +17,D6dbA5308fEC4BC,Maurice,Rangel,Male,sheenabanks@example.com,(246)187-4969,2004-08-20,Secretary/administrator +18,311D775990f066d,Frank,Meadows,Male,gbrewer@example.org,429.965.3902x4447,2008-09-16,Audiological scientist +19,7F7E1BAcb0C9AFf,Alvin,Paul,Male,gilbertdonaldson@example.com,219.436.0887x07551,1949-05-12,"Teacher, adult education" +20,88473e15D5c3cD0,Jared,Mitchell,Female,jcortez@example.com,+1-958-849-6781,1921-01-18,Paediatric nurse +21,b31D271F8c200AB,Jacqueline,Norton,Female,carias@example.net,819.309.7679x59173,1952-10-09,"Scientist, marine" +22,42F4BdA841aBadC,Colleen,Hatfield,Female,fknox@example.org,638.584.1090,1949-10-14,Commercial horticulturist +23,cBbBcA0FCA3C4Bc,Randy,Barnes,Male,huangbill@example.org,001-960-629-7164x67214,1947-12-30,Outdoor activities/education manager +24,f1f89173353aD90,Janice,Rhodes,Female,juarezdominique@example.net,001-249-314-9742x6996,1999-11-01,Drilling engineer +25,c5B09fb33e8bA0A,Alfred,Mcneil,Female,cassandramorris@example.com,(468)276-9509x53058,1993-05-28,Systems analyst +26,c9F2282C40BEC1E,Sean,Levine,Male,sallymiller@example.net,4915828504,2010-10-09,"Conservation officer, nature" +27,9c1bc7EC53Fb7cE,Louis,Payne,Male,bsullivan@example.net,6232695307,1916-01-29,Counsellor +28,ddEc50e2A2e3a2B,Brittney,Vega,Female,ayalajose@example.net,945-739-8686,1932-10-31,Recycling officer +29,66F096D36Ebae11,Judy,Buckley,Male,irosales@example.net,001-654-208-1241x52830,1963-07-28,Art gallery manager +30,F0fE2faAd78F8b5,Norman,Weber,Male,mconrad@example.com,223.002.0429,1957-05-21,Gaffer +31,5d2feAfbdCAA6B5,Isaiah,Camacho,Female,jimblake@example.org,001-536-544-3367,1966-04-07,Food technologist +32,cDa5F303fCd6dEa,Jacqueline,Gallagher,Male,nsampson@example.net,(247)762-8934,1999-02-25,Building services engineer +33,8Ef7DBfcaB02b6B,Bonnie,Andrews,Female,caitlin24@example.net,+1-253-987-2776x9161,1953-12-21,Seismic interpreter +34,6Dec5b5542F8ed8,Brandon,Schmidt,Female,mconley@example.net,+1-386-673-1465x006,1931-05-12,"Engineer, biomedical" +35,3Fb8a7f68e12784,Jackson,Sparks,Female,reynoldsdarryl@example.net,(137)908-3129x65035,1980-11-18,Set designer +36,035eff50B9A0F24,Melody,Cook,Male,jeannovak@example.org,(826)792-7381,1963-06-25,Research scientist (life sciences) +37,aa614aAE4B7Cf0C,Leonard,Hurst,Male,clinton78@example.org,941-038-0427x38800,1938-03-13,"Accountant, chartered management" +38,ACcde95AAe3e6cC,Gene,Rich,Female,luisdeleon@example.org,+1-356-818-6604x89537,1946-08-22,"Surveyor, quantity" +39,b6a35de5CB6fc25,Cynthia,Wiggins,Female,rosariodave@example.org,(110)858-2437x70190,1984-01-27,Outdoor activities/education manager +40,e92A191E345fA3A,Tanya,Mckinney,Female,vickihouston@example.com,(830)774-9002x086,2003-03-12,Information systems manager +41,7D0AcBF6CCac3fd,Matthew,Stone,Female,evelyn31@example.org,952-381-6360,2017-08-23,"Scientist, clinical (histocompatibility and immunogenetics)" +42,CEFA7BBCef013AE,Kirk,Walsh,Female,stephenfuller@example.org,001-826-496-5529x8661,2009-04-08,Accounting technician +43,9edBC94aE7cA22a,Willie,Vang,Female,haleymathews@example.net,741.168.6854x067,1978-02-02,Management consultant +44,fFe7BAA737aDbe2,Miguel,Hill,Female,tyrone56@example.org,5247842945,1930-08-26,Make +45,5F2f3fAca8B0946,Darren,Andrews,Male,lhernandez@example.com,(975)799-4261,1997-10-04,Retail banker +46,6bFcfc3cc1BC6B4,Haley,Pugh,Female,molly03@example.org,(746)182-6137x2453,1980-09-16,Commissioning editor +47,f3BD2cBF7eEb6df,Danielle,Estrada,Female,jvang@example.org,(890)374-9518x772,1930-07-09,"Accountant, chartered management" +48,Ee4eB129dC7913A,Becky,Brady,Male,erikmueller@example.org,(390)002-0863,1957-06-27,Seismic interpreter +49,dBCEf340C3657Eb,Caitlyn,Frey,Male,rivasdominique@example.org,805-021-3965x46344,1968-01-26,Jewellery designer +50,E47FB71DD9ACCd9,Joshua,Sweeney,Male,daisymcgee@example.net,875.994.2100x535,1954-07-28,"Education officer, museum" +51,eA3fDd79BE9f0E7,Heidi,Escobar,Female,staffordtravis@example.net,601-155-3065x1131,1931-09-25,Estate manager/land agent +52,aF0eE4547Bc025c,Brian,Oconnell,Female,saralong@example.net,952-283-1423x733,1911-10-23,Physiotherapist +53,9F5DeD7aD228F5a,Beverly,Esparza,Female,iphelps@example.net,+1-327-578-8754x6771,1930-12-09,Passenger transport manager +54,D3Fa0220dDE4d36,Nathaniel,Rivas,Female,roberto29@example.com,(655)887-2040x37888,1908-11-17,Call centre manager +55,60FdBFd5e7BE8fF,Debra,Payne,Female,yolanda07@example.org,001-731-525-8400x52593,1927-08-20,Special educational needs teacher +56,D8bF5Ab2b98caff,Mackenzie,Rocha,Female,abbottyvette@example.net,4225525458,1980-10-21,Museum/gallery exhibitions officer +57,CD8d33aA25bc8BB,Courtney,Watkins,Female,ochang@example.org,210.683.2761x5883,2003-12-07,Pension scheme manager +58,Fac3BfFf0A3d03c,Fred,Olsen,Female,amyanderson@example.com,497-774-3053,1910-04-10,Archaeologist +59,e552D7ddafe1FFb,Ryan,Nelson,Female,qnorman@example.org,956.330.2951,1924-05-02,Historic buildings inspector/conservation officer +60,0f8deedb629A5f6,Grace,Phelps,Male,clarkeangela@example.net,(034)867-8827x6777,1909-10-15,Petroleum engineer +61,bB9e49E506F65ed,Shari,Daugherty,Male,kalvarado@example.org,001-951-655-4798x6124,1944-11-24,Curator +62,Ed724605A403D91,Kelli,Garner,Male,jodyvincent@example.org,995.000.4213x0982,2010-01-17,Retail banker +63,0aBE5ACb18E0c10,Jackie,Bennett,Male,hutchinsonkirk@example.com,001-740-937-0846x0087,1915-11-11,Neurosurgeon +64,5D2cb63CaAF53f6,Leslie,Conway,Female,floreschristina@example.org,795.782.4384x555,1983-11-06,Chiropractor +65,Ee6974f90eeCe18,Harold,Barnett,Female,nathan65@example.org,+1-026-265-6392,1943-03-15,"Biochemist, clinical" +66,cEf02C076afa07f,Larry,Harper,Male,maria32@example.org,+1-244-630-3792x4121,2021-05-05,"Scientist, water quality" +67,9Df5Ba591bF3EFf,Mike,Ward,Female,imccullough@example.com,116-729-5046,1967-11-09,Hydrologist +68,3faB1CBfEFBDdD4,Brittney,Rubio,Female,corey92@example.com,593.976.2528,1959-12-24,"Biochemist, clinical" +69,Ebcefdf75eCb0a9,Frank,Pineda,Male,daltoncalvin@example.net,(035)961-5060x9182,1926-03-10,Hospital pharmacist +70,e75e5DBfcb68887,Sandra,Wu,Male,ubanks@example.com,+1-096-606-6454x067,1925-04-28,Warehouse manager +71,6a53a8D41dDF6de,Ryan,Benton,Male,lopezdebbie@example.org,+1-695-557-9948x485,2020-10-06,Physiological scientist +72,F0d3bD1aaf9E3Bc,Tamara,Hull,Male,meagan39@example.net,017.665.3744x7944,1933-01-31,English as a second language teacher +73,5bC87340799FBD0,Jean,Ritter,Female,kristina76@example.com,(954)060-1066,1985-08-06,Financial trader +74,dBfA17Aaf16b4ab,Veronica,Briggs,Female,weissbridget@example.com,+1-521-589-2387x48490,1974-06-08,Structural engineer +75,c935b7Eb6FA0B0F,Kim,Andrews,Female,wpetersen@example.org,7677125383,1990-11-15,"Biochemist, clinical" +76,b3e15e65Ca2CcBf,Tina,Cunningham,Male,wongmary@example.org,079-907-5051,1956-11-29,Race relations officer +77,dade3452F0c32FD,Jonathon,Atkinson,Male,gailfrench@example.net,874-037-2032x932,2011-07-19,"Psychologist, forensic" +78,AdEd6cfD85DeC46,Jermaine,Reid,Female,vpaul@example.com,(742)214-8691,1974-08-18,Newspaper journalist +79,DAf111987098ae4,Regina,Stevens,Male,xpoole@example.net,891-359-2684,2011-11-28,Public house manager +80,6e6a5b885F6496d,Terrence,Huff,Male,cassandra80@example.org,221.800.6408x5416,1944-02-27,Careers information officer +81,12DCb4ED8E01D5C,Tyler,Foley,Female,johnathan72@example.org,001-386-469-3075x8030,1908-09-19,Economist +82,E1cB5cA8CA7CC0a,Andrew,Waters,Male,nhall@example.net,+1-376-865-2765x3351,1948-05-14,Jewellery designer +83,AedDfaE8Cf49F07,Reginald,Stephenson,Male,erikaball@example.net,+1-832-500-6044x475,2010-02-08,Contracting civil engineer +84,bff9853aFAeF772,Douglas,Reese,Female,nixonvanessa@example.net,001-834-660-8312x9864,1961-11-11,Higher education lecturer +85,E883773cA5219Be,Helen,Williamson,Female,melvin08@example.net,001-377-726-4229,1911-08-11,"Lecturer, further education" +86,CB19EafEbBfF9eC,Mario,Vaughn,Male,oblake@example.com,160-144-5039x12276,1990-07-08,Research scientist (life sciences) +87,5834700fbEd2771,Chelsea,Dickson,Male,johnnyhendricks@example.net,001-698-651-0138x18588,1958-05-13,"Teacher, early years/pre" +88,2b0Ab1Dc9E01D7E,Dustin,Bailey,Male,pbarron@example.net,+1-965-621-1157x345,1908-08-22,Travel agency manager +89,3f3a3D89ad042Dd,Harry,Medina,Female,olsenmalik@example.net,+1-451-099-5805,1947-08-24,Technical sales engineer +90,9425E2F38C408ef,Kathy,Haney,Female,teresa37@example.com,(164)105-8456,1955-09-02,Charity fundraiser +91,F0aeC9c2759F3C6,Alison,Nixon,Female,zmiles@example.net,3506680871,1941-07-10,Patent attorney +92,d6EA619A7C4aA95,Jamie,Hardy,Female,sheenadouglas@example.com,(900)803-9295x11533,1994-07-17,"Conservator, furniture" +93,2A33E7Cad1bb0F5,Melody,Cox,Female,evan90@example.org,(626)520-5080x3511,1974-07-30,Dance movement psychotherapist +94,d181FFB7d3E68bb,Xavier,Cole,Male,nicolas90@example.org,8164259975,1938-11-29,Financial planner +95,feaBf8dAE0C0d6F,Dillon,Guzman,Female,angelanavarro@example.net,971-992-4521,1942-04-01,Air broker +96,5eFda7caAeB260E,Dennis,Barnes,Female,bmartin@example.org,001-095-524-2112x257,1954-07-30,Software engineer +97,CCbFce93d3720bE,Steve,Patterson,Female,latasha46@example.net,001-865-478-5157,1932-04-29,Barrister +98,2fEc528aFAF0b69,Wesley,Bray,Male,regina11@example.org,995-542-3004x76800,1994-12-28,Police officer +99,Adc7ad9B6e4A1Fe,Summer,Oconnell,Female,alexiscantrell@example.org,001-273-685-6932x092,2012-04-12,Broadcast journalist +100,b8D0aD3490FC7e1,Mariah,Bernard,Male,pcopeland@example.org,(341)594-6554x44657,2016-11-15,IT sales professional diff --git a/Projects/Bugbusters/database/aa.db b/Projects/Bugbusters/database/aa.db new file mode 100644 index 0000000000000000000000000000000000000000..b178c60dad19c83dff9a590a4bdc475b775490f2 GIT binary patch literal 45056 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%0D8xt8K1 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 literal 0 HcmV?d00001 diff --git a/Projects/Bugbusters/json/university.json b/Projects/Bugbusters/json/university.json new file mode 100644 index 000000000..aa39e2f8c --- /dev/null +++ b/Projects/Bugbusters/json/university.json @@ -0,0 +1 @@ +{"table_name": "Market", "column_names": ["product", "price"], "data": [["Crab - Imitation Flakes", "$17.00"], ["Broom - Push", "$28.29"], ["Muffin - Banana Nut Individual", "$24.46"], ["Chicken - Leg, Boneless", "$19.85"], ["Ecolab - Hobart Upr Prewash Arm", "$20.54"], ["Island Oasis - Strawberry", "$17.62"], ["Bread - Raisin", "$5.57"], ["Wine - Chateau Timberlay", "$29.01"], ["Coffee - Colombian, Portioned", "$17.84"], ["Daikon Radish", "$18.78"], ["Paper Cocktail Umberlla 80 - 180", "$6.82"], ["Mushroom - Chanterelle Frozen", "$23.84"], ["Pepsi, 355 Ml", "$22.23"], ["Chinese Foods - Cantonese", "$1.14"], ["Celery Root", "$9.71"], ["Bacardi Breezer - Strawberry", "$12.93"], ["Ice - Clear, 300 Lb For Carving", "$15.85"], ["Dried Apple", "$6.85"], ["Scallops - 20/30", "$14.59"], ["Foil Wrap", "$24.60"], ["Buffalo - Tenderloin", "$3.61"], ["Carbonated Water - Blackcherry", "$14.55"], ["Wood Chips - Regular", "$21.82"], ["Juice - Apple, 1.36l", "$26.45"], ["Nut - Almond, Blanched, Sliced", "$7.82"], ["Longos - Chicken Cordon Bleu", "$8.44"], ["Juice - Grape, White", "$23.54"], ["Cheese - Marble", "$16.06"], ["Mushroom - Shitake, Fresh", "$21.60"], ["Grenadillo", "$27.89"], ["Tarts Assorted", "$16.51"], ["Numi - Assorted Teas", "$8.41"], ["Wine - Puligny Montrachet A.", "$6.28"], ["Dill Weed - Fresh", "$24.59"], ["Tomatoes - Grape", "$17.91"], ["Rosemary - Fresh", "$16.54"], ["Maple Syrup", "$6.52"], ["Longos - Chicken Curried", "$26.65"], ["Cheese - Roquefort Pappillon", "$1.93"], ["External Supplier", "$2.16"], ["Asparagus - Green, Fresh", "$18.18"], ["Nori Sea Weed", "$23.20"], ["Wine - Red, Antinori Santa", "$5.42"], ["Hipnotiq Liquor", "$20.22"], ["Blueberries - Frozen", "$15.00"], ["Sprouts - Onion", "$12.45"], ["Okra", "$12.82"], ["Mustard Prepared", "$1.08"], ["Cod - Black Whole Fillet", "$26.29"], ["Butcher Twine 4r", "$6.54"], ["Veal - Kidney", "$11.57"], ["Towels - Paper / Kraft", "$13.74"], ["Potatoes - Instant, Mashed", "$1.98"], ["Cocoa Powder - Dutched", "$1.31"], ["Fuji Apples", "$26.44"], ["Wine - Baron De Rothschild", "$5.22"], ["Barramundi", "$14.08"], ["Cornstarch", "$23.40"], ["Port - 74 Brights", "$12.62"], ["Cream - 35%", "$13.63"], ["Soup Campbells Split Pea And Ham", "$8.82"], ["Yoplait Drink", "$12.21"], ["Mushroom - Chanterelle Frozen", "$25.77"], ["Wine - Red, Wolf Blass, Yellow", "$23.30"], ["Food Colouring - Blue", "$1.80"], ["Sprouts - Peppercress", "$17.64"], ["Salt - Sea", "$24.32"], ["Chocolate - Semi Sweet", "$12.84"], ["Rice - 7 Grain Blend", "$7.48"], ["Truffle Shells - White Chocolate", "$29.27"], ["The Pop Shoppe - Cream Soda", "$19.72"], ["Mushroom - Oyster, Fresh", "$12.41"], ["The Pop Shoppe - Lime Rickey", "$21.35"], ["Juice - Apple, 341 Ml", "$5.90"], ["Tuna - Loin", "$13.30"], ["Nantucket Orange Juice", "$24.91"], ["Tuna - Yellowfin", "$23.23"], ["Lamb - Leg, Diced", "$12.36"], ["Chocolate - Chips Compound", "$7.77"], ["Zucchini - Green", "$11.30"], ["Gherkin - Sour", "$19.13"], ["Sole - Fillet", "$17.97"], ["Lettuce - Baby Salad Greens", "$23.01"], ["Toamtoes 6x7 Select", "$7.70"], ["Mace Ground", "$24.48"], ["Wine - Black Tower Qr", "$22.37"], ["Pants Custom Dry Clean", "$23.76"], ["Veal - Leg", "$25.48"], ["Chocolate - Pistoles, Lactee, Milk", "$20.28"], ["Beans - Butter Lrg Lima", "$22.82"], ["Pepper - Yellow Bell", "$27.60"], ["Bread Roll Foccacia", "$11.94"], ["Muffin - Bran Ind Wrpd", "$24.22"], ["Rye Special Old", "$25.71"], ["Island Oasis - Lemonade", "$21.13"], ["Soup - Campbells, Butternut", "$17.47"], ["Eggwhite Frozen", "$17.63"], ["Cookie - Dough Variety", "$8.36"], ["Numi - Assorted Teas", "$20.33"], ["Madeira", "$16.60"], ["Wine - Chardonnay South", "$5.22"], ["Jam - Apricot", "$1.54"], ["Pasta - Lasagna Noodle, Frozen", "$13.42"], ["Fish - Bones", "$25.04"], ["Pasta - Penne Primavera, Single", "$10.14"], ["Orange - Canned, Mandarin", "$10.73"], ["Salt - Seasoned", "$1.18"], ["V8 Splash Strawberry Kiwi", "$3.58"], ["Flour - Strong", "$7.27"], ["Cheese - Feta", "$17.86"], ["Tart Shells - Sweet, 3", "$15.20"], ["Star Anise, Whole", "$10.67"], ["Pickle - Dill", "$29.57"], ["Cocktail Napkin Blue", "$4.26"], ["Cream Of Tartar", "$10.43"], ["Pepper - Black, Whole", "$11.70"], ["Icecream - Dstk Super Cone", "$8.01"], ["Salmon - Canned", "$25.30"], ["Beets - Pickled", "$3.09"], ["Wiberg Super Cure", "$19.96"], ["Sausage - Blood Pudding", "$7.08"], ["Dooleys Toffee", "$28.64"], ["Bag Stand", "$18.48"], ["Pepper - Green, Chili", "$12.37"], ["Ecolab - Orange Frc, Cleaner", "$15.49"], ["Container - Clear 16 Oz", "$24.48"], ["Salt - Table", "$29.27"], ["Wine - Savigny - Les - Beaune", "$17.15"], ["Miso - Soy Bean Paste", "$16.92"], ["Ginger - Crystalized", "$29.76"], ["Pork - Backfat", "$2.97"], ["Appetizer - Chicken Satay", "$23.76"], ["Sausage - Chorizo", "$26.74"], ["Extract - Vanilla,artificial", "$14.19"], ["Pasta - Rotini, Colour, Dry", "$13.13"], ["Cake - Mini Cheesecake", "$26.39"], ["Wine - Red, Lurton Merlot De", "$10.26"], ["Nantucket Cranberry Juice", "$2.75"], ["Truffle Cups Green", "$16.49"], ["Chips Potato Swt Chilli Sour", "$15.89"], ["Brandy - Orange, Mc Guiness", "$17.18"], ["Jameson - Irish Whiskey", "$5.34"], ["Chocolate - Dark", "$9.40"], ["Strawberries - California", "$22.26"], ["Sage - Ground", "$9.12"], ["Table Cloth 54x72 Colour", "$24.52"], ["Soup - Campbells Beef Stew", "$20.37"], ["Wine - Vidal Icewine Magnotta", "$10.80"], ["Calypso - Strawberry Lemonade", "$21.32"], ["Spinach - Spinach Leaf", "$2.99"], ["Veal - Heart", "$18.58"], ["Yogurt - Cherry, 175 Gr", "$21.29"], ["Veal - Liver", "$9.98"], ["Foil Wrap", "$3.66"], ["Smoked Tongue", "$11.06"], ["Veal - Striploin", "$7.80"], ["Creme De Cacao Mcguines", "$24.02"], ["Beans - Butter Lrg Lima", "$17.34"], ["Pork - Inside", "$27.87"], ["Basil - Primerba, Paste", "$22.98"], ["Pie Pecan", "$9.34"], ["Bread - Raisin Walnut Oval", "$5.55"], ["Wine - Magnotta - Red, Baco", "$3.15"], ["Beef - Tenderlion, Center Cut", "$5.95"], ["Sherbet - Raspberry", "$25.05"], ["True - Vue Containers", "$17.47"], ["Stainless Steel Cleaner Vision", "$4.89"], ["Beef - Inside Round", "$24.82"], ["Bacardi Breezer - Strawberry", "$21.23"], ["Appetizer - Tarragon Chicken", "$9.72"], ["Tea - Herbal - 6 Asst", "$25.09"], ["Vodka - Moskovskaya", "$27.30"], ["Cheese - Romano, Grated", "$19.72"], ["Dc - Sakura Fu", "$20.07"], ["Urban Zen Drinks", "$19.52"], ["Wine - Gato Negro Cabernet", "$20.17"], ["Rootbeer", "$9.98"], ["Creme De Menth - White", "$11.98"], ["Beer - Molson Excel", "$20.22"], ["Rice Pilaf, Dry,package", "$9.51"], ["Nougat - Paste / Cream", "$20.53"], ["Wine - Pinot Noir Pond Haddock", "$19.83"], ["Corn Syrup", "$27.68"], ["Bandage - Flexible Neon", "$26.09"], ["Chocolate - White", "$1.26"], ["Dasheen", "$22.40"], ["Mushroom - Lg - Cello", "$27.01"], ["Bread - Pullman, Sliced", "$29.62"], ["French Kiss Vanilla", "$5.08"], ["Tart Shells - Sweet, 4", "$26.89"], ["Tuna - Sushi Grade", "$8.29"], ["Bread - Dark Rye, Loaf", "$12.93"], ["Water - Evian 355 Ml", "$5.02"], ["Veal - Leg, Provimi - 50 Lb Max", "$1.49"], ["Salmon Steak - Cohoe 8 Oz", "$20.80"], ["Jam - Strawberry, 20 Ml Jar", "$4.77"], ["Wine - White, Pinot Grigio", "$7.99"], ["Cheese - Boursin, Garlic / Herbs", "$20.55"], ["Chicken - Livers", "$9.44"], ["Bay Leaf", "$8.60"], ["Cake - Box Window 10x10x2.5", "$15.14"], ["Flour - Fast / Rapid", "$11.97"], ["Cups 10oz Trans", "$20.10"], ["Parsley - Fresh", "$20.62"], ["Mushrooms - Black, Dried", "$4.18"], ["Wine - Chardonnay Mondavi", "$3.45"], ["Curry Powder", "$29.67"], ["Bag Stand", "$2.65"], ["Muffin - Mix - Bran And Maple 15l", "$17.44"], ["Tea - Jasmin Green", "$20.74"], ["Beer - True North Lager", "$5.08"], ["Raisin - Golden", "$10.98"], ["Raspberries - Fresh", "$1.34"], ["Rum - Coconut, Malibu", "$11.54"], ["Nut - Walnut, Chopped", "$10.64"], ["Lettuce - Baby Salad Greens", "$23.88"], ["Salt - Seasoned", "$26.89"], ["Wine - Valpolicella Masi", "$12.92"], ["Pepper - Green, Chili", "$24.05"], ["Ecolab - Orange Frc, Cleaner", "$28.09"], ["Water - Green Tea Refresher", "$25.71"], ["Vol Au Vents", "$6.36"], ["Sauce - Plum", "$22.61"], ["Wine - Fino Tio Pepe Gonzalez", "$10.31"], ["Leeks - Baby, White", "$1.31"], ["Crush - Grape, 355 Ml", "$21.60"], ["Calypso - Pineapple Passion", "$18.53"], ["Onions - Vidalia", "$13.84"], ["Beef - Shank", "$17.98"], ["Nut - Peanut, Roasted", "$22.05"], ["Tomatoes - Hot House", "$24.74"], ["Muffin Mix - Oatmeal", "$4.87"], ["Soup - Canadian Pea, Dry Mix", "$15.35"], ["Bread - Granary Small Pull", "$22.03"], ["Longos - Grilled Veg Sandwiches", "$8.69"], ["Soup Campbells Mexicali Tortilla", "$6.93"], ["Beef Flat Iron Steak", "$10.34"], ["Vinegar - White", "$2.68"], ["Cinnamon - Stick", "$18.69"], ["Mousse - Banana Chocolate", "$6.55"], ["Ecolab Crystal Fusion", "$20.05"], ["Wood Chips - Regular", "$9.36"], ["Pork - Back Ribs", "$4.63"], ["Lambcasing", "$21.20"], ["Croissants Thaw And Serve", "$12.16"], ["Bread - Dark Rye, Loaf", "$27.37"], ["Bread - Sticks, Thin, Plain", "$20.20"], ["Olives - Black, Pitted", "$9.41"], ["Corn Kernels - Frozen", "$14.73"], ["Godiva White Chocolate", "$29.98"], ["Pepper - White, Ground", "$24.42"], ["Chocolate Bar - Smarties", "$27.57"], ["Orange Roughy 4/6 Oz", "$28.22"], ["Teriyaki Sauce", "$17.25"], ["Piping Jelly - All Colours", "$18.74"], ["Chicken Thigh - Bone Out", "$24.30"], ["Lobster - Tail 6 Oz", "$25.06"], ["Nestea - Ice Tea, Diet", "$26.90"], ["Pork - Butt, Boneless", "$9.67"], ["Zucchini - Mini, Green", "$28.53"], ["Pork - Tenderloin, Frozen", "$27.90"], ["Turkey Leg With Drum And Thigh", "$16.40"], ["Nut - Almond, Blanched, Whole", "$24.85"], ["Puree - Raspberry", "$15.95"], ["Foam Espresso Cup Plain White", "$13.51"], ["Cherries - Maraschino,jar", "$9.04"], ["Pie Shell - 9", "$11.30"], ["Soup Campbells", "$6.35"], ["Sole - Fillet", "$20.02"], ["Chevere Logs", "$17.75"], ["Cheese Cloth No 60", "$4.86"], ["Longos - Burritos", "$11.96"], ["Beef - Inside Round", "$10.29"], ["Raisin - Golden", "$25.48"], ["Veal - Round, Eye Of", "$9.48"], ["Oil - Truffle, Black", "$2.42"], ["Cheese - Sheep Milk", "$16.80"], ["Tart - Raisin And Pecan", "$28.89"], ["Bread - Raisin", "$15.71"], ["Ice Cream - Fudge Bars", "$6.98"], ["Squid - Breaded", "$1.38"], ["Cinnamon - Ground", "$7.24"], ["Shrimp - 100 / 200 Cold Water", "$9.88"], ["Ecolab - Orange Frc, Cleaner", "$9.99"], ["Tea - Lemon Scented", "$26.02"], ["Tahini Paste", "$25.15"], ["Beer - True North Lager", "$28.08"], ["Cookie Trail Mix", "$3.82"], ["Pastry - Cherry Danish - Mini", "$20.03"], ["Pastry - Baked Scones - Mini", "$12.44"], ["Sprouts - Peppercress", "$27.49"], ["Marjoram - Fresh", "$20.44"], ["Island Oasis - Sweet And Sour Mix", "$29.90"], ["Honey - Lavender", "$19.71"], ["Wine - Red, Pelee Island Merlot", "$25.75"], ["Cabbage - Green", "$15.18"], ["Mayonnaise", "$3.91"], ["Pepsi, 355 Ml", "$13.30"], ["Crush - Grape, 355 Ml", "$1.13"], ["Table Cloth 62x114 Colour", "$8.27"], ["Wine - Red, Pelee Island Merlot", "$22.97"], ["Wine - Ice Wine", "$15.68"], ["Lime Cordial - Roses", "$5.25"], ["Soup - Campbellschix Stew", "$11.80"], ["Gelatine Leaves - Envelopes", "$12.70"], ["Mousse - Passion Fruit", "$28.55"], ["Yoplait Drink", "$5.83"], ["Salt - Rock, Course", "$8.86"], ["Pastry - Plain Baked Croissant", "$15.04"], ["Napkin - Cocktail,beige 2 - Ply", "$29.47"], ["Bag Stand", "$26.26"], ["Yeast Dry - Fleischman", "$27.98"], ["Mushroom - Enoki, Dry", "$5.41"], ["Cake - Cheese Cake 9 Inch", "$22.62"], ["Dried Peach", "$20.75"], ["Wine - Red, Concha Y Toro", "$2.24"], ["Grapefruit - White", "$5.92"], ["Rum - Light, Captain Morgan", "$2.98"], ["Sandwich Wrap", "$8.04"], ["Salt And Pepper Mix - White", "$10.76"], ["Salmon - Canned", "$12.61"], ["Cheese - Mozzarella", "$7.80"], ["Muffin - Mix - Creme Brule 15l", "$23.48"], ["Carbonated Water - Strawberry", "$7.70"], ["Flour - Chickpea", "$9.31"], ["Versatainer Nc - 9388", "$8.72"], ["Ketchup - Tomato", "$6.76"], ["Ice Cream Bar - Oreo Cone", "$16.69"], ["Bread Crumbs - Japanese Style", "$15.85"], ["Artichoke - Bottom, Canned", "$29.10"], ["Cherries - Bing, Canned", "$1.42"], ["Icecream Cone - Areo Chocolate", "$3.89"], ["Shrimp - Black Tiger 6 - 8", "$3.82"], ["Versatainer Nc - 9388", "$5.16"], ["Lamb Tenderloin Nz Fr", "$12.12"], ["Pork - Sausage, Medium", "$25.39"], ["Wine - Cave Springs Dry Riesling", "$25.83"], ["Wine - Delicato Merlot", "$20.83"], ["Grapefruit - White", "$2.48"], ["Food Colouring - Red", "$20.34"], ["Nut - Hazelnut, Whole", "$17.48"], ["Croissants Thaw And Serve", "$22.59"], ["Ocean Spray - Ruby Red", "$4.66"], ["Beef - Kindney, Whole", "$25.38"], ["Boogies", "$7.25"], ["Cloves - Whole", "$6.45"], ["Cheese - Bocconcini", "$17.58"], ["Broom - Angled", "$9.20"], ["Pail For Lid 1537", "$26.12"], ["Pepper - Green", "$20.26"], ["Cheese - Perron Cheddar", "$2.44"], ["Sausage - Meat", "$15.94"], ["Squash - Guords", "$24.78"], ["Grapes - Red", "$21.85"], ["Longos - Grilled Chicken With", "$28.64"], ["Beef - Flank Steak", "$3.33"], ["Salad Dressing", "$1.53"], ["Cup - Translucent 7 Oz Clear", "$3.55"], ["Ecolab - Medallion", "$21.66"], ["Icecream Bar - Del Monte", "$19.25"], ["Lobak", "$9.26"], ["Nantucket - Orange Mango Cktl", "$14.26"], ["Curry Powder Madras", "$24.80"], ["Table Cloth 90x90 White", "$20.67"], ["Beef - Ground Medium", "$11.55"], ["Breakfast Quesadillas", "$10.85"], ["Oil - Peanut", "$14.35"], ["Truffle Cups Green", "$24.46"], ["Galliano", "$18.22"], ["Nut - Walnut, Chopped", "$13.55"], ["Wine - Trimbach Pinot Blanc", "$20.78"], ["Bagels Poppyseed", "$22.36"], ["Jolt Cola - Red Eye", "$9.43"], ["Wine - Magnotta, Merlot Sr Vqa", "$6.20"], ["Sprite, Diet - 355ml", "$2.70"], ["Smoked Paprika", "$9.67"], ["Meldea Green Tea Liquor", "$14.60"], ["Carbonated Water - Lemon Lime", "$3.83"], ["Filo Dough", "$10.86"], ["Rice - Aborio", "$9.61"], ["Filter - Coffee", "$19.95"], ["Absolut Citron", "$6.62"], ["Pastry - Apple Large", "$22.34"], ["Tomatoes - Vine Ripe, Yellow", "$24.06"], ["Shichimi Togarashi Peppeers", "$14.64"], ["Soupfoamcont12oz 112con", "$15.85"], ["Bagel - Ched Chs Presliced", "$17.43"], ["Ecolab Silver Fusion", "$6.12"], ["Wine - Kwv Chenin Blanc South", "$25.02"], ["Pate - Peppercorn", "$7.45"], ["Lemon Tarts", "$27.38"], ["Wine - White, Lindemans Bin 95", "$19.74"], ["Wine - Riesling Dr. Pauly", "$12.87"], ["Maple Syrup", "$5.48"], ["Beer - Blue", "$29.70"], ["Bagelers", "$6.78"], ["Puree - Passion Fruit", "$1.35"], ["Veal - Brisket, Provimi, Bone - In", "$21.50"], ["Mustard Prepared", "$23.25"], ["Bar Mix - Lime", "$6.30"], ["Nacho Chips", "$14.67"], ["Beef - Rib Roast, Capless", "$22.55"], ["Wine - Ej Gallo Sierra Valley", "$18.14"], ["Bread - Bistro White", "$2.18"], ["Flavouring - Orange", "$11.65"], ["Otomegusa Dashi Konbu", "$21.36"], ["Cheese - Goat With Herbs", "$6.96"], ["Yoplait Drink", "$7.61"], ["Nantucket - Carrot Orange", "$4.58"], ["Bread - Malt", "$18.94"], ["Nut - Pine Nuts, Whole", "$15.72"], ["Cabbage - Green", "$21.13"], ["Piping - Bags Quizna", "$25.75"], ["Glaze - Apricot", "$26.20"], ["Soup - Cream Of Broccoli, Dry", "$2.96"], ["Beef Dry Aged Tenderloin Aaa", "$14.05"], ["Veal - Inside", "$27.43"], ["Soup - Campbells, Chix Gumbo", "$11.77"], ["Creme De Banane - Marie", "$4.47"], ["Island Oasis - Wildberry", "$20.87"], ["Peach - Halves", "$18.85"], ["Wine - Red, Harrow Estates, Cab", "$6.02"], ["Basil - Pesto Sauce", "$5.44"], ["Wine - Riesling Alsace Ac 2001", "$8.43"], ["Wine - Penfolds Koonuga Hill", "$28.95"], ["Pastry - French Mini Assorted", "$11.66"], ["Broom Handle", "$5.12"], ["Pasta - Canelloni", "$4.58"], ["Cafe Royale", "$17.75"], ["Scallops - U - 10", "$14.59"], ["Nantucket Apple Juice", "$24.95"], ["Rice Paper", "$16.86"], ["Cheese - Cheddar, Medium", "$2.02"], ["Beans - Black Bean, Preserved", "$15.71"], ["Island Oasis - Sweet And Sour Mix", "$20.67"], ["Chocolate Bar - Smarties", "$6.59"], ["Tequila Rose Cream Liquor", "$25.89"], ["Macaroons - Two Bite Choc", "$23.66"], ["Cheese - Pied De Vents", "$20.42"], ["Beer - Mcauslan Apricot", "$2.14"], ["Oranges - Navel, 72", "$20.16"], ["Basil - Thai", "$29.34"], ["Tea - Jasmin Green", "$12.96"], ["Wine - Kwv Chenin Blanc South", "$7.38"], ["Chick Peas - Canned", "$1.98"], ["Cheese - Blue", "$20.39"], ["Pike - Frozen Fillet", "$26.59"], ["Wine - Sogrape Mateus Rose", "$16.19"], ["Sugar - Brown", "$10.03"], ["Muffin Batt - Blueberry Passion", "$8.24"], ["Pasta - Fusili Tri - Coloured", "$18.86"], ["Mussels - Frozen", "$8.72"], ["Pastry - Baked Scones - Mini", "$24.65"], ["Appetizer - Smoked Salmon / Dill", "$5.87"], ["Vermacelli - Sprinkles, Assorted", "$2.86"], ["Lettuce - Boston Bib", "$18.99"], ["Lamb Shoulder Boneless Nz", "$6.45"], ["Smoked Paprika", "$29.24"], ["Bread - Corn Muffaletta", "$7.00"], ["Table Cloth 62x114 Colour", "$7.88"], ["Pie Shell - 9", "$24.52"], ["Beer - Pilsner Urquell", "$10.84"], ["Tart - Lemon", "$26.59"], ["Potatoes - Mini White 3 Oz", "$15.08"], ["Flour - All Purpose", "$27.47"], ["Tomato - Tricolor Cherry", "$20.91"], ["Yukon Jack", "$22.06"], ["Mustard - Dry, Powder", "$6.15"], ["Brownies - Two Bite, Chocolate", "$2.09"], ["Wine - Chateau Bonnet", "$11.49"], ["Wine - Semi Dry Riesling Vineland", "$15.51"], ["Compound - Orange", "$23.55"], ["Carrots - Mini, Stem On", "$22.62"], ["Chip - Potato Dill Pickle", "$23.93"], ["Sprouts - Onion", "$16.77"], ["Yogurt - French Vanilla", "$26.49"], ["Cookies - Assorted", "$25.18"], ["Bread Crumbs - Panko", "$1.16"], ["Tomatoes - Orange", "$26.27"], ["Pasta - Fett Alfredo, Single Serve", "$15.73"], ["Cookie - Oreo 100x2", "$5.57"], ["Vol Au Vents", "$15.88"], ["Sausage - Andouille", "$4.95"], ["Bar - Granola Trail Mix Fruit Nut", "$22.28"], ["Soup - Base Broth Chix", "$17.66"], ["Juice - Orangina", "$17.40"], ["Appetizer - Chicken Satay", "$12.54"], ["Sausage - Andouille", "$26.45"], ["Pepper - Chillies, Crushed", "$22.92"], ["Beans - Butter Lrg Lima", "$29.95"], ["Cheese - Romano, Grated", "$9.78"], ["Cake - Dulce De Leche", "$28.67"], ["Pancetta", "$5.05"], ["Bok Choy - Baby", "$9.06"], ["Langers - Mango Nectar", "$25.97"], ["Ginsing - Fresh", "$17.62"], ["Lobster - Live", "$11.61"], ["Wine - Hardys Bankside Shiraz", "$5.60"], ["Cinnamon - Ground", "$25.83"], ["Water Chestnut - Canned", "$5.22"], ["Turkey - Breast, Boneless Sk On", "$17.72"], ["Onions - Red", "$9.74"], ["Rolled Oats", "$3.71"], ["Momiji Oroshi Chili Sauce", "$28.11"], ["Oil - Hazelnut", "$29.50"], ["Plate Pie Foil", "$15.84"], ["Wine - Manischewitz Concord", "$13.05"], ["Pesto - Primerba, Paste", "$17.88"], ["Uniform Linen Charge", "$17.44"], ["Cilantro / Coriander - Fresh", "$10.64"], ["Curry Powder", "$5.32"], ["Lamb - Leg, Boneless", "$9.58"], ["Lemons", "$26.27"], ["Cheese - Bakers Cream Cheese", "$15.30"], ["Pie Pecan", "$15.12"], ["Wine - Zonnebloem Pinotage", "$27.19"], ["Radish - Black, Winter, Organic", "$10.86"], ["Artichoke - Bottom, Canned", "$23.33"], ["Chicken - White Meat With Tender", "$15.59"], ["Oil - Truffle, Black", "$16.96"], ["Pork - Ground", "$6.60"], ["Pickles - Gherkins", "$5.09"], ["Cardamon Ground", "$18.79"], ["Potatoes - Idaho 100 Count", "$7.08"], ["Pork - Back Ribs", "$24.34"], ["Pomello", "$22.91"], ["Cinnamon Rolls", "$12.11"], ["Halibut - Steaks", "$5.16"], ["Soup - Knorr, French Onion", "$22.61"], ["Spinach - Baby", "$21.54"], ["Dome Lid Clear P92008h", "$8.52"], ["Butter - Unsalted", "$29.40"], ["Pork - Loin, Bone - In", "$18.91"], ["Cake - Cake Sheet Macaroon", "$8.88"], ["Icecream - Dstk Strw Chseck", "$18.02"], ["Wine - Casablanca Valley", "$14.32"], ["Fenngreek Seed", "$28.61"], ["Beef - Baby, Liver", "$12.61"], ["Veal - Osso Bucco", "$1.39"], ["Wine - Chablis J Moreau Et Fils", "$15.67"], ["Eggplant Oriental", "$26.65"], ["Sausage - Blood Pudding", "$11.82"], ["Dc Hikiage Hira Huba", "$26.51"], ["Cinnamon - Stick", "$14.96"], ["Flour - Teff", "$2.56"], ["Nut - Almond, Blanched, Whole", "$5.15"], ["Langers - Cranberry Cocktail", "$22.14"], ["Sugar - Splenda Sweetener", "$12.54"], ["Grapes - Red", "$14.70"], ["Cleaner - Lime Away", "$25.14"], ["Beef - Top Sirloin", "$26.94"], ["Corn Kernels - Frozen", "$1.51"], ["Longos - Cheese Tortellini", "$28.22"], ["Jack Daniels", "$27.04"], ["Cake - French Pear Tart", "$10.59"], ["Chocolate - Feathers", "$7.08"], ["Ranchero - Primerba, Paste", "$6.01"], ["Food Colouring - Green", "$9.20"], ["Sauce - Rosee", "$11.26"], ["Sausage - Meat", "$1.76"], ["Soup - Campbells Beef Noodle", "$15.09"], ["Coffee - Egg Nog Capuccino", "$8.98"], ["Tendrils - Baby Pea, Organic", "$17.99"], ["Tomatoes - Yellow Hot House", "$9.43"], ["Mushroom - Porcini Frozen", "$12.46"], ["Cookie Dough - Oatmeal Rasin", "$7.55"], ["Juice - Mango", "$15.57"], ["Initation Crab Meat", "$19.70"], ["Wine - Bouchard La Vignee Pinot", "$27.49"], ["Yogurt - Cherry, 175 Gr", "$12.58"], ["Juice - Tomato, 10 Oz", "$28.32"], ["Cake Sheet Combo Party Pack", "$15.47"], ["Quiche Assorted", "$20.16"], ["Pork - Backfat", "$26.04"], ["Beer - Sleemans Cream Ale", "$13.66"], ["Wine - Masi Valpolocell", "$23.26"], ["Seabream Whole Farmed", "$3.08"], ["Horseradish - Prepared", "$16.20"], ["Zucchini - Mini, Green", "$24.67"], ["Langers - Mango Nectar", "$16.86"], ["Lid - 0090 Clear", "$11.22"], ["Canada Dry", "$10.27"], ["Island Oasis - Mango Daiquiri", "$5.26"], ["Steel Wool S.o.s", "$9.86"], ["Oil - Safflower", "$2.09"], ["Grenadine", "$5.44"], ["Breadfruit", "$9.23"], ["Wine - Red, Harrow Estates, Cab", "$6.50"], ["Dc - Frozen Momji", "$11.49"], ["Wine - White, Schroder And Schyl", "$25.72"], ["Cherries - Maraschino,jar", "$14.40"], ["Muffin Hinge Container 6", "$20.66"], ["Kiwano", "$9.17"], ["Ecolab - Power Fusion", "$24.56"], ["Ice Cream Bar - Rolo Cone", "$14.52"], ["Silicone Paper 16.5x24", "$24.19"], ["Pear - Asian", "$21.09"], ["Appetizer - Sausage Rolls", "$14.36"], ["Coffee Cup 12oz 5342cd", "$22.71"], ["Mushrooms - Honey", "$4.96"], ["Soup - French Can Pea", "$4.62"], ["Lettuce - Romaine, Heart", "$21.24"], ["Nut - Pine Nuts, Whole", "$22.91"], ["Lamb - Loin Chops", "$13.86"], ["Broom - Angled", "$23.51"], ["Cod - Fillets", "$4.73"], ["Beans - Black Bean, Canned", "$9.67"], ["Pie Filling - Apple", "$6.48"], ["Wine - Chateau Aqueria Tavel", "$26.83"], ["Eggplant - Asian", "$1.80"], ["V8 - Vegetable Cocktail", "$11.92"], ["Appetizer - Lobster Phyllo Roll", "$29.16"], ["Ocean Spray - Kiwi Strawberry", "$13.85"], ["Wine - Casablanca Valley", "$13.81"], ["Gelatine Leaves - Envelopes", "$18.05"], ["Wine - White, Pelee Island", "$12.19"], ["Sour Puss Raspberry", "$27.60"], ["Cheese - Comte", "$28.51"], ["Corn - Cream, Canned", "$2.37"], ["Pork Casing", "$29.08"], ["Onions - Cooking", "$21.23"], ["Spinach - Spinach Leaf", "$27.21"], ["Flower - Leather Leaf Fern", "$15.57"], ["Sauce - Sesame Thai Dressing", "$27.73"], ["Flour - Masa De Harina Mexican", "$20.78"], ["Vodka - Lemon, Absolut", "$18.42"], ["Cheese - Brie, Triple Creme", "$8.31"], ["Soup - Campbells, Lentil", "$4.97"], ["Sauce - Chili", "$19.59"], ["Mushroom - Trumpet, Dry", "$25.92"], ["Oil - Olive Bertolli", "$13.36"], ["Muffin Carrot - Individual", "$3.07"], ["Wine - Pinot Noir Pond Haddock", "$29.43"], ["Apple - Custard", "$20.41"], ["Bar Nature Valley", "$16.76"], ["V8 Splash Strawberry Banana", "$2.85"], ["Cognac - Courvaisier", "$3.05"], ["Cheese - Comte", "$4.09"], ["Vinegar - White Wine", "$20.93"], ["Lighter - Bbq", "$23.36"], ["Wine - Fume Blanc Fetzer", "$20.59"], ["Cleaner - Lime Away", "$8.06"], ["Worcestershire Sauce", "$18.51"], ["Bouillion - Fish", "$2.65"], ["Juice - Lemon", "$4.57"], ["Guinea Fowl", "$8.85"], ["Mix Pina Colada", "$8.43"], ["Milk - Homo", "$13.28"], ["Tomato - Green", "$7.56"], ["Sterno - Chafing Dish Fuel", "$7.23"], ["Beef - Tenderloin Tails", "$23.15"], ["Beans - Black Bean, Canned", "$20.43"], ["Vinegar - White", "$25.05"], ["Spic And Span All Purpose", "$5.25"], ["Fudge - Cream Fudge", "$18.61"], ["Lid - 3oz Med Rec", "$1.46"], ["Juice - Happy Planet", "$18.07"], ["Rice - Sushi", "$5.46"], ["Wine - White Cab Sauv.on", "$29.48"], ["Basil - Thai", "$6.26"], ["Muffin - Mix - Creme Brule 15l", "$8.86"], ["Longos - Grilled Chicken With", "$12.13"], ["Ginger - Pickled", "$2.26"], ["Wine - Magnotta - Bel Paese White", "$10.02"], ["Cranberry Foccacia", "$6.39"], ["Cod - Salted, Boneless", "$5.07"], ["Chicken - Soup Base", "$15.41"], ["Wine - Duboeuf Beaujolais", "$18.95"], ["Wine - Clavet Saint Emilion", "$23.39"], ["Wine - Vovray Sec Domaine Huet", "$16.59"], ["Blackberries", "$1.55"], ["Cocoa Feuilletine", "$14.68"], ["Tart Shells - Savory, 2", "$27.71"], ["Island Oasis - Ice Cream Mix", "$6.46"], ["Bread - Granary Small Pull", "$9.98"], ["Beef Striploin Aaa", "$25.68"], ["Thyme - Lemon, Fresh", "$22.30"], ["Pop - Club Soda Can", "$5.43"], ["Wine - Cotes Du Rhone Parallele", "$25.57"], ["Pepper - Julienne, Frozen", "$23.95"], ["Cod - Fillets", "$16.08"], ["Pepper - Black, Ground", "$4.72"], ["Daikon Radish", "$10.56"], ["Pear - Halves", "$9.70"], ["Cheese - Asiago", "$13.54"], ["Pail With Metal Handle 16l White", "$7.08"], ["Cherries - Maraschino,jar", "$25.40"], ["Oil - Margarine", "$4.54"], ["Curry Powder", "$5.02"], ["Coffee - 10oz Cup 92961", "$11.15"], ["Stainless Steel Cleaner Vision", "$14.55"], ["Remy Red", "$17.83"], ["Yogurt - Peach, 175 Gr", "$17.30"], ["Langers - Cranberry Cocktail", "$9.92"], ["Ocean Spray - Kiwi Strawberry", "$29.03"], ["Beef - Rouladin, Sliced", "$26.45"], ["Ice Cream Bar - Oreo Sandwich", "$6.43"], ["Beans - Green", "$11.33"], ["Dc - Frozen Momji", "$26.97"], ["Juice - Apple, 341 Ml", "$29.87"], ["Lid Tray - 12in Dome", "$23.16"], ["Muffin Batt - Ban Dream Zero", "$27.19"], ["Trout Rainbow Whole", "$15.00"], ["Soup - Campbells - Chicken Noodle", "$21.60"], ["Cake Circle, Foil, Scallop", "$5.37"], ["Coffee - Espresso", "$2.82"], ["Sauce - White, Mix", "$21.36"], ["Flour - Buckwheat, Dark", "$11.20"], ["Wooden Mop Handle", "$7.19"], ["Wine - Soave Folonari", "$14.87"], ["Appetizer - Seafood Assortment", "$7.70"], ["Vaccum Bag - 14x20", "$25.42"], ["Bowl 12 Oz - Showcase 92012", "$15.50"], ["Lettuce - Radicchio", "$22.99"], ["Magnotta - Bel Paese White", "$29.30"], ["Tomatoes - Plum, Canned", "$26.63"], ["Coffee - Beans, Whole", "$11.87"], ["Yeast Dry - Fermipan", "$9.00"], ["Juice - Apple, 1.36l", "$1.55"], ["Carbonated Water - Strawberry", "$13.42"], ["Lamb - Leg, Bone In", "$22.00"], ["Star Fruit", "$5.87"], ["Pepper - Black, Crushed", "$25.41"], ["Lobster - Tail 6 Oz", "$17.94"], ["Wine - Vovray Sec Domaine Huet", "$2.67"], ["Tart Shells - Savory, 4", "$7.71"], ["Trout Rainbow Whole", "$2.20"], ["Melon - Watermelon, Seedless", "$21.26"], ["Apron", "$8.53"], ["Beer - Alexander Kieths, Pale Ale", "$1.91"], ["Sauce - Thousand Island", "$17.12"], ["Galliano", "$12.70"], ["Apple - Macintosh", "$5.64"], ["Rice - Aborio", "$8.09"], ["Wine - Red, Lurton Merlot De", "$6.52"], ["Lid - High Heat, Super Clear", "$13.60"], ["Bread - Sticks, Thin, Plain", "$29.97"], ["Bread - Pullman, Sliced", "$4.80"], ["Russian Prince", "$2.80"], ["Chocolate - Pistoles, White", "$15.87"], ["Lobster - Cooked", "$17.81"], ["Lamb - Rack", "$2.92"], ["Clam - Cherrystone", "$4.71"], ["Lettuce - Lambs Mash", "$13.66"], ["Tea - Camomele", "$12.22"], ["Sauce - Bernaise, Mix", "$11.24"], ["Puree - Kiwi", "$17.34"], ["Star Fruit", "$11.76"], ["Bread - Pumpernickel", "$29.19"], ["Veal - Sweetbread", "$1.84"], ["Sponge Cake Mix - Chocolate", "$4.01"], ["Appetizer - Southwestern", "$4.32"], ["Trout - Rainbow, Fresh", "$2.20"], ["Cookie Dough - Peanut Butter", "$7.01"], ["Muffin - Banana Nut Individual", "$21.39"], ["Milk - 2% 250 Ml", "$14.36"], ["Sugar - Brown, Individual", "$9.23"], ["Heavy Duty Dust Pan", "$7.72"], ["Cheese - Marble", "$17.48"], ["Paste - Black Olive", "$19.88"], ["Pizza Pizza Dough", "$15.31"], ["Pastry - Key Limepoppy Seed Tea", "$4.76"], ["Pears - Bartlett", "$6.25"], ["Blueberries", "$8.24"], ["Bread Fig And Almond", "$25.00"], ["Lumpfish Black", "$14.08"], ["Ginsing - Fresh", "$4.98"], ["Langers - Cranberry Cocktail", "$1.32"], ["Bagel - Whole White Sesame", "$7.49"], ["Cookies - Englishbay Chochip", "$12.42"], ["Pepper Squash", "$13.36"], ["Cookies - Oreo, 4 Pack", "$29.46"], ["Kiwi", "$25.45"], ["Wine - White, Riesling, Henry Of", "$15.13"], ["Iced Tea Concentrate", "$29.85"], ["Oil - Sesame", "$24.38"], ["Pepper - Red Chili", "$3.45"], ["Tuna - Sushi Grade", "$21.55"], ["Bread - Dark Rye, Loaf", "$23.14"], ["Wine - Red, Lurton Merlot De", "$5.73"], ["Orange Roughy 6/8 Oz", "$25.02"], ["Sole - Fillet", "$1.28"], ["Beef - Top Butt", "$22.28"], ["Bread - Roll, Canadian Dinner", "$5.41"], ["Wine - Conde De Valdemar", "$13.14"], ["Wine - White, Schroder And Schyl", "$28.28"], ["Foil - Round Foil", "$28.54"], ["Cod - Fillets", "$9.95"], ["Shallots", "$29.40"], ["Rum - Mount Gay Eclipes", "$3.31"], ["Pastry - Trippleberry Muffin - Mini", "$20.82"], ["Rabbit - Whole", "$21.81"], ["Soup - Campbells, Beef Barley", "$6.30"], ["Kippers - Smoked", "$2.71"], ["Steam Pan - Half Size Deep", "$23.76"], ["Cleaner - Bleach", "$14.20"], ["Flour Dark Rye", "$13.35"], ["Pasta - Lasagna, Dry", "$1.68"], ["Cheese - Oka", "$21.24"], ["Croissants Thaw And Serve", "$23.58"], ["Wine - Sake", "$7.61"], ["Chocolate - Mi - Amere Semi", "$27.91"], ["Foie Gras", "$9.22"], ["Juice - Ocean Spray Cranberry", "$25.23"], ["Veal - Heart", "$15.31"], ["Pepper - Chili Powder", "$15.81"], ["Beer - Original Organic Lager", "$3.88"], ["Phyllo Dough", "$3.10"], ["Wine - Prosecco Valdobiaddene", "$24.38"], ["Remy Red Berry Infusion", "$21.15"], ["Cotton Wet Mop 16 Oz", "$19.46"], ["Wine - Spumante Bambino White", "$7.29"], ["Filter - Coffee", "$25.11"], ["Sour Puss Sour Apple", "$27.71"], ["Puree - Blackcurrant", "$8.34"], ["Cheese - Swiss", "$12.59"], ["Wine - Savigny - Les - Beaune", "$10.80"], ["Salad Dressing", "$14.07"], ["Spice - Montreal Steak Spice", "$18.74"], ["Fish - Soup Base, Bouillon", "$11.73"], ["Relish", "$29.57"], ["Chips Potato Swt Chilli Sour", "$6.54"], ["Foam Cup 6 Oz", "$9.81"], ["Lettuce - Boston Bib - Organic", "$21.07"], ["Sponge Cake Mix - Vanilla", "$9.83"], ["Beef - Top Butt", "$6.01"], ["Horseradish Root", "$22.04"], ["Tandoori Curry Paste", "$24.11"], ["Lettuce - Curly Endive", "$6.58"], ["Soup - Knorr, Chicken Noodle", "$16.75"], ["Wine - Red, Mouton Cadet", "$21.74"], ["Bar Energy Chocchip", "$29.31"], ["Smirnoff Green Apple Twist", "$14.72"], ["Bacardi Limon", "$21.52"], ["Beef Cheek Fresh", "$12.15"], ["Gherkin", "$29.31"], ["Lettuce - Boston Bib - Organic", "$16.43"], ["Pork - Back, Short Cut, Boneless", "$11.44"], ["Sauce - Sesame Thai Dressing", "$26.79"], ["Oven Mitts 17 Inch", "$25.19"], ["Langers - Ruby Red Grapfruit", "$29.79"], ["Nantucket - Orange Mango Cktl", "$3.01"], ["Wine - Manischewitz Concord", "$14.33"], ["Bread - Assorted Rolls", "$17.89"], ["Soup Campbells Mexicali Tortilla", "$20.66"], ["Crab - Claws, 26 - 30", "$14.46"], ["Spaghetti Squash", "$13.43"], ["Oil - Olive, Extra Virgin", "$8.66"], ["Mushroom - Portebello", "$24.89"], ["Flour - Bread", "$13.22"], ["Tomato - Plum With Basil", "$14.25"], ["Chocolate - Compound Coating", "$23.73"], ["Cake Circle, Paprus", "$16.44"], ["Sage - Fresh", "$3.59"], ["Milk - Chocolate 500ml", "$7.58"], ["Mushroom - Crimini", "$21.27"], ["Dome Lid Clear P92008h", "$6.99"], ["Lettuce - Spring Mix", "$9.87"], ["Coffee Swiss Choc Almond", "$3.98"], ["Shallots", "$25.95"], ["Broom - Angled", "$24.31"], ["Capon - Breast, Double, Wing On", "$26.47"], ["Bonito Flakes - Toku Katsuo", "$29.82"], ["Island Oasis - Ice Cream Mix", "$28.35"], ["Hog / Sausage Casing - Pork", "$9.73"], ["Veal - Insides Provini", "$12.32"], ["Cheese - Brick With Onion", "$27.40"], ["Pepper - Chillies, Crushed", "$21.75"], ["Buffalo - Tenderloin", "$20.22"], ["Beef Cheek Fresh", "$28.07"], ["Wine - Magnotta - Red, Baco", "$17.89"], ["Pepper - Julienne, Frozen", "$15.33"], ["Soup - French Can Pea", "$19.68"], ["Spice - Onion Powder Granulated", "$3.07"], ["Bread - Raisin Walnut Pull", "$11.95"], ["Sauce - White, Mix", "$9.36"], ["Pasta - Canelloni, Single Serve", "$23.54"], ["Ice Cream Bar - Hagen Daz", "$12.52"], ["Oil - Truffle, White", "$4.54"], ["Marsala - Sperone, Fine, D.o.c.", "$6.99"], ["Sour Puss Raspberry", "$12.06"], ["Bread - Bistro Sour", "$18.02"], ["Wine - Prosecco Valdobienne", "$8.25"], ["Carrots - Jumbo", "$5.47"], ["Longos - Grilled Salmon With Bbq", "$3.74"], ["Toamtoes 6x7 Select", "$18.88"], ["Pea - Snow", "$25.06"], ["Wine - Cabernet Sauvignon", "$15.48"], ["Potatoes - Mini White 3 Oz", "$8.40"], ["Wine - Jaboulet Cotes Du Rhone", "$29.47"], ["Wine - Red, Concha Y Toro", "$26.31"], ["Pork - Bacon Cooked Slcd", "$27.65"], ["Cheese - Grana Padano", "$3.78"], ["Juice - Orangina", "$18.46"], ["Sponge Cake Mix - Chocolate", "$10.70"], ["Sprouts - Baby Pea Tendrils", "$23.85"], ["Muffin Mix - Blueberry", "$18.03"], ["Rum - Dark, Bacardi, Black", "$28.13"], ["Blueberries", "$7.45"], ["Truffle Shells - Semi - Sweet", "$9.52"], ["Brandy Apricot", "$12.03"], ["Cheese - Montery Jack", "$6.03"], ["Foie Gras", "$4.28"], ["Bacardi Raspberry", "$5.35"], ["Raspberries - Frozen", "$20.80"], ["Doilies - 8, Paper", "$25.54"], ["Stock - Beef, White", "$24.21"], ["Apples - Spartan", "$8.58"], ["Flavouring Vanilla Artificial", "$1.19"], ["Cheese - Parmesan Cubes", "$16.28"], ["Cheese - Brick With Pepper", "$28.91"], ["Mayonnaise - Individual Pkg", "$19.18"], ["Nantucket Orange Juice", "$22.66"], ["Energy Drink", "$6.11"], ["Okra", "$15.92"], ["Bread - Ciabatta Buns", "$21.67"], ["Lotus Rootlets - Canned", "$11.56"], ["Cup - 4oz Translucent", "$6.18"], ["Oneshot Automatic Soap System", "$11.00"], ["Cookie Chocolate Chip With", "$20.35"], ["Tea - Jasmin Green", "$18.33"], ["Bread - Olive Dinner Roll", "$17.77"], ["Bacardi Limon", "$10.81"], ["Oil - Peanut", "$27.36"], ["Glucose", "$7.02"], ["Nescafe - Frothy French Vanilla", "$17.41"], ["Bread - Malt", "$8.36"], ["Sauce - Oyster", "$29.77"], ["Sugar - Monocystal / Rock", "$26.25"], ["Wine - Sogrape Mateus Rose", "$28.74"], ["Drambuie", "$28.20"], ["Lambcasing", "$21.09"], ["Tequila - Sauza Silver", "$8.12"], ["Wine - White, Ej Gallo", "$12.61"], ["Crab - Claws, 26 - 30", "$13.08"], ["Wine - Rioja Campo Viejo", "$7.71"], ["Veal - Kidney", "$28.44"], ["Dried Figs", "$28.71"], ["Carrots - Mini Red Organic", "$28.19"], ["Tea - Black Currant", "$1.50"], ["Cookie Chocolate Chip With", "$27.46"], ["Onions - Dried, Chopped", "$11.33"], ["Cleaner - Bleach", "$13.68"], ["Wine - Fat Bastard Merlot", "$10.12"], ["Sprouts - China Rose", "$23.71"], ["Muffin Mix - Blueberry", "$12.86"], ["Sage - Ground", "$15.50"], ["Soup - Beef, Base Mix", "$3.87"], ["Pork - Shoulder", "$18.44"], ["Flour - Bran, Red", "$18.04"], ["Rolled Oats", "$14.86"], ["White Fish - Filets", "$25.35"], ["Bagel - Whole White Sesame", "$1.26"], ["Bagel - Everything Presliced", "$20.13"], ["Orange - Blood", "$2.76"], ["Gatorade - Xfactor Berry", "$26.78"], ["Lemon Grass", "$14.05"], ["Celery Root", "$14.39"], ["Sour Puss Sour Apple", "$15.99"], ["Vinegar - Cider", "$2.53"], ["Pasta - Penne, Rigate, Dry", "$25.36"], ["Foil Cont Round", "$15.41"], ["Potatoes - Idaho 100 Count", "$28.41"], ["Flower - Leather Leaf Fern", "$29.83"], ["Tea - Green", "$18.60"], ["Juice - Apple, 1.36l", "$9.41"], ["Oranges", "$20.70"], ["Cheese - Taleggio D.o.p.", "$10.88"], ["Cheese - Perron Cheddar", "$16.42"], ["Pickles - Gherkins", "$20.11"], ["Wine - Red, Mouton Cadet", "$12.50"], ["Broom - Push", "$1.81"], ["Beef - Rib Roast, Cap On", "$9.01"], ["Sugar Thermometer", "$19.79"], ["Pastry - Apple Large", "$27.60"], ["Creamers - 10%", "$26.95"], ["Beer - Upper Canada Lager", "$11.82"], ["Mint - Fresh", "$7.12"], ["Wine - Piper Heidsieck Brut", "$22.68"], ["Pop - Club Soda Can", "$20.45"], ["Wine - Cousino Macul Antiguas", "$9.12"], ["Juice - Lemon", "$23.92"], ["Sugar - Brown", "$4.73"], ["Table Cloth 72x144 White", "$15.83"], ["Wine - Fino Tio Pepe Gonzalez", "$6.18"], ["Pork - Loin, Center Cut", "$8.92"], ["Container - Clear 16 Oz", "$5.77"], ["Beef Tenderloin Aaa", "$15.03"], ["Chicken - Soup Base", "$23.89"], ["Soup - Campbells Beef Noodle", "$1.68"], ["Chicken Thigh - Bone Out", "$8.12"], ["Foam Espresso Cup Plain White", "$1.92"], ["deneme", "500"]]} \ No newline at end of file diff --git a/Projects/Bugbusters/savecsv/university.csv b/Projects/Bugbusters/savecsv/university.csv new file mode 100644 index 000000000..f6bb143e1 --- /dev/null +++ b/Projects/Bugbusters/savecsv/university.csv @@ -0,0 +1,994 @@ +product,price +Crab - Imitation Flakes,$17.00 +Broom - Push,$28.29 +Muffin - Banana Nut Individual,$24.46 +"Chicken - Leg, Boneless",$19.85 +Ecolab - Hobart Upr Prewash Arm,$20.54 +Island Oasis - Strawberry,$17.62 +Bread - Raisin,$5.57 +Wine - Chateau Timberlay,$29.01 +"Coffee - Colombian, Portioned",$17.84 +Daikon Radish,$18.78 +Paper Cocktail Umberlla 80 - 180,$6.82 +Mushroom - Chanterelle Frozen,$23.84 +"Pepsi, 355 Ml",$22.23 +Chinese Foods - Cantonese,$1.14 +Celery Root,$9.71 +Bacardi Breezer - Strawberry,$12.93 +"Ice - Clear, 300 Lb For Carving",$15.85 +Dried Apple,$6.85 +Scallops - 20/30,$14.59 +Foil Wrap,$24.60 +Buffalo - Tenderloin,$3.61 +Carbonated Water - Blackcherry,$14.55 +Wood Chips - Regular,$21.82 +"Juice - Apple, 1.36l",$26.45 +"Nut - Almond, Blanched, Sliced",$7.82 +Longos - Chicken Cordon Bleu,$8.44 +"Juice - Grape, White",$23.54 +Cheese - Marble,$16.06 +"Mushroom - Shitake, Fresh",$21.60 +Grenadillo,$27.89 +Tarts Assorted,$16.51 +Numi - Assorted Teas,$8.41 +Wine - Puligny Montrachet A.,$6.28 +Dill Weed - Fresh,$24.59 +Tomatoes - Grape,$17.91 +Rosemary - Fresh,$16.54 +Maple Syrup,$6.52 +Longos - Chicken Curried,$26.65 +Cheese - Roquefort Pappillon,$1.93 +External Supplier,$2.16 +"Asparagus - Green, Fresh",$18.18 +Nori Sea Weed,$23.20 +"Wine - Red, Antinori Santa",$5.42 +Hipnotiq Liquor,$20.22 +Blueberries - Frozen,$15.00 +Sprouts - Onion,$12.45 +Okra,$12.82 +Mustard Prepared,$1.08 +Cod - Black Whole Fillet,$26.29 +Butcher Twine 4r,$6.54 +Veal - Kidney,$11.57 +Towels - Paper / Kraft,$13.74 +"Potatoes - Instant, Mashed",$1.98 +Cocoa Powder - Dutched,$1.31 +Fuji Apples,$26.44 +Wine - Baron De Rothschild,$5.22 +Barramundi,$14.08 +Cornstarch,$23.40 +Port - 74 Brights,$12.62 +Cream - 35%,$13.63 +Soup Campbells Split Pea And Ham,$8.82 +Yoplait Drink,$12.21 +Mushroom - Chanterelle Frozen,$25.77 +"Wine - Red, Wolf Blass, Yellow",$23.30 +Food Colouring - Blue,$1.80 +Sprouts - Peppercress,$17.64 +Salt - Sea,$24.32 +Chocolate - Semi Sweet,$12.84 +Rice - 7 Grain Blend,$7.48 +Truffle Shells - White Chocolate,$29.27 +The Pop Shoppe - Cream Soda,$19.72 +"Mushroom - Oyster, Fresh",$12.41 +The Pop Shoppe - Lime Rickey,$21.35 +"Juice - Apple, 341 Ml",$5.90 +Tuna - Loin,$13.30 +Nantucket Orange Juice,$24.91 +Tuna - Yellowfin,$23.23 +"Lamb - Leg, Diced",$12.36 +Chocolate - Chips Compound,$7.77 +Zucchini - Green,$11.30 +Gherkin - Sour,$19.13 +Sole - Fillet,$17.97 +Lettuce - Baby Salad Greens,$23.01 +Toamtoes 6x7 Select,$7.70 +Mace Ground,$24.48 +Wine - Black Tower Qr,$22.37 +Pants Custom Dry Clean,$23.76 +Veal - Leg,$25.48 +"Chocolate - Pistoles, Lactee, Milk",$20.28 +Beans - Butter Lrg Lima,$22.82 +Pepper - Yellow Bell,$27.60 +Bread Roll Foccacia,$11.94 +Muffin - Bran Ind Wrpd,$24.22 +Rye Special Old,$25.71 +Island Oasis - Lemonade,$21.13 +"Soup - Campbells, Butternut",$17.47 +Eggwhite Frozen,$17.63 +Cookie - Dough Variety,$8.36 +Numi - Assorted Teas,$20.33 +Madeira,$16.60 +Wine - Chardonnay South,$5.22 +Jam - Apricot,$1.54 +"Pasta - Lasagna Noodle, Frozen",$13.42 +Fish - Bones,$25.04 +"Pasta - Penne Primavera, Single",$10.14 +"Orange - Canned, Mandarin",$10.73 +Salt - Seasoned,$1.18 +V8 Splash Strawberry Kiwi,$3.58 +Flour - Strong,$7.27 +Cheese - Feta,$17.86 +"Tart Shells - Sweet, 3",$15.20 +"Star Anise, Whole",$10.67 +Pickle - Dill,$29.57 +Cocktail Napkin Blue,$4.26 +Cream Of Tartar,$10.43 +"Pepper - Black, Whole",$11.70 +Icecream - Dstk Super Cone,$8.01 +Salmon - Canned,$25.30 +Beets - Pickled,$3.09 +Wiberg Super Cure,$19.96 +Sausage - Blood Pudding,$7.08 +Dooleys Toffee,$28.64 +Bag Stand,$18.48 +"Pepper - Green, Chili",$12.37 +"Ecolab - Orange Frc, Cleaner",$15.49 +Container - Clear 16 Oz,$24.48 +Salt - Table,$29.27 +Wine - Savigny - Les - Beaune,$17.15 +Miso - Soy Bean Paste,$16.92 +Ginger - Crystalized,$29.76 +Pork - Backfat,$2.97 +Appetizer - Chicken Satay,$23.76 +Sausage - Chorizo,$26.74 +"Extract - Vanilla,artificial",$14.19 +"Pasta - Rotini, Colour, Dry",$13.13 +Cake - Mini Cheesecake,$26.39 +"Wine - Red, Lurton Merlot De",$10.26 +Nantucket Cranberry Juice,$2.75 +Truffle Cups Green,$16.49 +Chips Potato Swt Chilli Sour,$15.89 +"Brandy - Orange, Mc Guiness",$17.18 +Jameson - Irish Whiskey,$5.34 +Chocolate - Dark,$9.40 +Strawberries - California,$22.26 +Sage - Ground,$9.12 +Table Cloth 54x72 Colour,$24.52 +Soup - Campbells Beef Stew,$20.37 +Wine - Vidal Icewine Magnotta,$10.80 +Calypso - Strawberry Lemonade,$21.32 +Spinach - Spinach Leaf,$2.99 +Veal - Heart,$18.58 +"Yogurt - Cherry, 175 Gr",$21.29 +Veal - Liver,$9.98 +Foil Wrap,$3.66 +Smoked Tongue,$11.06 +Veal - Striploin,$7.80 +Creme De Cacao Mcguines,$24.02 +Beans - Butter Lrg Lima,$17.34 +Pork - Inside,$27.87 +"Basil - Primerba, Paste",$22.98 +Pie Pecan,$9.34 +Bread - Raisin Walnut Oval,$5.55 +"Wine - Magnotta - Red, Baco",$3.15 +"Beef - Tenderlion, Center Cut",$5.95 +Sherbet - Raspberry,$25.05 +True - Vue Containers,$17.47 +Stainless Steel Cleaner Vision,$4.89 +Beef - Inside Round,$24.82 +Bacardi Breezer - Strawberry,$21.23 +Appetizer - Tarragon Chicken,$9.72 +Tea - Herbal - 6 Asst,$25.09 +Vodka - Moskovskaya,$27.30 +"Cheese - Romano, Grated",$19.72 +Dc - Sakura Fu,$20.07 +Urban Zen Drinks,$19.52 +Wine - Gato Negro Cabernet,$20.17 +Rootbeer,$9.98 +Creme De Menth - White,$11.98 +Beer - Molson Excel,$20.22 +"Rice Pilaf, Dry,package",$9.51 +Nougat - Paste / Cream,$20.53 +Wine - Pinot Noir Pond Haddock,$19.83 +Corn Syrup,$27.68 +Bandage - Flexible Neon,$26.09 +Chocolate - White,$1.26 +Dasheen,$22.40 +Mushroom - Lg - Cello,$27.01 +"Bread - Pullman, Sliced",$29.62 +French Kiss Vanilla,$5.08 +"Tart Shells - Sweet, 4",$26.89 +Tuna - Sushi Grade,$8.29 +"Bread - Dark Rye, Loaf",$12.93 +Water - Evian 355 Ml,$5.02 +"Veal - Leg, Provimi - 50 Lb Max",$1.49 +Salmon Steak - Cohoe 8 Oz,$20.80 +"Jam - Strawberry, 20 Ml Jar",$4.77 +"Wine - White, Pinot Grigio",$7.99 +"Cheese - Boursin, Garlic / Herbs",$20.55 +Chicken - Livers,$9.44 +Bay Leaf,$8.60 +Cake - Box Window 10x10x2.5,$15.14 +Flour - Fast / Rapid,$11.97 +Cups 10oz Trans,$20.10 +Parsley - Fresh,$20.62 +"Mushrooms - Black, Dried",$4.18 +Wine - Chardonnay Mondavi,$3.45 +Curry Powder,$29.67 +Bag Stand,$2.65 +Muffin - Mix - Bran And Maple 15l,$17.44 +Tea - Jasmin Green,$20.74 +Beer - True North Lager,$5.08 +Raisin - Golden,$10.98 +Raspberries - Fresh,$1.34 +"Rum - Coconut, Malibu",$11.54 +"Nut - Walnut, Chopped",$10.64 +Lettuce - Baby Salad Greens,$23.88 +Salt - Seasoned,$26.89 +Wine - Valpolicella Masi,$12.92 +"Pepper - Green, Chili",$24.05 +"Ecolab - Orange Frc, Cleaner",$28.09 +Water - Green Tea Refresher,$25.71 +Vol Au Vents,$6.36 +Sauce - Plum,$22.61 +Wine - Fino Tio Pepe Gonzalez,$10.31 +"Leeks - Baby, White",$1.31 +"Crush - Grape, 355 Ml",$21.60 +Calypso - Pineapple Passion,$18.53 +Onions - Vidalia,$13.84 +Beef - Shank,$17.98 +"Nut - Peanut, Roasted",$22.05 +Tomatoes - Hot House,$24.74 +Muffin Mix - Oatmeal,$4.87 +"Soup - Canadian Pea, Dry Mix",$15.35 +Bread - Granary Small Pull,$22.03 +Longos - Grilled Veg Sandwiches,$8.69 +Soup Campbells Mexicali Tortilla,$6.93 +Beef Flat Iron Steak,$10.34 +Vinegar - White,$2.68 +Cinnamon - Stick,$18.69 +Mousse - Banana Chocolate,$6.55 +Ecolab Crystal Fusion,$20.05 +Wood Chips - Regular,$9.36 +Pork - Back Ribs,$4.63 +Lambcasing,$21.20 +Croissants Thaw And Serve,$12.16 +"Bread - Dark Rye, Loaf",$27.37 +"Bread - Sticks, Thin, Plain",$20.20 +"Olives - Black, Pitted",$9.41 +Corn Kernels - Frozen,$14.73 +Godiva White Chocolate,$29.98 +"Pepper - White, Ground",$24.42 +Chocolate Bar - Smarties,$27.57 +Orange Roughy 4/6 Oz,$28.22 +Teriyaki Sauce,$17.25 +Piping Jelly - All Colours,$18.74 +Chicken Thigh - Bone Out,$24.30 +Lobster - Tail 6 Oz,$25.06 +"Nestea - Ice Tea, Diet",$26.90 +"Pork - Butt, Boneless",$9.67 +"Zucchini - Mini, Green",$28.53 +"Pork - Tenderloin, Frozen",$27.90 +Turkey Leg With Drum And Thigh,$16.40 +"Nut - Almond, Blanched, Whole",$24.85 +Puree - Raspberry,$15.95 +Foam Espresso Cup Plain White,$13.51 +"Cherries - Maraschino,jar",$9.04 +Pie Shell - 9,$11.30 +Soup Campbells,$6.35 +Sole - Fillet,$20.02 +Chevere Logs,$17.75 +Cheese Cloth No 60,$4.86 +Longos - Burritos,$11.96 +Beef - Inside Round,$10.29 +Raisin - Golden,$25.48 +"Veal - Round, Eye Of",$9.48 +"Oil - Truffle, Black",$2.42 +Cheese - Sheep Milk,$16.80 +Tart - Raisin And Pecan,$28.89 +Bread - Raisin,$15.71 +Ice Cream - Fudge Bars,$6.98 +Squid - Breaded,$1.38 +Cinnamon - Ground,$7.24 +Shrimp - 100 / 200 Cold Water,$9.88 +"Ecolab - Orange Frc, Cleaner",$9.99 +Tea - Lemon Scented,$26.02 +Tahini Paste,$25.15 +Beer - True North Lager,$28.08 +Cookie Trail Mix,$3.82 +Pastry - Cherry Danish - Mini,$20.03 +Pastry - Baked Scones - Mini,$12.44 +Sprouts - Peppercress,$27.49 +Marjoram - Fresh,$20.44 +Island Oasis - Sweet And Sour Mix,$29.90 +Honey - Lavender,$19.71 +"Wine - Red, Pelee Island Merlot",$25.75 +Cabbage - Green,$15.18 +Mayonnaise,$3.91 +"Pepsi, 355 Ml",$13.30 +"Crush - Grape, 355 Ml",$1.13 +Table Cloth 62x114 Colour,$8.27 +"Wine - Red, Pelee Island Merlot",$22.97 +Wine - Ice Wine,$15.68 +Lime Cordial - Roses,$5.25 +Soup - Campbellschix Stew,$11.80 +Gelatine Leaves - Envelopes,$12.70 +Mousse - Passion Fruit,$28.55 +Yoplait Drink,$5.83 +"Salt - Rock, Course",$8.86 +Pastry - Plain Baked Croissant,$15.04 +"Napkin - Cocktail,beige 2 - Ply",$29.47 +Bag Stand,$26.26 +Yeast Dry - Fleischman,$27.98 +"Mushroom - Enoki, Dry",$5.41 +Cake - Cheese Cake 9 Inch,$22.62 +Dried Peach,$20.75 +"Wine - Red, Concha Y Toro",$2.24 +Grapefruit - White,$5.92 +"Rum - Light, Captain Morgan",$2.98 +Sandwich Wrap,$8.04 +Salt And Pepper Mix - White,$10.76 +Salmon - Canned,$12.61 +Cheese - Mozzarella,$7.80 +Muffin - Mix - Creme Brule 15l,$23.48 +Carbonated Water - Strawberry,$7.70 +Flour - Chickpea,$9.31 +Versatainer Nc - 9388,$8.72 +Ketchup - Tomato,$6.76 +Ice Cream Bar - Oreo Cone,$16.69 +Bread Crumbs - Japanese Style,$15.85 +"Artichoke - Bottom, Canned",$29.10 +"Cherries - Bing, Canned",$1.42 +Icecream Cone - Areo Chocolate,$3.89 +Shrimp - Black Tiger 6 - 8,$3.82 +Versatainer Nc - 9388,$5.16 +Lamb Tenderloin Nz Fr,$12.12 +"Pork - Sausage, Medium",$25.39 +Wine - Cave Springs Dry Riesling,$25.83 +Wine - Delicato Merlot,$20.83 +Grapefruit - White,$2.48 +Food Colouring - Red,$20.34 +"Nut - Hazelnut, Whole",$17.48 +Croissants Thaw And Serve,$22.59 +Ocean Spray - Ruby Red,$4.66 +"Beef - Kindney, Whole",$25.38 +Boogies,$7.25 +Cloves - Whole,$6.45 +Cheese - Bocconcini,$17.58 +Broom - Angled,$9.20 +Pail For Lid 1537,$26.12 +Pepper - Green,$20.26 +Cheese - Perron Cheddar,$2.44 +Sausage - Meat,$15.94 +Squash - Guords,$24.78 +Grapes - Red,$21.85 +Longos - Grilled Chicken With,$28.64 +Beef - Flank Steak,$3.33 +Salad Dressing,$1.53 +Cup - Translucent 7 Oz Clear,$3.55 +Ecolab - Medallion,$21.66 +Icecream Bar - Del Monte,$19.25 +Lobak,$9.26 +Nantucket - Orange Mango Cktl,$14.26 +Curry Powder Madras,$24.80 +Table Cloth 90x90 White,$20.67 +Beef - Ground Medium,$11.55 +Breakfast Quesadillas,$10.85 +Oil - Peanut,$14.35 +Truffle Cups Green,$24.46 +Galliano,$18.22 +"Nut - Walnut, Chopped",$13.55 +Wine - Trimbach Pinot Blanc,$20.78 +Bagels Poppyseed,$22.36 +Jolt Cola - Red Eye,$9.43 +"Wine - Magnotta, Merlot Sr Vqa",$6.20 +"Sprite, Diet - 355ml",$2.70 +Smoked Paprika,$9.67 +Meldea Green Tea Liquor,$14.60 +Carbonated Water - Lemon Lime,$3.83 +Filo Dough,$10.86 +Rice - Aborio,$9.61 +Filter - Coffee,$19.95 +Absolut Citron,$6.62 +Pastry - Apple Large,$22.34 +"Tomatoes - Vine Ripe, Yellow",$24.06 +Shichimi Togarashi Peppeers,$14.64 +Soupfoamcont12oz 112con,$15.85 +Bagel - Ched Chs Presliced,$17.43 +Ecolab Silver Fusion,$6.12 +Wine - Kwv Chenin Blanc South,$25.02 +Pate - Peppercorn,$7.45 +Lemon Tarts,$27.38 +"Wine - White, Lindemans Bin 95",$19.74 +Wine - Riesling Dr. Pauly,$12.87 +Maple Syrup,$5.48 +Beer - Blue,$29.70 +Bagelers,$6.78 +Puree - Passion Fruit,$1.35 +"Veal - Brisket, Provimi, Bone - In",$21.50 +Mustard Prepared,$23.25 +Bar Mix - Lime,$6.30 +Nacho Chips,$14.67 +"Beef - Rib Roast, Capless",$22.55 +Wine - Ej Gallo Sierra Valley,$18.14 +Bread - Bistro White,$2.18 +Flavouring - Orange,$11.65 +Otomegusa Dashi Konbu,$21.36 +Cheese - Goat With Herbs,$6.96 +Yoplait Drink,$7.61 +Nantucket - Carrot Orange,$4.58 +Bread - Malt,$18.94 +"Nut - Pine Nuts, Whole",$15.72 +Cabbage - Green,$21.13 +Piping - Bags Quizna,$25.75 +Glaze - Apricot,$26.20 +"Soup - Cream Of Broccoli, Dry",$2.96 +Beef Dry Aged Tenderloin Aaa,$14.05 +Veal - Inside,$27.43 +"Soup - Campbells, Chix Gumbo",$11.77 +Creme De Banane - Marie,$4.47 +Island Oasis - Wildberry,$20.87 +Peach - Halves,$18.85 +"Wine - Red, Harrow Estates, Cab",$6.02 +Basil - Pesto Sauce,$5.44 +Wine - Riesling Alsace Ac 2001,$8.43 +Wine - Penfolds Koonuga Hill,$28.95 +Pastry - French Mini Assorted,$11.66 +Broom Handle,$5.12 +Pasta - Canelloni,$4.58 +Cafe Royale,$17.75 +Scallops - U - 10,$14.59 +Nantucket Apple Juice,$24.95 +Rice Paper,$16.86 +"Cheese - Cheddar, Medium",$2.02 +"Beans - Black Bean, Preserved",$15.71 +Island Oasis - Sweet And Sour Mix,$20.67 +Chocolate Bar - Smarties,$6.59 +Tequila Rose Cream Liquor,$25.89 +Macaroons - Two Bite Choc,$23.66 +Cheese - Pied De Vents,$20.42 +Beer - Mcauslan Apricot,$2.14 +"Oranges - Navel, 72",$20.16 +Basil - Thai,$29.34 +Tea - Jasmin Green,$12.96 +Wine - Kwv Chenin Blanc South,$7.38 +Chick Peas - Canned,$1.98 +Cheese - Blue,$20.39 +Pike - Frozen Fillet,$26.59 +Wine - Sogrape Mateus Rose,$16.19 +Sugar - Brown,$10.03 +Muffin Batt - Blueberry Passion,$8.24 +Pasta - Fusili Tri - Coloured,$18.86 +Mussels - Frozen,$8.72 +Pastry - Baked Scones - Mini,$24.65 +Appetizer - Smoked Salmon / Dill,$5.87 +"Vermacelli - Sprinkles, Assorted",$2.86 +Lettuce - Boston Bib,$18.99 +Lamb Shoulder Boneless Nz,$6.45 +Smoked Paprika,$29.24 +Bread - Corn Muffaletta,$7.00 +Table Cloth 62x114 Colour,$7.88 +Pie Shell - 9,$24.52 +Beer - Pilsner Urquell,$10.84 +Tart - Lemon,$26.59 +Potatoes - Mini White 3 Oz,$15.08 +Flour - All Purpose,$27.47 +Tomato - Tricolor Cherry,$20.91 +Yukon Jack,$22.06 +"Mustard - Dry, Powder",$6.15 +"Brownies - Two Bite, Chocolate",$2.09 +Wine - Chateau Bonnet,$11.49 +Wine - Semi Dry Riesling Vineland,$15.51 +Compound - Orange,$23.55 +"Carrots - Mini, Stem On",$22.62 +Chip - Potato Dill Pickle,$23.93 +Sprouts - Onion,$16.77 +Yogurt - French Vanilla,$26.49 +Cookies - Assorted,$25.18 +Bread Crumbs - Panko,$1.16 +Tomatoes - Orange,$26.27 +"Pasta - Fett Alfredo, Single Serve",$15.73 +Cookie - Oreo 100x2,$5.57 +Vol Au Vents,$15.88 +Sausage - Andouille,$4.95 +Bar - Granola Trail Mix Fruit Nut,$22.28 +Soup - Base Broth Chix,$17.66 +Juice - Orangina,$17.40 +Appetizer - Chicken Satay,$12.54 +Sausage - Andouille,$26.45 +"Pepper - Chillies, Crushed",$22.92 +Beans - Butter Lrg Lima,$29.95 +"Cheese - Romano, Grated",$9.78 +Cake - Dulce De Leche,$28.67 +Pancetta,$5.05 +Bok Choy - Baby,$9.06 +Langers - Mango Nectar,$25.97 +Ginsing - Fresh,$17.62 +Lobster - Live,$11.61 +Wine - Hardys Bankside Shiraz,$5.60 +Cinnamon - Ground,$25.83 +Water Chestnut - Canned,$5.22 +"Turkey - Breast, Boneless Sk On",$17.72 +Onions - Red,$9.74 +Rolled Oats,$3.71 +Momiji Oroshi Chili Sauce,$28.11 +Oil - Hazelnut,$29.50 +Plate Pie Foil,$15.84 +Wine - Manischewitz Concord,$13.05 +"Pesto - Primerba, Paste",$17.88 +Uniform Linen Charge,$17.44 +Cilantro / Coriander - Fresh,$10.64 +Curry Powder,$5.32 +"Lamb - Leg, Boneless",$9.58 +Lemons,$26.27 +Cheese - Bakers Cream Cheese,$15.30 +Pie Pecan,$15.12 +Wine - Zonnebloem Pinotage,$27.19 +"Radish - Black, Winter, Organic",$10.86 +"Artichoke - Bottom, Canned",$23.33 +Chicken - White Meat With Tender,$15.59 +"Oil - Truffle, Black",$16.96 +Pork - Ground,$6.60 +Pickles - Gherkins,$5.09 +Cardamon Ground,$18.79 +Potatoes - Idaho 100 Count,$7.08 +Pork - Back Ribs,$24.34 +Pomello,$22.91 +Cinnamon Rolls,$12.11 +Halibut - Steaks,$5.16 +"Soup - Knorr, French Onion",$22.61 +Spinach - Baby,$21.54 +Dome Lid Clear P92008h,$8.52 +Butter - Unsalted,$29.40 +"Pork - Loin, Bone - In",$18.91 +Cake - Cake Sheet Macaroon,$8.88 +Icecream - Dstk Strw Chseck,$18.02 +Wine - Casablanca Valley,$14.32 +Fenngreek Seed,$28.61 +"Beef - Baby, Liver",$12.61 +Veal - Osso Bucco,$1.39 +Wine - Chablis J Moreau Et Fils,$15.67 +Eggplant Oriental,$26.65 +Sausage - Blood Pudding,$11.82 +Dc Hikiage Hira Huba,$26.51 +Cinnamon - Stick,$14.96 +Flour - Teff,$2.56 +"Nut - Almond, Blanched, Whole",$5.15 +Langers - Cranberry Cocktail,$22.14 +Sugar - Splenda Sweetener,$12.54 +Grapes - Red,$14.70 +Cleaner - Lime Away,$25.14 +Beef - Top Sirloin,$26.94 +Corn Kernels - Frozen,$1.51 +Longos - Cheese Tortellini,$28.22 +Jack Daniels,$27.04 +Cake - French Pear Tart,$10.59 +Chocolate - Feathers,$7.08 +"Ranchero - Primerba, Paste",$6.01 +Food Colouring - Green,$9.20 +Sauce - Rosee,$11.26 +Sausage - Meat,$1.76 +Soup - Campbells Beef Noodle,$15.09 +Coffee - Egg Nog Capuccino,$8.98 +"Tendrils - Baby Pea, Organic",$17.99 +Tomatoes - Yellow Hot House,$9.43 +Mushroom - Porcini Frozen,$12.46 +Cookie Dough - Oatmeal Rasin,$7.55 +Juice - Mango,$15.57 +Initation Crab Meat,$19.70 +Wine - Bouchard La Vignee Pinot,$27.49 +"Yogurt - Cherry, 175 Gr",$12.58 +"Juice - Tomato, 10 Oz",$28.32 +Cake Sheet Combo Party Pack,$15.47 +Quiche Assorted,$20.16 +Pork - Backfat,$26.04 +Beer - Sleemans Cream Ale,$13.66 +Wine - Masi Valpolocell,$23.26 +Seabream Whole Farmed,$3.08 +Horseradish - Prepared,$16.20 +"Zucchini - Mini, Green",$24.67 +Langers - Mango Nectar,$16.86 +Lid - 0090 Clear,$11.22 +Canada Dry,$10.27 +Island Oasis - Mango Daiquiri,$5.26 +Steel Wool S.o.s,$9.86 +Oil - Safflower,$2.09 +Grenadine,$5.44 +Breadfruit,$9.23 +"Wine - Red, Harrow Estates, Cab",$6.50 +Dc - Frozen Momji,$11.49 +"Wine - White, Schroder And Schyl",$25.72 +"Cherries - Maraschino,jar",$14.40 +Muffin Hinge Container 6,$20.66 +Kiwano,$9.17 +Ecolab - Power Fusion,$24.56 +Ice Cream Bar - Rolo Cone,$14.52 +Silicone Paper 16.5x24,$24.19 +Pear - Asian,$21.09 +Appetizer - Sausage Rolls,$14.36 +Coffee Cup 12oz 5342cd,$22.71 +Mushrooms - Honey,$4.96 +Soup - French Can Pea,$4.62 +"Lettuce - Romaine, Heart",$21.24 +"Nut - Pine Nuts, Whole",$22.91 +Lamb - Loin Chops,$13.86 +Broom - Angled,$23.51 +Cod - Fillets,$4.73 +"Beans - Black Bean, Canned",$9.67 +Pie Filling - Apple,$6.48 +Wine - Chateau Aqueria Tavel,$26.83 +Eggplant - Asian,$1.80 +V8 - Vegetable Cocktail,$11.92 +Appetizer - Lobster Phyllo Roll,$29.16 +Ocean Spray - Kiwi Strawberry,$13.85 +Wine - Casablanca Valley,$13.81 +Gelatine Leaves - Envelopes,$18.05 +"Wine - White, Pelee Island",$12.19 +Sour Puss Raspberry,$27.60 +Cheese - Comte,$28.51 +"Corn - Cream, Canned",$2.37 +Pork Casing,$29.08 +Onions - Cooking,$21.23 +Spinach - Spinach Leaf,$27.21 +Flower - Leather Leaf Fern,$15.57 +Sauce - Sesame Thai Dressing,$27.73 +Flour - Masa De Harina Mexican,$20.78 +"Vodka - Lemon, Absolut",$18.42 +"Cheese - Brie, Triple Creme",$8.31 +"Soup - Campbells, Lentil",$4.97 +Sauce - Chili,$19.59 +"Mushroom - Trumpet, Dry",$25.92 +Oil - Olive Bertolli,$13.36 +Muffin Carrot - Individual,$3.07 +Wine - Pinot Noir Pond Haddock,$29.43 +Apple - Custard,$20.41 +Bar Nature Valley,$16.76 +V8 Splash Strawberry Banana,$2.85 +Cognac - Courvaisier,$3.05 +Cheese - Comte,$4.09 +Vinegar - White Wine,$20.93 +Lighter - Bbq,$23.36 +Wine - Fume Blanc Fetzer,$20.59 +Cleaner - Lime Away,$8.06 +Worcestershire Sauce,$18.51 +Bouillion - Fish,$2.65 +Juice - Lemon,$4.57 +Guinea Fowl,$8.85 +Mix Pina Colada,$8.43 +Milk - Homo,$13.28 +Tomato - Green,$7.56 +Sterno - Chafing Dish Fuel,$7.23 +Beef - Tenderloin Tails,$23.15 +"Beans - Black Bean, Canned",$20.43 +Vinegar - White,$25.05 +Spic And Span All Purpose,$5.25 +Fudge - Cream Fudge,$18.61 +Lid - 3oz Med Rec,$1.46 +Juice - Happy Planet,$18.07 +Rice - Sushi,$5.46 +Wine - White Cab Sauv.on,$29.48 +Basil - Thai,$6.26 +Muffin - Mix - Creme Brule 15l,$8.86 +Longos - Grilled Chicken With,$12.13 +Ginger - Pickled,$2.26 +Wine - Magnotta - Bel Paese White,$10.02 +Cranberry Foccacia,$6.39 +"Cod - Salted, Boneless",$5.07 +Chicken - Soup Base,$15.41 +Wine - Duboeuf Beaujolais,$18.95 +Wine - Clavet Saint Emilion,$23.39 +Wine - Vovray Sec Domaine Huet,$16.59 +Blackberries,$1.55 +Cocoa Feuilletine,$14.68 +"Tart Shells - Savory, 2",$27.71 +Island Oasis - Ice Cream Mix,$6.46 +Bread - Granary Small Pull,$9.98 +Beef Striploin Aaa,$25.68 +"Thyme - Lemon, Fresh",$22.30 +Pop - Club Soda Can,$5.43 +Wine - Cotes Du Rhone Parallele,$25.57 +"Pepper - Julienne, Frozen",$23.95 +Cod - Fillets,$16.08 +"Pepper - Black, Ground",$4.72 +Daikon Radish,$10.56 +Pear - Halves,$9.70 +Cheese - Asiago,$13.54 +Pail With Metal Handle 16l White,$7.08 +"Cherries - Maraschino,jar",$25.40 +Oil - Margarine,$4.54 +Curry Powder,$5.02 +Coffee - 10oz Cup 92961,$11.15 +Stainless Steel Cleaner Vision,$14.55 +Remy Red,$17.83 +"Yogurt - Peach, 175 Gr",$17.30 +Langers - Cranberry Cocktail,$9.92 +Ocean Spray - Kiwi Strawberry,$29.03 +"Beef - Rouladin, Sliced",$26.45 +Ice Cream Bar - Oreo Sandwich,$6.43 +Beans - Green,$11.33 +Dc - Frozen Momji,$26.97 +"Juice - Apple, 341 Ml",$29.87 +Lid Tray - 12in Dome,$23.16 +Muffin Batt - Ban Dream Zero,$27.19 +Trout Rainbow Whole,$15.00 +Soup - Campbells - Chicken Noodle,$21.60 +"Cake Circle, Foil, Scallop",$5.37 +Coffee - Espresso,$2.82 +"Sauce - White, Mix",$21.36 +"Flour - Buckwheat, Dark",$11.20 +Wooden Mop Handle,$7.19 +Wine - Soave Folonari,$14.87 +Appetizer - Seafood Assortment,$7.70 +Vaccum Bag - 14x20,$25.42 +Bowl 12 Oz - Showcase 92012,$15.50 +Lettuce - Radicchio,$22.99 +Magnotta - Bel Paese White,$29.30 +"Tomatoes - Plum, Canned",$26.63 +"Coffee - Beans, Whole",$11.87 +Yeast Dry - Fermipan,$9.00 +"Juice - Apple, 1.36l",$1.55 +Carbonated Water - Strawberry,$13.42 +"Lamb - Leg, Bone In",$22.00 +Star Fruit,$5.87 +"Pepper - Black, Crushed",$25.41 +Lobster - Tail 6 Oz,$17.94 +Wine - Vovray Sec Domaine Huet,$2.67 +"Tart Shells - Savory, 4",$7.71 +Trout Rainbow Whole,$2.20 +"Melon - Watermelon, Seedless",$21.26 +Apron,$8.53 +"Beer - Alexander Kieths, Pale Ale",$1.91 +Sauce - Thousand Island,$17.12 +Galliano,$12.70 +Apple - Macintosh,$5.64 +Rice - Aborio,$8.09 +"Wine - Red, Lurton Merlot De",$6.52 +"Lid - High Heat, Super Clear",$13.60 +"Bread - Sticks, Thin, Plain",$29.97 +"Bread - Pullman, Sliced",$4.80 +Russian Prince,$2.80 +"Chocolate - Pistoles, White",$15.87 +Lobster - Cooked,$17.81 +Lamb - Rack,$2.92 +Clam - Cherrystone,$4.71 +Lettuce - Lambs Mash,$13.66 +Tea - Camomele,$12.22 +"Sauce - Bernaise, Mix",$11.24 +Puree - Kiwi,$17.34 +Star Fruit,$11.76 +Bread - Pumpernickel,$29.19 +Veal - Sweetbread,$1.84 +Sponge Cake Mix - Chocolate,$4.01 +Appetizer - Southwestern,$4.32 +"Trout - Rainbow, Fresh",$2.20 +Cookie Dough - Peanut Butter,$7.01 +Muffin - Banana Nut Individual,$21.39 +Milk - 2% 250 Ml,$14.36 +"Sugar - Brown, Individual",$9.23 +Heavy Duty Dust Pan,$7.72 +Cheese - Marble,$17.48 +Paste - Black Olive,$19.88 +Pizza Pizza Dough,$15.31 +Pastry - Key Limepoppy Seed Tea,$4.76 +Pears - Bartlett,$6.25 +Blueberries,$8.24 +Bread Fig And Almond,$25.00 +Lumpfish Black,$14.08 +Ginsing - Fresh,$4.98 +Langers - Cranberry Cocktail,$1.32 +Bagel - Whole White Sesame,$7.49 +Cookies - Englishbay Chochip,$12.42 +Pepper Squash,$13.36 +"Cookies - Oreo, 4 Pack",$29.46 +Kiwi,$25.45 +"Wine - White, Riesling, Henry Of",$15.13 +Iced Tea Concentrate,$29.85 +Oil - Sesame,$24.38 +Pepper - Red Chili,$3.45 +Tuna - Sushi Grade,$21.55 +"Bread - Dark Rye, Loaf",$23.14 +"Wine - Red, Lurton Merlot De",$5.73 +Orange Roughy 6/8 Oz,$25.02 +Sole - Fillet,$1.28 +Beef - Top Butt,$22.28 +"Bread - Roll, Canadian Dinner",$5.41 +Wine - Conde De Valdemar,$13.14 +"Wine - White, Schroder And Schyl",$28.28 +Foil - Round Foil,$28.54 +Cod - Fillets,$9.95 +Shallots,$29.40 +Rum - Mount Gay Eclipes,$3.31 +Pastry - Trippleberry Muffin - Mini,$20.82 +Rabbit - Whole,$21.81 +"Soup - Campbells, Beef Barley",$6.30 +Kippers - Smoked,$2.71 +Steam Pan - Half Size Deep,$23.76 +Cleaner - Bleach,$14.20 +Flour Dark Rye,$13.35 +"Pasta - Lasagna, Dry",$1.68 +Cheese - Oka,$21.24 +Croissants Thaw And Serve,$23.58 +Wine - Sake,$7.61 +Chocolate - Mi - Amere Semi,$27.91 +Foie Gras,$9.22 +Juice - Ocean Spray Cranberry,$25.23 +Veal - Heart,$15.31 +Pepper - Chili Powder,$15.81 +Beer - Original Organic Lager,$3.88 +Phyllo Dough,$3.10 +Wine - Prosecco Valdobiaddene,$24.38 +Remy Red Berry Infusion,$21.15 +Cotton Wet Mop 16 Oz,$19.46 +Wine - Spumante Bambino White,$7.29 +Filter - Coffee,$25.11 +Sour Puss Sour Apple,$27.71 +Puree - Blackcurrant,$8.34 +Cheese - Swiss,$12.59 +Wine - Savigny - Les - Beaune,$10.80 +Salad Dressing,$14.07 +Spice - Montreal Steak Spice,$18.74 +"Fish - Soup Base, Bouillon",$11.73 +Relish,$29.57 +Chips Potato Swt Chilli Sour,$6.54 +Foam Cup 6 Oz,$9.81 +Lettuce - Boston Bib - Organic,$21.07 +Sponge Cake Mix - Vanilla,$9.83 +Beef - Top Butt,$6.01 +Horseradish Root,$22.04 +Tandoori Curry Paste,$24.11 +Lettuce - Curly Endive,$6.58 +"Soup - Knorr, Chicken Noodle",$16.75 +"Wine - Red, Mouton Cadet",$21.74 +Bar Energy Chocchip,$29.31 +Smirnoff Green Apple Twist,$14.72 +Bacardi Limon,$21.52 +Beef Cheek Fresh,$12.15 +Gherkin,$29.31 +Lettuce - Boston Bib - Organic,$16.43 +"Pork - Back, Short Cut, Boneless",$11.44 +Sauce - Sesame Thai Dressing,$26.79 +Oven Mitts 17 Inch,$25.19 +Langers - Ruby Red Grapfruit,$29.79 +Nantucket - Orange Mango Cktl,$3.01 +Wine - Manischewitz Concord,$14.33 +Bread - Assorted Rolls,$17.89 +Soup Campbells Mexicali Tortilla,$20.66 +"Crab - Claws, 26 - 30",$14.46 +Spaghetti Squash,$13.43 +"Oil - Olive, Extra Virgin",$8.66 +Mushroom - Portebello,$24.89 +Flour - Bread,$13.22 +Tomato - Plum With Basil,$14.25 +Chocolate - Compound Coating,$23.73 +"Cake Circle, Paprus",$16.44 +Sage - Fresh,$3.59 +Milk - Chocolate 500ml,$7.58 +Mushroom - Crimini,$21.27 +Dome Lid Clear P92008h,$6.99 +Lettuce - Spring Mix,$9.87 +Coffee Swiss Choc Almond,$3.98 +Shallots,$25.95 +Broom - Angled,$24.31 +"Capon - Breast, Double, Wing On",$26.47 +Bonito Flakes - Toku Katsuo,$29.82 +Island Oasis - Ice Cream Mix,$28.35 +Hog / Sausage Casing - Pork,$9.73 +Veal - Insides Provini,$12.32 +Cheese - Brick With Onion,$27.40 +"Pepper - Chillies, Crushed",$21.75 +Buffalo - Tenderloin,$20.22 +Beef Cheek Fresh,$28.07 +"Wine - Magnotta - Red, Baco",$17.89 +"Pepper - Julienne, Frozen",$15.33 +Soup - French Can Pea,$19.68 +Spice - Onion Powder Granulated,$3.07 +Bread - Raisin Walnut Pull,$11.95 +"Sauce - White, Mix",$9.36 +"Pasta - Canelloni, Single Serve",$23.54 +Ice Cream Bar - Hagen Daz,$12.52 +"Oil - Truffle, White",$4.54 +"Marsala - Sperone, Fine, D.o.c.",$6.99 +Sour Puss Raspberry,$12.06 +Bread - Bistro Sour,$18.02 +Wine - Prosecco Valdobienne,$8.25 +Carrots - Jumbo,$5.47 +Longos - Grilled Salmon With Bbq,$3.74 +Toamtoes 6x7 Select,$18.88 +Pea - Snow,$25.06 +Wine - Cabernet Sauvignon,$15.48 +Potatoes - Mini White 3 Oz,$8.40 +Wine - Jaboulet Cotes Du Rhone,$29.47 +"Wine - Red, Concha Y Toro",$26.31 +Pork - Bacon Cooked Slcd,$27.65 +Cheese - Grana Padano,$3.78 +Juice - Orangina,$18.46 +Sponge Cake Mix - Chocolate,$10.70 +Sprouts - Baby Pea Tendrils,$23.85 +Muffin Mix - Blueberry,$18.03 +"Rum - Dark, Bacardi, Black",$28.13 +Blueberries,$7.45 +Truffle Shells - Semi - Sweet,$9.52 +Brandy Apricot,$12.03 +Cheese - Montery Jack,$6.03 +Foie Gras,$4.28 +Bacardi Raspberry,$5.35 +Raspberries - Frozen,$20.80 +"Doilies - 8, Paper",$25.54 +"Stock - Beef, White",$24.21 +Apples - Spartan,$8.58 +Flavouring Vanilla Artificial,$1.19 +Cheese - Parmesan Cubes,$16.28 +Cheese - Brick With Pepper,$28.91 +Mayonnaise - Individual Pkg,$19.18 +Nantucket Orange Juice,$22.66 +Energy Drink,$6.11 +Okra,$15.92 +Bread - Ciabatta Buns,$21.67 +Lotus Rootlets - Canned,$11.56 +Cup - 4oz Translucent,$6.18 +Oneshot Automatic Soap System,$11.00 +Cookie Chocolate Chip With,$20.35 +Tea - Jasmin Green,$18.33 +Bread - Olive Dinner Roll,$17.77 +Bacardi Limon,$10.81 +Oil - Peanut,$27.36 +Glucose,$7.02 +Nescafe - Frothy French Vanilla,$17.41 +Bread - Malt,$8.36 +Sauce - Oyster,$29.77 +Sugar - Monocystal / Rock,$26.25 +Wine - Sogrape Mateus Rose,$28.74 +Drambuie,$28.20 +Lambcasing,$21.09 +Tequila - Sauza Silver,$8.12 +"Wine - White, Ej Gallo",$12.61 +"Crab - Claws, 26 - 30",$13.08 +Wine - Rioja Campo Viejo,$7.71 +Veal - Kidney,$28.44 +Dried Figs,$28.71 +Carrots - Mini Red Organic,$28.19 +Tea - Black Currant,$1.50 +Cookie Chocolate Chip With,$27.46 +"Onions - Dried, Chopped",$11.33 +Cleaner - Bleach,$13.68 +Wine - Fat Bastard Merlot,$10.12 +Sprouts - China Rose,$23.71 +Muffin Mix - Blueberry,$12.86 +Sage - Ground,$15.50 +"Soup - Beef, Base Mix",$3.87 +Pork - Shoulder,$18.44 +"Flour - Bran, Red",$18.04 +Rolled Oats,$14.86 +White Fish - Filets,$25.35 +Bagel - Whole White Sesame,$1.26 +Bagel - Everything Presliced,$20.13 +Orange - Blood,$2.76 +Gatorade - Xfactor Berry,$26.78 +Lemon Grass,$14.05 +Celery Root,$14.39 +Sour Puss Sour Apple,$15.99 +Vinegar - Cider,$2.53 +"Pasta - Penne, Rigate, Dry",$25.36 +Foil Cont Round,$15.41 +Potatoes - Idaho 100 Count,$28.41 +Flower - Leather Leaf Fern,$29.83 +Tea - Green,$18.60 +"Juice - Apple, 1.36l",$9.41 +Oranges,$20.70 +Cheese - Taleggio D.o.p.,$10.88 +Cheese - Perron Cheddar,$16.42 +Pickles - Gherkins,$20.11 +"Wine - Red, Mouton Cadet",$12.50 +Broom - Push,$1.81 +"Beef - Rib Roast, Cap On",$9.01 +Sugar Thermometer,$19.79 +Pastry - Apple Large,$27.60 +Creamers - 10%,$26.95 +Beer - Upper Canada Lager,$11.82 +Mint - Fresh,$7.12 +Wine - Piper Heidsieck Brut,$22.68 +Pop - Club Soda Can,$20.45 +Wine - Cousino Macul Antiguas,$9.12 +Juice - Lemon,$23.92 +Sugar - Brown,$4.73 +Table Cloth 72x144 White,$15.83 +Wine - Fino Tio Pepe Gonzalez,$6.18 +"Pork - Loin, Center Cut",$8.92 +Container - Clear 16 Oz,$5.77 +Beef Tenderloin Aaa,$15.03 +Chicken - Soup Base,$23.89 +Soup - Campbells Beef Noodle,$1.68 +Chicken Thigh - Bone Out,$8.12 +Foam Espresso Cup Plain White,$1.92 +deneme,500 diff --git a/Projects/Bugbusters/static/icons/application_go.svg b/Projects/Bugbusters/static/icons/application_go.svg new file mode 100644 index 000000000..3ef61c6ac --- /dev/null +++ b/Projects/Bugbusters/static/icons/application_go.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/application_link.svg b/Projects/Bugbusters/static/icons/application_link.svg new file mode 100644 index 000000000..238c5ce31 --- /dev/null +++ b/Projects/Bugbusters/static/icons/application_link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/arrow_refresh_small.svg b/Projects/Bugbusters/static/icons/arrow_refresh_small.svg new file mode 100644 index 000000000..96d0e8ed1 --- /dev/null +++ b/Projects/Bugbusters/static/icons/arrow_refresh_small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/bullet_arrow_bottom.svg b/Projects/Bugbusters/static/icons/bullet_arrow_bottom.svg new file mode 100644 index 000000000..a66320c42 --- /dev/null +++ b/Projects/Bugbusters/static/icons/bullet_arrow_bottom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/bullet_arrow_down.svg b/Projects/Bugbusters/static/icons/bullet_arrow_down.svg new file mode 100644 index 000000000..dbf419eea --- /dev/null +++ b/Projects/Bugbusters/static/icons/bullet_arrow_down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/bullet_arrow_top.svg b/Projects/Bugbusters/static/icons/bullet_arrow_top.svg new file mode 100644 index 000000000..8f920e083 --- /dev/null +++ b/Projects/Bugbusters/static/icons/bullet_arrow_top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/bullet_arrow_up.svg b/Projects/Bugbusters/static/icons/bullet_arrow_up.svg new file mode 100644 index 000000000..554e0742a --- /dev/null +++ b/Projects/Bugbusters/static/icons/bullet_arrow_up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/cancel.svg b/Projects/Bugbusters/static/icons/cancel.svg new file mode 100644 index 000000000..9647fab8d --- /dev/null +++ b/Projects/Bugbusters/static/icons/cancel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/cog.svg b/Projects/Bugbusters/static/icons/cog.svg new file mode 100644 index 000000000..ea843f8ec --- /dev/null +++ b/Projects/Bugbusters/static/icons/cog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/cog_go.svg b/Projects/Bugbusters/static/icons/cog_go.svg new file mode 100644 index 000000000..3053112c1 --- /dev/null +++ b/Projects/Bugbusters/static/icons/cog_go.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/cross.svg b/Projects/Bugbusters/static/icons/cross.svg new file mode 100644 index 000000000..9a0d2ff14 --- /dev/null +++ b/Projects/Bugbusters/static/icons/cross.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/database.svg b/Projects/Bugbusters/static/icons/database.svg new file mode 100644 index 000000000..25dcd7176 --- /dev/null +++ b/Projects/Bugbusters/static/icons/database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/database_add.svg b/Projects/Bugbusters/static/icons/database_add.svg new file mode 100644 index 000000000..1ad18926d --- /dev/null +++ b/Projects/Bugbusters/static/icons/database_add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/database_go.svg b/Projects/Bugbusters/static/icons/database_go.svg new file mode 100644 index 000000000..15b6451b2 --- /dev/null +++ b/Projects/Bugbusters/static/icons/database_go.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/database_link.svg b/Projects/Bugbusters/static/icons/database_link.svg new file mode 100644 index 000000000..f48b0464b --- /dev/null +++ b/Projects/Bugbusters/static/icons/database_link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/database_refresh.svg b/Projects/Bugbusters/static/icons/database_refresh.svg new file mode 100644 index 000000000..ada718914 --- /dev/null +++ b/Projects/Bugbusters/static/icons/database_refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/database_save.svg b/Projects/Bugbusters/static/icons/database_save.svg new file mode 100644 index 000000000..ee26191ed --- /dev/null +++ b/Projects/Bugbusters/static/icons/database_save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/edit_cut.svg b/Projects/Bugbusters/static/icons/edit_cut.svg new file mode 100644 index 000000000..3abc76739 --- /dev/null +++ b/Projects/Bugbusters/static/icons/edit_cut.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/find_edit.svg b/Projects/Bugbusters/static/icons/find_edit.svg new file mode 100644 index 000000000..17db094c0 --- /dev/null +++ b/Projects/Bugbusters/static/icons/find_edit.svg @@ -0,0 +1,478 @@ + + + + + + image/svg+xml + + Find Edit + + + + + Find Edit + Find Edit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/Bugbusters/static/icons/help.svg b/Projects/Bugbusters/static/icons/help.svg new file mode 100644 index 000000000..5dc92b7c0 --- /dev/null +++ b/Projects/Bugbusters/static/icons/help.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/icons.qrc b/Projects/Bugbusters/static/icons/icons.qrc new file mode 100644 index 000000000..4629144ba --- /dev/null +++ b/Projects/Bugbusters/static/icons/icons.qrc @@ -0,0 +1,109 @@ + + + application_go.svg + application_link.svg + application_side_list.svg + arrow_refresh_small.svg + bullet_arrow_bottom.svg + bullet_arrow_down.svg + bullet_arrow_top.svg + bullet_arrow_up.svg + cancel.svg + chart_curve.svg + funnel_delete.svg + clear_sorting.svg + cog.svg + cog_go.svg + color_swatch.svg + cross.svg + edit_cut.svg + database.svg + database_add.svg + database_go.svg + database_link.svg + database_refresh.svg + database_save.svg + database_save.svg + funnel.svg + folder.svg + folder_page.svg + folder_user.svg + font.svg + font_add.svg + font_delete.svg + font_edit.svg + help.svg + hourglass.svg + key.svg + layout_sidebar.svg + link_break.svg + monitor_link.svg + package.svg + package_go.svg + package_rename.svg + package_save.svg + page_add.svg + page_copy.svg + script_copy.svg + page_delete.svg + page_edit.svg + page_find.svg + page_green.svg + page_key.svg + page_link.svg + page_white_color.svg + page_paste.svg + page_save.svg + page_white_copy.svg + page_white_database.svg + page_white_text.svg + picture.svg + picture_add.svg + picture_delete.svg + picture_edit.svg + picture_save.svg + plugin_add.svg + plugin_delete.svg + printer.svg + resultset_first.svg + resultset_last.svg + resultset_next.svg + resultset_previous.svg + script.svg + script_add.svg + script_delete.svg + script_edit.svg + script_link.svg + server_add.svg + server_go.svg + sqlitebrowser.png + tab.svg + tab_add.svg + table.svg + table_add.svg + table_delete.svg + table_edit.svg + table_key.svg + table_row_delete.svg + table_row_insert.svg + table_save.svg + tag_blue.svg + tag_blue_add.svg + tag_blue_delete.svg + tag_blue_edit.svg + text_align_center.svg + text_align_justify.svg + text_align_left.svg + text_align_right.svg + text_bold.svg + text_italic.svg + text_padding_left.svg + text_padding_top.svg + color_wheel.svg + find_edit.svg + text_underlined.svg + textfield_delete.svg + wrench.svg + undo.svg + + diff --git a/Projects/Bugbusters/static/icons/icons8-refresh.svg b/Projects/Bugbusters/static/icons/icons8-refresh.svg new file mode 100644 index 000000000..8c75b38a1 --- /dev/null +++ b/Projects/Bugbusters/static/icons/icons8-refresh.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/indent-solid.svg b/Projects/Bugbusters/static/icons/indent-solid.svg new file mode 100644 index 000000000..eba47e967 --- /dev/null +++ b/Projects/Bugbusters/static/icons/indent-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/package.svg b/Projects/Bugbusters/static/icons/package.svg new file mode 100644 index 000000000..cca19521e --- /dev/null +++ b/Projects/Bugbusters/static/icons/package.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/package_go.svg b/Projects/Bugbusters/static/icons/package_go.svg new file mode 100644 index 000000000..c68be1917 --- /dev/null +++ b/Projects/Bugbusters/static/icons/package_go.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/package_rename.svg b/Projects/Bugbusters/static/icons/package_rename.svg new file mode 100644 index 000000000..b9afe334f --- /dev/null +++ b/Projects/Bugbusters/static/icons/package_rename.svg @@ -0,0 +1,357 @@ + + + + + + image/svg+xml + + Package + + + + + + + + + + + + + + + + + + Package + Package Software + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/Bugbusters/static/icons/package_save.svg b/Projects/Bugbusters/static/icons/package_save.svg new file mode 100644 index 000000000..9978fdaed --- /dev/null +++ b/Projects/Bugbusters/static/icons/package_save.svg @@ -0,0 +1,603 @@ + + + + + + image/svg+xml + + Package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Package + Package Software + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/Bugbusters/static/icons/package_world.svg b/Projects/Bugbusters/static/icons/package_world.svg new file mode 100644 index 000000000..e42fd3e37 --- /dev/null +++ b/Projects/Bugbusters/static/icons/package_world.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/page_add.svg b/Projects/Bugbusters/static/icons/page_add.svg new file mode 100644 index 000000000..5074d0c64 --- /dev/null +++ b/Projects/Bugbusters/static/icons/page_add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/page_save.svg b/Projects/Bugbusters/static/icons/page_save.svg new file mode 100644 index 000000000..42f7a12bf --- /dev/null +++ b/Projects/Bugbusters/static/icons/page_save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/page_white_text.svg b/Projects/Bugbusters/static/icons/page_white_text.svg new file mode 100644 index 000000000..ca5950b3b --- /dev/null +++ b/Projects/Bugbusters/static/icons/page_white_text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/picture.svg b/Projects/Bugbusters/static/icons/picture.svg new file mode 100644 index 000000000..608ab8412 --- /dev/null +++ b/Projects/Bugbusters/static/icons/picture.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/picture_add.svg b/Projects/Bugbusters/static/icons/picture_add.svg new file mode 100644 index 000000000..98c1c4cda --- /dev/null +++ b/Projects/Bugbusters/static/icons/picture_add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/plugin_add.svg b/Projects/Bugbusters/static/icons/plugin_add.svg new file mode 100644 index 000000000..b416e14ce --- /dev/null +++ b/Projects/Bugbusters/static/icons/plugin_add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/printer.svg b/Projects/Bugbusters/static/icons/printer.svg new file mode 100644 index 000000000..56b5787b4 --- /dev/null +++ b/Projects/Bugbusters/static/icons/printer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/server_go.svg b/Projects/Bugbusters/static/icons/server_go.svg new file mode 100644 index 000000000..4609516a6 --- /dev/null +++ b/Projects/Bugbusters/static/icons/server_go.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/sqlitebrowser.png b/Projects/Bugbusters/static/icons/sqlitebrowser.png new file mode 100644 index 0000000000000000000000000000000000000000..7897a11e5a55c58d79e6bd147590886011712e24 GIT binary patch literal 15047 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 literal 0 HcmV?d00001 diff --git a/Projects/Bugbusters/static/icons/tab_add.svg b/Projects/Bugbusters/static/icons/tab_add.svg new file mode 100644 index 000000000..b76986388 --- /dev/null +++ b/Projects/Bugbusters/static/icons/tab_add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/tag_blue.svg b/Projects/Bugbusters/static/icons/tag_blue.svg new file mode 100644 index 000000000..bf9bcc000 --- /dev/null +++ b/Projects/Bugbusters/static/icons/tag_blue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/tag_blue_add.svg b/Projects/Bugbusters/static/icons/tag_blue_add.svg new file mode 100644 index 000000000..11d195a27 --- /dev/null +++ b/Projects/Bugbusters/static/icons/tag_blue_add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/icons/tag_blue_delete.svg b/Projects/Bugbusters/static/icons/tag_blue_delete.svg new file mode 100644 index 000000000..8a400633d --- /dev/null +++ b/Projects/Bugbusters/static/icons/tag_blue_delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/Bugbusters/static/script.js b/Projects/Bugbusters/static/script.js new file mode 100644 index 000000000..cfdbb7750 --- /dev/null +++ b/Projects/Bugbusters/static/script.js @@ -0,0 +1,1727 @@ +// Database Structure Buton +const dbStructure = document.getElementById("dbStructure"); + +//buttons +const removeButton = document.getElementById("removeBButton"); +const moveTopButton = document.getElementById("moveTButton"); +const moveUpButton = document.getElementById("moveUButton"); +const moveDownButton = document.getElementById("moveDButton"); +const moveBottomButton = document.getElementById("moveBButton"); +const filePath = document.getElementById("filePath").value; +const fileName = document.getElementById("fileName").value; +const modalButton = document.getElementById("modalButton"); +const spButton = document.getElementById("save-project"); +const adButton = document.getElementById("ad-database"); +const cButton = document.getElementById("c-database"); +const fad = document.querySelector(".ddia>a#f-ad"); +const fcd = document.querySelector("#f-cd"); +const fsp = document.querySelector(".ddia>a#f-sp"); +const fspa = document.querySelector(".ddia>a#f-spa"); +const fsa = document.querySelector(".ddia>a#f-sa"); +const mCT = document.getElementById("mCT"); +const mCI = document.getElementById("mCI"); +const openProject = document.getElementById("openProject"); +const saveProject = document.getElementById("save-project"); +const adDatabase = document.getElementById("ad-database"); +const createTable = document.getElementById("createTable"); +const modifyTable = document.getElementById("modifyTable"); +const deleteTable = document.getElementById("deleteTable"); +const openDataB = document.getElementById("f-open-db"); +const openDatabase = document.getElementById("openDB"); +const closeFileDB = document.getElementById("f-cd"); +const closeDB = document.getElementById("c-database"); +const fileInput = document.getElementById("formFile"); +const compactDB = document.getElementById("t-cd"); +const loadE = document.getElementById("t-le"); +const integrityCheck = document.getElementById("t-ic"); +const quickIntegrityCheck = document.getElementById("t-qic"); +const fkCheck = document.getElementById("t-fkc"); +const optimize = document.getElementById("t-o"); +const csvFile = document.getElementById("csvFile"); +const cancelFile = document.getElementById("cancelFile"); +const cancelButton = document.getElementById("sqlQueryCancel"); +const csv = document.getElementById("csv"); +const ucsv = document.getElementById("uploadCSV"); +const csvOK = document.getElementById("csvOK"); +const tableToCSV = document.getElementById("tableToCSV"); +const tableToJSON = document.getElementById("tableToJSON"); + +dbStructure.addEventListener("click", () => { + const text = dbStructure.textContent; + console.log(text); +}); + +// Browse Data Buton +const browseDataButton = document.getElementById("browseData"); + +browseDataButton.addEventListener("click", async () => { + fetch("/show_table") + .then((response) => response.json()) + .then((data) => { + if (data.tables) { + const tableData = data.tables; + const genisEkran = document.querySelector(".genisEkran"); + genisEkran.innerHTML = ""; + + for (const tableName in tableData) { + const columns = tableData[tableName].columns; + const rows = tableData[tableName].data; + + // Create table element with Bootstrap classes + const table = document.createElement("table"); + table.classList.add("table", "table-striped", "table-bordered"); + const thead = document.createElement("thead"); + const tbody = document.createElement("tbody"); + + // Create table header with search boxes + const headerRow = document.createElement("tr"); + const searchRow = document.createElement("tr"); + + columns.forEach((column) => { + const th = document.createElement("th"); + th.textContent = column; + headerRow.appendChild(th); + + const searchTh = document.createElement("th"); + const searchInput = document.createElement("input"); + searchInput.type = "text"; + searchInput.placeholder = `Search ${column}`; + searchInput.setAttribute("data-column", column); + searchInput.addEventListener("input", function () { + filterTable(table, column, this.value); + }); + searchTh.appendChild(searchInput); + searchRow.appendChild(searchTh); + }); + + thead.appendChild(headerRow); + thead.appendChild(searchRow); + + // Create table body + rows.forEach((row) => { + const tr = document.createElement("tr"); + row.forEach((cell) => { + const td = document.createElement("td"); + td.textContent = cell; + tr.appendChild(td); + }); + tbody.appendChild(tr); + }); + + table.appendChild(thead); + table.appendChild(tbody); + genisEkran.appendChild(table); + } + } + }) + .catch((error) => console.error("Error:", error)); +}); + +function filterTable(table, column, query) { + const rows = table.getElementsByTagName("tr"); + const headerCells = rows[0].getElementsByTagName("th"); + let columnIndex; + + for (let i = 0; i < headerCells.length; i++) { + if (headerCells[i].textContent === column) { + columnIndex = i; + break; + } + } + + for (let i = 2; i < rows.length; i++) { + // start from 2 to skip header and search rows + const cells = rows[i].getElementsByTagName("td"); + if ( + cells[columnIndex].textContent.toLowerCase().includes(query.toLowerCase()) + ) { + rows[i].style.display = ""; + } else { + rows[i].style.display = "none"; + } + } +} + +// edit Paragmas Buton +const editParagmas = document.getElementById("editParagmas"); + +editParagmas.addEventListener("click", () => { + const text = editParagmas.textContent; + console.log(text); +}); + +// execute SQL Buton +const executeSQL = document.getElementById("executeSQL"); + +executeSQL.addEventListener("click", () => { + const genisEkranDiv = document.querySelector(".row.genisEkran"); + genisEkranDiv.innerHTML = ""; + + const col = document.createElement("div"); + col.classList.add("col"); + + const icons = document.createElement("div"); + icons.classList.add("row", "align-items-center"); + icons.style.height = "30px"; + icons.style.display = "flex"; + icons.style.marginBottom = "8px"; + + const button1 = document.createElement("button"); + button1.classList.add("btn"); + button1.type = "button"; + button1.classList.add("execute-sql-buttons"); + const img1 = document.createElement("img"); + img1.src = "../static/icons/tab_add.svg"; // İlk ikonun resmi yolu + img1.style.width = "100%"; + button1.appendChild(img1); + icons.appendChild(button1); + const button2 = document.createElement("button"); + button2.classList.add("btn"); + button2.type = "button"; + button2.classList.add("execute-sql-buttons"); + const iconClass2 = ["fa-regular", "fa-file", "fa-xs"]; + const iconColor = "#0b3275"; + const iconElement = document.createElement("i"); + iconClass2.forEach((cls) => iconElement.classList.add(cls)); + iconElement.style.color = iconColor; + button2.appendChild(iconElement); + icons.appendChild(button2); + const button3 = document.createElement("button"); + button3.classList.add("btn"); + button3.type = "button"; + button3.classList.add("execute-sql-buttons"); + const img3 = document.createElement("img"); + img3.src = "../static/icons/page_save.svg"; // İlk ikonun resmi yolu + img3.style.width = "100%"; + button3.appendChild(img3); + icons.appendChild(button3); + const button4 = document.createElement("button"); + button4.classList.add("btn"); + button4.type = "button"; + button4.classList.add("execute-sql-buttons"); + const img4 = document.createElement("img"); + img4.src = "../static/icons/printer.svg"; // İlk ikonun resmi yolu + img4.style.width = "100%"; + button4.appendChild(img4); + icons.appendChild(button4); + const button5 = document.createElement("button"); + button5.classList.add("btn"); + button5.type = "button"; + button5.classList.add("execute-sql-buttons"); + button5.classList.add("disabled"); + button5.id = "executeSQLB"; + const img5 = document.createElement("img"); + img5.src = "../static/icons/resultset_next.svg"; // İlk ikonun resmi yolu + img5.style.width = "100%"; + button5.appendChild(img5); + icons.appendChild(button5); + const button6 = document.createElement("button"); + button6.classList.add("btn"); + button6.type = "button"; + button6.id = "executeCurrent"; + button6.classList.add("execute-sql-buttons"); + button6.classList.add("disabled"); + const img6 = document.createElement("img"); + img6.src = "../static/icons/resultset_last.svg"; // İlk ikonun resmi yolu + img6.style.width = "100%"; + button6.appendChild(img6); + icons.appendChild(button6); + const button7 = document.createElement("button"); + button7.classList.add("btn"); + button7.type = "button"; + button7.classList.add("execute-sql-buttons"); + button7.classList.add("disabled"); + button7.id = "stopSQL"; + const img7 = document.createElement("img"); + img7.src = "../static/icons/cancel.svg"; // İlk ikonun resmi yolu + img7.style.width = "100%"; + button7.appendChild(img7); + icons.appendChild(button7); + const button8 = document.createElement("button"); + button8.classList.add("btn"); + button8.type = "button"; + button8.classList.add("execute-sql-buttons"); + button8.classList.add("disabled"); + button8.id = "saveResult"; + const img8 = document.createElement("img"); + img8.src = "../static/icons/table_save.svg"; // İlk ikonun resmi yolu + img8.style.width = "100%"; + button8.appendChild(img8); + icons.appendChild(button8); + const button9 = document.createElement("button"); + button9.classList.add("btn"); + button9.type = "button"; + button9.classList.add("execute-sql-buttons"); + const img9 = document.createElement("img"); + img9.src = "../static/icons/page_find.svg"; // İlk ikonun resmi yolu + img9.style.width = "100%"; + button9.appendChild(img9); + icons.appendChild(button9); + const button10 = document.createElement("button"); + button10.classList.add("btn"); + button10.type = "button"; + button10.classList.add("execute-sql-buttons"); + const iconClass10 = ["fa-solid", "fa-spell-check", "fa-xs"]; + const iconColor10 = "#3960a2"; + const iconElement10 = document.createElement("i"); + iconClass10.forEach((cls) => iconElement10.classList.add(cls)); + iconElement10.style.color = iconColor10; + button10.appendChild(iconElement10); + icons.appendChild(button10); + const button11 = document.createElement("button"); + button11.classList.add("btn"); + button11.type = "button"; + button11.classList.add("execute-sql-buttons"); + const iconClass11 = ["fa-solid", "fa-indent", "fa-xs"]; + const iconColor11 = "#03682a"; + const iconElement11 = document.createElement("i"); + iconClass11.forEach((cls) => iconElement11.classList.add(cls)); + iconElement11.style.color = iconColor11; + button11.appendChild(iconElement11); + icons.appendChild(button11); + + col.appendChild(icons); + + const sqlQ = document.createElement("div"); + sqlQ.classList.add("sqlQ"); + const sqlQ_main = document.createElement("div"); + sqlQ_main.classList.add("sqlQ_main"); + const sqlQ_body = document.createElement("div"); + sqlQ_body.classList.add("sqlQ_body"); + const queryBox = document.createElement("div"); + const classnames = ["queryBox", "btn"]; + classnames.forEach((cls) => queryBox.classList.add(cls)); + queryBox.textContent = "Query 1"; + queryBox.classList.toggle("active"); + sqlQ_main.appendChild(queryBox); + sqlQ_main.appendChild(sqlQ_body); + col.appendChild(sqlQ); + + // col1 ve col2 içerisine inner1 ve inner2 div ekle + const inner1 = document.createElement("div"); + inner1.classList.add("inner-box-left"); + // Yeni bir satır div oluştur ve içeriğine "1" yaz + const rowDiv = document.createElement("div"); + rowDiv.textContent = "1"; + rowDiv.classList.add("row-item"); // Satır gibi davranması için bir sınıf ekleyin (CSS ile stil verebilirsiniz) + inner1.appendChild(rowDiv); + + const inner2 = document.createElement("div"); + inner2.classList.add("inner-box-right"); + const textarea = document.createElement("textarea"); + textarea.style.width = "100%"; // Genişlik ayarı + textarea.style.height = "-webkit-fill-available"; // Yükseklik ayarı + textarea.id = "sql-textarea"; + inner2.appendChild(textarea); + + sqlQ_body.appendChild(inner1); + sqlQ_body.appendChild(inner2); + + sqlQ_main.appendChild(sqlQ_body); + + // Ana col'a sqlQ_main'i ekle + sqlQ.appendChild(sqlQ_main); + + // Geniş Ekran div'ine ana col'u ekle + genisEkranDiv.appendChild(col); + const sqlText = document.getElementById("sql-textarea"); + + let counter = 2; // Sayacı dışarıda tanımlıyoruz, böylece her olay tetiklendiğinde sıfırlanmaz + + sqlText.addEventListener("keydown", (event) => { + if (event.key === "Enter") { + const newRow = document.createElement("div"); + newRow.classList.add("row-item"); + newRow.style.overflowY = "auto "; + newRow.textContent = counter; + inner1.appendChild(newRow); + counter++; + } else if (event.key === "Backspace") { + // Backspace tuşuna basıldığında gerçekleşecek işlemler + const cursorPosition = sqlText.selectionStart; + + // Metin alanının başında değilse ve mevcut satır boşsa + if ( + cursorPosition !== 0 && + sqlText.value.charAt(cursorPosition - 1) === "\n" + ) { + // İlgili satırı sil + const lines = sqlText.value.split("\n"); + const lineIndex = + sqlText.value.substr(0, cursorPosition).split("\n").length - 1; + + if (lines[lineIndex].trim() === "") { + // Satırda hiç karakter yoksa, row-item'ı sil + const rowItems = inner1.querySelectorAll(".row-item"); + if (rowItems.length > 0) { + inner1.removeChild(rowItems[rowItems.length - 1]); + } + counter--; + } + } + } + }); + if (dbOpened) { + const executeSQLButton = document.getElementById("executeSQLB"); + executeSQLButton.classList.remove("disabled"); + const executeCurrentButton = document.getElementById("executeCurrent"); + executeCurrentButton.classList.remove("disabled"); + const stopSQLButton = document.getElementById("stopSQL"); + stopSQLButton.classList.remove("disabled"); + const saveResultButton = document.getElementById("saveResult"); + saveResultButton.classList.remove("disabled"); + executeSQLB.addEventListener("click", async () => { + const sqlQuery = document.getElementById("sql-textarea").value; + try { + const response = await fetch("/execute_sql", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ sql_query: sqlQuery }), + }); + + const result = await response.json(); + if (response.ok) { + const columnNames = result.data.column_names; + const sqlResults = result.data.result; + console.log("Column names:", columnNames); + console.log("Result:", sqlResults); + + // Tablo öğesini oluşturun + const table = document.createElement("table"); + table.classList.add("table"); + + // Tablonun başlığını oluşturun + const tableHead = document.createElement("thead"); + const headRow = document.createElement("tr"); + + // Satır numarası için başlık oluşturun + const thRowNum = document.createElement("th"); + thRowNum.setAttribute("scope", "col"); + thRowNum.textContent = "#"; + headRow.appendChild(thRowNum); + + // Attribute başlıklarını oluşturun + columnNames.forEach((columnName, index) => { + const th = document.createElement("th"); + th.setAttribute("scope", "col"); + th.textContent = columnName; + headRow.appendChild(th); + }); + + tableHead.appendChild(headRow); + table.appendChild(tableHead); + + // Tablonun gövdesini oluşturun + const tableBody = document.createElement("tbody"); + + // SQL sonuçlarını tabloya ekleyin + sqlResults.forEach((row, index) => { + const tr = document.createElement("tr"); + + // Satır numarasını ekle + const thRowIndex = document.createElement("th"); + thRowIndex.setAttribute("scope", "row"); + thRowIndex.textContent = index + 1; + tr.appendChild(thRowIndex); + + // Her bir attribute için bir td oluşturun + row.forEach((item) => { + const td = document.createElement("td"); + td.textContent = item; + tr.appendChild(td); + }); + + tableBody.appendChild(tr); + }); + + table.appendChild(tableBody); + + // Önceki sonuçları temizleyin + const sqlQM = document.querySelector(".sqlQ_main"); + const previousResults = sqlQM.querySelectorAll(".sqlQ_result"); + previousResults.forEach((result) => { + result.remove(); + }); + + // Yeni sonuçları sayfaya ekleyin + const sqlQResult = document.createElement("div"); + sqlQResult.classList.add("sqlQ_result"); + sqlQResult.appendChild(table); + sqlQM.appendChild(sqlQResult); + + if (dbOpened) { + const executeSQLButton = document.getElementById("executeSQLB"); + executeSQLButton.classList.remove("disabled"); + const executeCurrentButton = + document.getElementById("executeCurrent"); + executeCurrentButton.classList.remove("disabled"); + const stopSQLButton = document.getElementById("stopSQL"); + stopSQLButton.classList.remove("disabled"); + const saveResultButton = document.getElementById("saveResult"); + saveResultButton.classList.remove("disabled"); + } + } else { + alert(result.error || result.message); + } + } catch (error) { + console.error( + "An error occurred while executing the SQL query:", + error + ); + } + }); + } +}); + +document.addEventListener("DOMContentLoaded", function () { + // "cog" sınıfına sahip div'i seç + const cogDiv = document.querySelector(".cog"); + + // Tıklanan resmin görünürlüğünü değiştiren bir olay dinleyici ekle + cogDiv.addEventListener("click", function (event) { + // Tıklanan öğe bir resim mi kontrol et + if (event.target.tagName === "IMG") { + // Tıklanan resmin görünürlüğünü değiştir + event.target.classList.toggle("hidden"); + + // Diğer resmin görünürlüğünü değiştir + const otherImage = event.target.nextElementSibling; + if (otherImage) { + otherImage.classList.toggle("hidden"); + } else { + // Diğer resim yoksa (yani son resim görüntüleniyorsa), ilk resmi görünür yap + const firstImage = event.target.previousElementSibling; + if (firstImage) { + firstImage.classList.remove("hidden"); + } + } + } + }); +}); + +// Remote daki buttonlar için +document.addEventListener("DOMContentLoaded", function () { + const buttons = document.querySelectorAll(".btn-group .menu-btn"); + + buttons[0].classList.add("active"); + + buttons.forEach((button) => { + button.addEventListener("click", function () { + buttons.forEach((btn) => btn.classList.remove("active")); + this.classList.add("active"); + }); + }); +}); + +document.addEventListener("DOMContentLoaded", function () { + const buttons = document.querySelectorAll(".btn-group .menu-btns"); + + buttons[0].classList.add("active"); + + buttons.forEach((button) => { + button.addEventListener("click", function () { + buttons.forEach((btn) => btn.classList.remove("active")); + this.classList.add("active"); + }); + }); +}); + +function openFileInput() { + document.getElementById("fileInput").click(); +} + +document.getElementById("dbbutton").addEventListener("click", () => { + const fileNewDBBut = document.getElementById("fileNewDB"); + fileNewDBBut.click(); +}); + +document.getElementById("fileNewDB").addEventListener("click", async () => { + const response = await fetch("/fileinfo"); + const data = await response.json(); + document.getElementById("filePath").value = data.file_path; +}); + +// file-new-db div tıklanıldığında fileNewDB butonunu tıklat +document.getElementById("file-new-db").addEventListener("click", () => { + const fileNewDBBut = document.getElementById("fileNewDB"); + fileNewDBBut.click(); +}); +// backendden database klasörünün konumunu döndürür. +document.getElementById("fileNewDB").addEventListener("click", async () => { + const response = await fetch("/fileinfo"); + const data = await response.json(); + document.getElementById("filePath").value = data.file_path; +}); + +// modaldan dosya adı girilip save a basılırsa bu bilgiler backend e gönderilir. 2. Modal açılır. +document.getElementById("saveFile").addEventListener("click", async () => { + try { + const filePath = document.getElementById("filePath").value; + const fileName = document.getElementById("fileName").value; + const response = await fetch("/save", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ file_path: filePath, file_name: fileName }), + }); + + const result = await response.json(); + console.log(result); + if (response.ok) { + spButton.disabled = false; + adButton.disabled = false; + cButton.disabled = false; + mCT.disabled = false; + mCI.disabled = false; + fad.classList.remove("disabled"); + fcd.classList.remove("disabled"); + fsp.classList.remove("disabled"); + fspa.classList.remove("disabled"); + fsa.classList.remove("disabled"); + createTable.classList.remove("disabled"); + modifyTable.classList.remove("disabled"); + deleteTable.classList.remove("disabled"); + modalButton.click(); + mainWindow(result); + executeSQLB.classList.remove("disabled"); + } else { + console.log(result.error || result.message); // Hata mesajını ekrana basıyoruz + } + } catch (error) { + console.log("An error occurred:", error); + } +}); + +// Dosya adı giriş alanını seçin +const fileNameInput = document.getElementById("fileName"); + +// Save butonunu seçin +const saveButton = document.getElementById("saveFile"); + +// Dosya adı giriş alanında bir tuşa basıldığında bu fonksiyonu çalıştırın +fileNameInput.addEventListener("keyup", function () { + // Dosya adı giriş alanının değerini alın + const fileNameValue = fileNameInput.value.trim(); + + // Dosya adı giriş alanı boş değilse veya sadece boşluklardan oluşmuyorsa + if (fileNameValue) { + // Save butonundaki disabled sınıfını kaldırın + saveButton.classList.remove("disabled"); + } else { + // Dosya adı giriş alanı boşsa veya sadece boşluklardan oluşuyorsa + // Save butonuna disabled sınıfını ekleyin + saveButton.classList.add("disabled"); + } +}); + +// Modal içindeki butonlar için +document.addEventListener("DOMContentLoaded", function () { + const buttons = document.querySelectorAll(".tfac"); + + buttons[0].classList.add("active"); + + buttons.forEach((button) => { + button.addEventListener("click", function () { + buttons.forEach((btn) => btn.classList.remove("active")); + this.classList.add("active"); + }); + }); +}); + +// Butonun devre dışı olup olmadığını kontrol eden fonksiyon +function toggleButtonCursor() { + //divs + const removeButton = document.getElementById("removeButton"); + const moveTopButton = document.getElementById("moveTopButton"); + const moveUpButton = document.getElementById("moveUpButton"); + const moveDownButton = document.getElementById("moveDownButton"); + const moveBottomButton = document.getElementById("moveBottomButton"); + + if ( + removeButton.classList.contains("disabled") || + moveTopButton.classList.contains("disabled") || + moveUpButton.classList.contains("disabled") || + moveDownButton.classList.contains("disabled") || + moveBottomButton.classList.contains("disabled") + ) { + removeButton.style.cursor = "default"; + moveTopButton.style.cursor = "default"; + moveUpButton.style.cursor = "default"; + moveDownButton.style.cursor = "default"; + moveBottomButton.style.cursor = "default"; + } else { + removeButton.style.cursor = "pointer"; + moveTopButton.style.cursor = "pointer"; + moveUpButton.style.cursor = "pointer"; + moveDownButton.style.cursor = "pointer"; + moveBottomButton.style.cursor = "pointer"; + } +} + +// Sayfa yüklendiğinde ve buton durumu değiştiğinde çağrılır +document.addEventListener("DOMContentLoaded", function () { + toggleButtonCursor(); +}); + +// Modalda tablo oluştur butonuna tıklandığında +class QueryDivManager { + constructor() { + this.fieldCounter = 1; + this.selectedRow = null; + this.addButtonClickListener(); + this.removeButtonClickListener(); + this.setupTableNameListener(); + this.updateOkButtonState(); + this.updateSQLColumnNumbers(); + this.removeLastAddedRow(); + this.sqlQuerySaveSend(); + this.clearModal(); + } + + addButtonClickListener() { + const addBtn = document.querySelector("#addButton"); + addBtn.addEventListener("click", () => { + document.querySelector(".sql-fields").style.marginTop = "0"; + this.addRow(); + this.updateSQLQuery(); + }); + } + + removeButtonClickListener() { + const removeButton = document.getElementById("removeBButton"); + removeButton.addEventListener("click", () => this.removeSelectedRow()); + } + + setupTableNameListener() { + const tableNameInput = document.getElementById("table-name"); + tableNameInput.addEventListener("keyup", () => { + this.updateSQLTable(); + }); + } + + setupCheckboxListeners() { + const checkboxes = document.querySelectorAll(".checkbox"); + checkboxes.forEach((checkbox) => { + checkbox.addEventListener("change", () => { + this.updateSQLQuery(); + }); + }); + } + + sqlQuerySaveSend() { + const sqlQuerySave = document.getElementById("sqlQuerySave"); + sqlQuerySave.addEventListener("click", async () => { + this.sqlQuerySave(); + // const cancelButton = document.getElementById("sqlQueryCancel"); + cancelButton.click(); + this.clearModal(); + }); + } + clearModal() { + const cancelButton = document.getElementById("sqlQueryCancel"); + cancelButton.addEventListener("click", () => { + csv.classList.remove("disabled"); + const tableNameInput = document.getElementById("table-name"); + tableNameInput.value = ""; + const databaseschema = document.getElementById("databaseschema"); + databaseschema.selectedIndex = 0; + const withoutRowid = document.getElementById("withoutRowid"); + withoutRowid.checked = false; + const tableName = document.getElementById("tableName"); + tableName.textContent = ""; + const fieldList = document.getElementById("fieldList"); + fieldList.innerHTML = ""; + const jsrow = document.querySelectorAll(".js-row"); + jsrow.forEach((row) => { + row.remove(); + }); + }); + } + + addRow() { + const newRow = document.createElement("div"); + newRow.classList.add("row", "d-flex", "js-row"); + + newRow.innerHTML = ` +
+
+ +
+
+
+
+
+
+
+
+ +
+
+ `; + + newRow.addEventListener("click", () => this.rowClickHandler(newRow)); + newRow.querySelectorAll(".field-type").forEach((select) => { + select.addEventListener("change", () => this.updateSQLQuery()); + }); + newRow.querySelectorAll("input[type='text']").forEach((input) => { + input.addEventListener("keyup", () => this.updateSQLQuery()); + }); + // newRow.querySelectorAll("input[type='checkbox']").forEach((checkbox) => { + // checkbox.addEventListener("change", () => this.updateSQLQuery()); + // }); + newRow.querySelectorAll("input[type='checkbox']").forEach((checkbox) => { + checkbox.addEventListener("change", (event) => { + this.handleCheckboxChange(event); + }); + }); + + document.querySelector(".queryDiv .row:last-child").after(newRow); + this.updateOkButtonState(); + this.updateSQLColumnNumbers(); + } + + handleCheckboxChange(event) { + const checkbox = event.target; + const row = checkbox.closest(".row"); + const primaryKeyCheckbox = row.querySelector(".field-primary-key input"); + const autoIncrementCheckbox = row.querySelector( + ".field-auto-increment input" + ); + + if (checkbox === autoIncrementCheckbox && checkbox.checked) { + primaryKeyCheckbox.checked = true; + } + + if (checkbox === primaryKeyCheckbox && !checkbox.checked) { + autoIncrementCheckbox.checked = false; + } + + this.updateSQLQuery(); + } + rowClickHandler(row) { + if (this.selectedRow !== null) { + this.selectedRow.style.backgroundColor = ""; + } + this.selectedRow = row; + this.selectedRow.style.backgroundColor = "orange"; + this.updateButtonStates(); + } + + updateButtonStates() { + const rows = document.querySelectorAll(".queryDiv .js-row"); + const totalRows = rows.length; + + // Determine the clicked row index + const clickedRowIndex = Array.from(rows).indexOf(this.selectedRow); + + // Disable all buttons + removeButton.classList.add("disabled"); + moveTopButton.classList.add("disabled"); + moveUpButton.classList.add("disabled"); + moveDownButton.classList.add("disabled"); + moveBottomButton.classList.add("disabled"); + + // Eğer toplam satır sayısı 0 ise removeButton'u devre dışı bırak + if (totalRows === 1) { + removeButton.classList.remove("disabled"); + return; + } else if (totalRows === 2) { + // Two rows: special handling for first and second rows + if (clickedRowIndex === 0) { + moveDownButton.classList.remove("disabled"); + moveBottomButton.classList.remove("disabled"); + removeButton.classList.remove("disabled"); + } else if (clickedRowIndex === 1) { + moveUpButton.classList.remove("disabled"); + moveTopButton.classList.remove("disabled"); + removeButton.classList.remove("disabled"); + } + } else if (totalRows === 0) { + removeButton.classList.add("disabled"); + moveBottomButton.classList.add("disabled"); + moveDownButton.classList.add("disabled"); + moveUpButton.classList.add("disabled"); + moveTopButton.classList.add("disabled"); + } else { + // More than two rows + if (clickedRowIndex === 0) { + // First row + moveDownButton.classList.remove("disabled"); + moveBottomButton.classList.remove("disabled"); + removeButton.classList.remove("disabled"); + } else if (clickedRowIndex === totalRows - 1) { + // Last row + moveUpButton.classList.remove("disabled"); + moveTopButton.classList.remove("disabled"); + removeButton.classList.remove("disabled"); + } else { + // Middle rows + moveUpButton.classList.remove("disabled"); + moveTopButton.classList.remove("disabled"); + moveDownButton.classList.remove("disabled"); + moveBottomButton.classList.remove("disabled"); + removeButton.classList.remove("disabled"); + } + } + } + updateSQLTable() { + const tableName = document.getElementById("table-name").value; + document.getElementById("tableName").textContent = tableName; + } + + updateSQLQuery() { + const fieldList = document.getElementById("fieldList"); + fieldList.innerHTML = ""; // Clear previous fields + + const rows = document.querySelectorAll(".queryDiv .row"); + rows.forEach((row, index) => { + if (index === 0) return; + const fieldName = row.querySelector("input[type='text']").value; + const fieldType = row.querySelector(".field-type").value; + let fieldTypeText = ""; + switch (fieldType) { + case "0": + fieldTypeText = "INTEGER"; + break; + case "1": + fieldTypeText = "TEXT"; + break; + case "2": + fieldTypeText = "BLOB"; + break; + case "3": + fieldTypeText = "REAL"; + break; + case "4": + fieldTypeText = "NUMERIC"; + break; + default: + fieldTypeText = "INTEGER"; + break; + } + + const nullable = row.querySelector(".field-nullable input").checked + ? "NOT NULL" + : ""; + const primaryKey = row.querySelector(".field-primary-key input").checked + ? "PRIMARY KEY" + : ""; + const autoIncrement = row.querySelector(".field-auto-increment input") + .checked + ? "AUTOINCREMENT" + : ""; + const unique = row.querySelector(".field-unique input").checked + ? "UNIQUE" + : ""; + + // Field info satırı + const newFieldElement = document.createElement("div"); + newFieldElement.classList.add("field-c"); + const fieldInfo = `"${fieldName}" ${fieldTypeText} ${nullable} ${unique}`; + newFieldElement.innerHTML = fieldInfo; + fieldList.appendChild(newFieldElement); + + // PRIMARY KEY ve AUTOINCREMENT satırı + if (primaryKey || autoIncrement) { + const primaryKeyAutoIncElement = document.createElement("div"); + const primaryKeyAutoIncSQL = autoIncrement + ? `PRIMARY KEY("${fieldName}" AUTOINCREMENT)` + : `PRIMARY KEY("${fieldName}")`; + primaryKeyAutoIncElement.innerHTML = primaryKeyAutoIncSQL; + fieldList.appendChild(primaryKeyAutoIncElement); + } + }); + } + setupCheckboxListeners() { + const checkboxes = document.querySelectorAll( + ".queryDiv .row input[type='checkbox']" + ); + checkboxes.forEach((checkbox) => { + checkbox.addEventListener("change", (event) => { + const rowIndex = event.target.closest(".row").dataset.index; // Satırın index değerini al + if (event) { + console.log(`Row ${rowIndex} checkbox is checked`); + } else { + console.log(`Row ${rowIndex} checkbox is unchecked`); + } + updateSQLQuery(rowIndex); // Checkbox durumu değiştiğinde sorguyu güncelle, satırın indexini parametre olarak gönder + }); + }); + } + + removeSelectedRow() { + if (this.selectedRow !== null) { + this.selectedRow.remove(); + this.selectedRow = null; + this.updateButtonStates(); + this.updateSQLQuery(); + // Son eleman kaldırıldıysa ve başka eleman kalmadıysa margin-top özelliğini tekrar ekle + const elementCount = document.querySelectorAll(".field-c").length; + if (elementCount === 0) { + document.querySelector(".sql-fields").style.marginTop = "20px"; + this.updateButtonStates(); + } + } + this.removeLastAddedRow(); + this.updateOkButtonState(); + } + + updateOkButtonState() { + const rows = document.querySelectorAll(".queryDiv .js-row"); + const okButton = document.querySelector( + ".modal-footer .btn[type='submit']" + ); + + if (rows.length > 0) { + okButton.classList.remove("disabled"); + } else { + okButton.classList.add("disabled"); + } + } + updateSQLColumnNumbers() { + const sqlField = document.querySelector(".sql-field"); + const sqlCol = sqlField.querySelector(".sql-col"); + + const existingPs = sqlCol.querySelectorAll(".sql-p"); + + // Son numarayı bul + const lastNumber = parseInt(existingPs[existingPs.length - 1].textContent); + + // Yeni numarayı ekleyerek sonraki numarayı bul + const nextNumber = lastNumber + 1; + + const p = document.createElement("p"); + p.classList.add("sql-p"); + p.textContent = nextNumber.toString(); + sqlCol.appendChild(p); + } + + removeLastAddedRow() { + const sqlField = document.querySelector(".sql-field"); + const sqlCol = sqlField.querySelector(".sql-col"); + const lastP = sqlCol.querySelector(".sql-p:last-child"); + + // İlk 3 sabit elemanı korumak için kontrol ekleyin + if (lastP && parseInt(lastP.textContent) > 3) { + lastP.remove(); + this.fieldCounter--; + } + } + + saveSQL() { + const fieldList = document.getElementById("fieldList"); + const tableName = document.getElementById("tableName").innerText; + + // Collect SQL fields + const fields = Array.from(fieldList.querySelectorAll(".field-c")) + .map((field) => field.innerText) + .join(", "); + + const sqlQuery = `CREATE TABLE "${tableName}" (${fields});`; + + fetch("/save-sql", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ sql: sqlQuery }), + }) + .then((response) => response.json()) + .then((data) => { + if (data.message) { + alert(data.message); + } else if (data.error) { + alert(data.error); + } + }) + .catch((error) => { + console.error("Error:", error); + }); + } + async sqlQuerySave() { + // Önce updateSQLQuery fonksiyonunu çağırarak fieldList'i güncelleyelim + this.updateSQLQuery(); + + const fieldList = document.getElementById("fieldList"); + const fields = fieldList.querySelectorAll(".field-c"); + const tableNameInput = document.getElementById("tableName"); + const tableName = tableNameInput.innerText; + let sqlQuery = `CREATE TABLE "${tableName}" (`; + fields.forEach((field, index) => { + sqlQuery += field.textContent.trim(); + if (index < fields.length - 1) { + sqlQuery += ", "; + } + }); + sqlQuery += ");"; + + try { + const response = await fetch("/create_table", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ sql_query: sqlQuery }), + }); + + const result = await response.json(); + if (response.ok) { + console.log("Data:", result.message); + } else { + alert(result.error || result.message); + } + } catch (error) { + console.error("An error occurred:", error); + } + } +} + +// Kullanım +const queryDivManager = new QueryDivManager(); + +queryDivManager.setupCheckboxListeners(); + +function toggleSqlQuery() { + var sqlQueryDiv = document.getElementById("sqlQuery"); + var button = document.querySelector(".sql-col button"); + + if (sqlQueryDiv.style.display === "none") { + sqlQueryDiv.style.display = "block"; + button.textContent = "-"; + } else { + sqlQueryDiv.style.display = "none"; + button.textContent = "+"; // veya herhangi bir metin + } +} + +const closeDatabaseHandler = async () => { + try { + const response = await fetch("/close_database", { + method: "POST", + }); + if (response.ok) { + const data = await response.json(); + alert(data.message); // Backend tarafından gönderilen mesajı göster + dbOpened = false; + closeFileDB.classList.add("disabled"); + closeDB.classList.add("disabled"); + fad.classList.add("disabled"); + fcd.classList.add("disabled"); + fsp.classList.add("disabled"); + fspa.classList.add("disabled"); + fsa.classList.add("disabled"); + saveProject.classList.add("disabled"); + adDatabase.classList.add("disabled"); + createTable.classList.add("disabled"); + modifyTable.classList.add("disabled"); + deleteTable.classList.add("disabled"); + tableToCSV.classList.add("disabled"); + tableToJSON.classList.add("disabled"); + const la = document.getElementById("large-area"); + la.innerHTML = ""; + } else { + const data = await response.json(); + console.error("Failed to close the database:", data.error); + } + } catch (error) { + console.error("An error occurred while closing the database:", error); + } +}; + +closeFileDB.addEventListener("click", closeDatabaseHandler); +closeDB.addEventListener("click", closeDatabaseHandler); + +const openDatabaseHandler = () => { + fileInput.click(); +}; + +const fileInputChangeHandler = async (event) => { + const file = event.target.files[0]; + if (file) { + const fileName = file.name; + try { + const response = await fetch("/open_database", { + method: "POST", + body: JSON.stringify({ file_name: fileName }), + headers: { + "Content-Type": "application/json", + }, + }); + if (response.ok) { + const data = await response.json(); + alert(data.message); + + console.log("Data:", data.table_columns); + dbOpened = true; + fad.classList.remove("disabled"); + fcd.classList.remove("disabled"); + fsp.classList.remove("disabled"); + fspa.classList.remove("disabled"); + fsa.classList.remove("disabled"); + saveProject.disabled = false; + adDatabase.disabled = false; + closeDB.disabled = false; + saveProject.classList.remove("disabled"); + adDatabase.classList.remove("disabled"); + closeDB.classList.remove("disabled"); + createTable.classList.remove("disabled"); + modifyTable.classList.remove("disabled"); + deleteTable.classList.remove("disabled"); + compactDB.classList.remove("disabled"); + loadE.classList.remove("disabled"); + integrityCheck.classList.remove("disabled"); + quickIntegrityCheck.classList.remove("disabled"); + fkCheck.classList.remove("disabled"); + optimize.classList.remove("disabled"); + mCT.disabled = false; + mCI.disabled = false; + tableToCSV.classList.remove("disabled"); + tableToJSON.classList.remove("disabled"); + console.log("Data:", data.tables); + csv.classList.remove("disabled"); + mainWindow(data); + } else { + const data = await response.json(); + console.error("Failed to open the database:", data.error); + } + } catch (error) { + console.error("An error occurred while opening the database:", error); + } + } +}; + +openDataB.addEventListener("click", openDatabaseHandler); +openDatabase.addEventListener("click", openDatabaseHandler); +fileInput.addEventListener("change", fileInputChangeHandler); + +let dbOpened = false; + +const openModal = () => { + modalButton.click(); +}; + +mCT.addEventListener("click", openModal); +createTable.addEventListener("click", openModal); + +// cancelButton.addEventListener("click", () => { +// csv.classList.remove("disabled"); +// clearModal(); +// }); + +csv.addEventListener("click", () => { + csvFile.click(); +}); + +const csvChangeHandler = async (event) => { + const csvFile = event.target.files[0]; + if (csvFile) { + const csvFileName = csvFile.name; + try { + const response = await fetch("/open_csv", { + method: "POST", + body: JSON.stringify({ csvFile: csvFileName }), + headers: { + "Content-Type": "application/json", + }, + }); + const csvImport = document.getElementById("csvImport"); + csvImport.click(); + if (response.ok) { + const data = await response.json(); + console.log("Data:", data.tables); + updateCsvPreview(csvFileName); + } else { + const data = await response.json(); + console.error("Failed to open the csv:", data.error); + } + } catch (error) { + console.error("An error occurred while opening the csv:", error); + } + } +}; + +csvFile.addEventListener("change", csvChangeHandler); + +const updateCsvPreview = async (csvFileName) => { + const columnNamesCheckbox = document.getElementById("colNameCheckBox"); + const fieldSeparatorSelect = document.getElementById("fieldSeparator"); + const quoteCharacterSelect = document.getElementById("quoteCharacter"); + const encodingSelect = document.getElementById("encoding"); + const trimFieldsCheckbox = document.getElementById("trimFields"); + + if ( + !columnNamesCheckbox || + !fieldSeparatorSelect || + !quoteCharacterSelect || + !encodingSelect || + !trimFieldsCheckbox + ) { + console.error("One or more elements not found"); + return; + } + + const settings = { + columnNamesInFirstLine: columnNamesCheckbox.checked, + fieldSeparator: fieldSeparatorSelect.value, + quoteCharacter: quoteCharacterSelect.value || '"', + encoding: encodingSelect.value, + trimFields: trimFieldsCheckbox.checked, + }; + + try { + const response = await fetch("/update_csv_preview", { + method: "POST", + body: JSON.stringify({ csvFile: csvFileName, settings: settings }), + headers: { + "Content-Type": "application/json", + }, + }); + + if (response.ok) { + const data = await response.json(); + const previewElement = document.getElementById("csvPreview"); // Update to your actual preview element ID + if (!previewElement) { + console.error("Preview element not found"); + return; + } + handleCsvPreviewResponse(data); + previewElement.innerHTML = generateTableHTML( + data.tables, + data.column_names + ); + } else { + const data = await response.json(); + console.error("Failed to update the preview:", data.error); + } + } catch (error) { + console.error("An error occurred while updating the preview:", error); + } +}; + +const generateTableHTML = (rows, columns) => { + let tableHTML = ''; + columns.forEach((column, index) => { + tableHTML += ``; + }); + tableHTML += ""; + rows.forEach((row) => { + tableHTML += ""; + row.forEach((cell) => { + tableHTML += ``; + }); + tableHTML += ""; + }); + tableHTML += "
field${index + 1}
${cell}
"; + return tableHTML; +}; + +const columnNamesCheckbox = document.getElementById("colNameCheckBox"); + +columnNamesCheckbox.addEventListener("change", function () { + const checked = this.checked; + const previewElement = document.getElementById("csvPreview"); + const thElements = previewElement.querySelectorAll("thead th"); + const tbodyElement = previewElement.querySelector("tbody"); + + // Güncelleme işlemi + if (checked) { + thElements.forEach((th, index) => { + th.textContent = colNames[index]; + }); + // İlk satırı tbody'dan kaldırıyoruz + const firstRow = tbodyElement.querySelector("tr"); + if (firstRow) { + tbodyElement.removeChild(firstRow); + } + } else { + thElements.forEach((th, index) => { + th.textContent = `field${index + 1}`; + }); + // İlk satırı geri ekliyoruz + const newRow = document.createElement("tr"); + colNames.forEach((name, index) => { + const newCell = document.createElement("td"); + newCell.textContent = colNames[index]; + newRow.appendChild(newCell); + }); + tbodyElement.insertBefore(newRow, tbodyElement.firstChild); + } +}); +let colNames = []; +const handleCsvPreviewResponse = (data) => { + colNames = data.tables[0]; +}; + +class csvManager { + constructor() { + this.csvOKButton = document.getElementById("csvOK"); + this.csvTableNameInput = document.getElementById("csvTableName"); + this.isListenerAdded = false; + + this.setupCsvInputListener(); + this.addCsvButtonClickListener(); + } + + setupCsvInputListener() { + this.csvTableNameInput.addEventListener("keyup", () => { + const tableName = this.csvTableNameInput.value.trim(); + if (tableName) { + this.csvOKButton.classList.remove("disabled"); + } else { + this.csvOKButton.classList.add("disabled"); + } + }); + } + + addCsvButtonClickListener() { + if (this.isListenerAdded) return; + + this.csvOKButton.addEventListener("click", async () => { + const tableName = this.csvTableNameInput.value.trim(); + if (!tableName) return; + + try { + const response = await fetch("/add_csv_to_db", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + table_name: tableName, + // CSV ve DB dosya yolları gerekli parametrelerle eklenmeli + csv_file_path: "path/to/your/csvfile.csv", + db_file_path: "path/to/your/database.db", + }), + }); + + if (response.ok) { + const data = await response.json(); + console.log("Success:", data.message); + const csvCancel = document.getElementById("csvCancel"); + csvCancel.click(); + } else { + const errorData = await response.json(); + console.error("Error:", errorData.error); + } + } catch (error) { + console.error("An error occurred:", error); + } + }); + + this.isListenerAdded = true; + } +} + +const csvM = new csvManager(); +csvM.addCsvButtonClickListener(); + +let isRotated = false; +const mainWindow = (data) => { + const len = data.tables.length; + const collapseCol = document.getElementById("collapseCol"); + const rowcover = document.createElement("div"); + const collapseType = document.getElementById("collapseType"); + rowcover.classList.add("row"); + const row = document.getElementById("collapseTables"); + + const p = document.createElement("p"); + const pClass = ["d-inline-flex", "gap-1"]; + pClass.forEach((cls) => p.classList.add(cls)); + + const button = document.createElement("button"); + button.classList.add("btn"); + button.type = "button"; + button.setAttribute("data-bs-toggle", "collapse"); + button.setAttribute("data-bs-target", "#Tables"); + button.ariaExpanded = "false"; + button.ariaControls = "Tables"; + button.style.bottom = "-10px"; + button.style.position = "relative"; + const img1 = document.createElement("img"); + const img2 = document.createElement("img"); + img1.src = "/static/icons/bullet_arrow_up.svg"; + img1.style.transform = "rotate(90deg)"; + img1.style.left = "-15px"; + img1.style.position = "relative"; + img1.style.top = "-2px"; + img1.id = "rotateImg"; + img2.src = "/static/icons/table.svg"; + img2.style.position = "relative"; + img2.style.top = "-2px"; + img2.style.left = "-3px"; + img2.style.width = "20px"; + button.appendChild(img1); + button.appendChild(img2); + button.appendChild(document.createTextNode(`Tables (${len})`)); + p.appendChild(button); + row.appendChild(p); + + data.tables.forEach((tableName, index) => { + const tablediv = document.createElement("div"); + tablediv.classList.add("collapse"); + tablediv.id = "Tables"; + const innerbutton = document.createElement("button"); + innerbutton.classList.add("btn"); + innerbutton.type = "button"; + innerbutton.setAttribute("data-bs-toggle", "collapse"); + innerbutton.setAttribute("data-bs-target", `#Tables${index}`); + innerbutton.ariaExpanded = "false"; + innerbutton.ariaControls = `Tables${index}`; + innerbutton.style.marginLeft = "30px"; + innerbutton.textContent = tableName; + tablediv.appendChild(innerbutton); + row.appendChild(tablediv); + + const columns = data.table_columns[tableName]; + const innerdiv = document.createElement("div"); + innerdiv.classList.add("collapse"); + innerdiv.id = `Tables${index}`; + columns.forEach((column, columnIndex) => { + const innerdiv2 = document.createElement("div"); + innerdiv2.classList.add("card", "card-body"); + innerdiv2.style.marginLeft = "100px"; + innerdiv2.textContent = column.name; + collapseType.textContent = column.type; + innerdiv.appendChild(innerdiv2); + + // row.appendChild(innerdiv); // tablediv'e eklemeliyiz, row'a değil + }); + row.appendChild(innerdiv); + }); + const row1 = document.createElement("div"); + row1.classList.add("row"); + row1.style.marginTop = "-5px"; + row1.style.marginLeft = "12px"; + row1.style.marginBottom = "20px"; + const iconImg = document.createElement("img"); + iconImg.src = "/static/icons/tag_blue.svg"; + iconImg.style.width = "auto"; + iconImg.style.height = "auto"; + iconImg.style.position = "relative"; + const textNode = document.createTextNode("Indices (0)"); + row1.appendChild(iconImg); + row1.appendChild(textNode); + collapseCol.appendChild(row1); + collapseCol.appendChild(row1); + const row2 = document.createElement("div"); + row2.classList.add("row"); + row2.style.marginTop = "-5px"; + row2.style.marginLeft = "12px"; + row2.style.marginBottom = "20px"; + const iconImg2 = document.createElement("img"); + iconImg2.src = "/static/icons/picture.svg"; + iconImg2.style.width = "auto"; + iconImg2.style.height = "auto"; + iconImg2.style.position = "relative"; + const textNode2 = document.createTextNode("View (0)"); + row2.appendChild(iconImg2); + row2.appendChild(textNode2); + collapseCol.appendChild(row2); + const row3 = document.createElement("div"); + row3.classList.add("row"); + row3.style.marginTop = "-5px"; + row3.style.marginLeft = "12px"; + row3.style.marginBottom = "20px"; + const iconImg3 = document.createElement("img"); + iconImg3.src = "/static/icons/script.svg"; + iconImg3.style.width = "auto"; + iconImg3.style.height = "auto"; + iconImg3.style.position = "relative"; + const textNode3 = document.createTextNode("Trigger (0)"); + row3.appendChild(iconImg3); + row3.appendChild(textNode3); + collapseCol.appendChild(row3); + + // Add event listener to rotate the image + button.addEventListener("click", () => { + isRotated = !isRotated; + img1.style.transform = isRotated ? "rotate(180deg)" : "rotate(90deg)"; + }); +}; + +const exportJson = document.getElementById("ejson"); +tableToJSON.addEventListener("click", async () => { + exportJson.click(); +}); + +let selectedTables = []; +document.getElementById("ejson").addEventListener("click", async () => { + try { + const response = await fetch("/get_table_names"); + const data = await response.json(); + if (response.ok) { + const tableNames = data.table_names; + const tableNamesDiv = document.getElementById("tabletoJson"); + + // Önce mevcut tablo adlarını temizleyin + tableNamesDiv.innerHTML = ""; + + // Tablo adlarını div içine ekleyin + tableNames.forEach((tableName) => { + const tableNameElement = document.createElement("div"); + tableNameElement.textContent = tableName; + tableNameElement.classList.add("tableName"); + + // Tablo adının tıklama olayını dinleyin + tableNameElement.addEventListener("click", function () { + // Seçili hale gelip gelmediğini kontrol edin + if (this.classList.contains("selected")) { + // Eğer seçiliyse, seçili sınıfını kaldırın + this.classList.remove("selected"); + // Ve seçili tablo adını seçilmiş tablolar listesinden kaldırın + selectedTables = selectedTables.filter( + (table) => table !== tableName + ); + } else { + // Değilse, seçili sınıfını ekleyin + this.classList.add("selected"); + // Ve seçili tablo adını seçilmiş tablolar listesine ekleyin + selectedTables.push(tableName); + } + // Arka plan rengini değiştirin + this.style.backgroundColor = this.classList.contains("selected") + ? "orange" + : ""; + // // Seçilmiş tablo adlarını konsola yazdırın (opsiyonel) + // console.log("Selected tables:", selectedTables); + }); + + // Tablo adını div içine ekleyin + tableNamesDiv.appendChild(tableNameElement); + }); + } else { + alert(data.error || data.message); + } + } catch (error) { + console.error("An error occurred while fetching table names:", error); + } +}); + +document.getElementById("JSONSave").addEventListener("click", async () => { + try { + // Seçili tablo adlarını backend'e göndermek için fetch isteği yapın + const response = await fetch("/save_json", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ selectedTables: selectedTables }), + }); + // Sunucudan gelen cevabı kontrol edin + if (response.ok) { + const data = await response.json(); + console.log("Selected tables successfully converted to JSON", data); + const JSONCancel = document.getElementById("JSONCancel"); + JSONCancel.click(); + } else { + // İşlem başarısızsa, hata mesajını gösterin + const errorData = await response.json(); + console.error("Error:", errorData.error || errorData.message); + } + } catch (error) { + // Hata durumunda konsola yazdırın + console.error("An error occurred while sending selected tables:", error); + } +}); + +tableToCSV.addEventListener("click", async () => { + const csvBut = document.getElementById("csvBut"); + csvBut.click(); +}); + +let csvSelectedTables = []; +document.getElementById("csvBut").addEventListener("click", async () => { + try { + const response = await fetch("/get_table_names"); + const data = await response.json(); + if (response.ok) { + const tableNames = data.table_names; + const tableNamesDiv = document.getElementById("tabletoCSV"); + + // Önce mevcut tablo adlarını temizleyin + tableNamesDiv.innerHTML = ""; + + // Tablo adlarını div içine ekleyin + tableNames.forEach((tableName) => { + const tableNameElement = document.createElement("div"); + tableNameElement.textContent = tableName; + tableNameElement.classList.add("tableName"); + + // Tablo adının tıklama olayını dinleyin + tableNameElement.addEventListener("click", function () { + // Seçili hale gelip gelmediğini kontrol edin + if (this.classList.contains("selected")) { + // Eğer seçiliyse, seçili sınıfını kaldırın + this.classList.remove("selected"); + // Ve seçili tablo adını seçilmiş tablolar listesinden kaldırın + csvSelectedTables = csvSelectedTables.filter( + (table) => table !== tableName + ); + } else { + // Değilse, seçili sınıfını ekleyin + this.classList.add("selected"); + // Ve seçili tablo adını seçilmiş tablolar listesine ekleyin + csvSelectedTables.push(tableName); + } + // Arka plan rengini değiştirin + this.style.backgroundColor = this.classList.contains("selected") + ? "orange" + : ""; + // // Seçilmiş tablo adlarını konsola yazdırın (opsiyonel) + // console.log("Selected tables:", selectedTables); + }); + + // Tablo adını div içine ekleyin + tableNamesDiv.appendChild(tableNameElement); + }); + } else { + alert(data.error || data.message); + } + } catch (error) { + console.error("An error occurred while fetching table names:", error); + } +}); + +document.getElementById("CSVSave").addEventListener("click", async () => { + try { + // Seçilen tablo adlarını içeren dizi + const selectedTables = csvSelectedTables; + + // Seçili tablo adlarını backend'e gönder + const response = await fetch("/save_csv", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ selectedTables: selectedTables }), + }); + // Yanıtı kontrol et ve mesajı göster + const data = await response.json(); + if (response.ok) { + console.log(data.message); + const CSVCancel = document.getElementById("CSVCancel"); + CSVCancel.click(); + } else { + alert(data.error || data.message); + } + } catch (error) { + console.error("An error occurred while saving JSON:", error); + } +}); diff --git a/Projects/Bugbusters/static/style.css b/Projects/Bugbusters/static/style.css new file mode 100644 index 000000000..31bc475a5 --- /dev/null +++ b/Projects/Bugbusters/static/style.css @@ -0,0 +1,600 @@ +body { + border: 2px solid black; + width: auto; + height: auto; +} +.first { + margin-left: 25px !important; +} +.dropdown-toggle::after { + display: none; + /* Ok işaretini kaldırma */ +} + +.second { + margin-left: 5px !important; +} + +.display { + display: inline-block; +} + +.col .display:first-child { + margin-left: 35px; +} + +.btn:focus { + outline: none; + border-color: transparent !important; +} + +.pipe { + color: #8f8f8f; +} + +@media (min-width: 1200px) { + .container, + .container-lg, + .container-md, + .container-sm, + .container-xl { + max-width: none; + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + } +} + +@media (min-width: 992px) { + .container, + .container-lg, + .container-md, + .container-sm { + max-width: none; + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + } +} + +@media (min-width: 768px) { + .container, + .container-md, + .container-sm { + max-width: none; + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + } +} + +@media (min-width: 576px) { + .container, + .container-sm { + max-width: none; + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + } +} + +.btn.disabled, +.btn:disabled, +fieldset:disabled .btn { + border-color: transparent !important; +} + +.dropdown-menu li { + position: relative; +} +.dropdown-menu .dropdown-submenu { + display: none; + position: absolute; + left: 100%; + top: -7px; +} +.dropdown-menu .dropdown-submenu-left { + right: 100%; + left: auto; +} +.dropdown-menu > li:hover > .dropdown-submenu { + display: block; +} + +.ddia { + display: flex; + align-items: center; +} + +.dropdown-item { + padding: 3px 7px 3px 10px; + cursor: pointer; +} + +.ddia img { + margin-left: 5px; +} + +#right-arrow { + transform: rotate(90deg); +} +.ddia i { + margin-left: 5px; + color: #4d92c7; + width: 16px !important; + height: 16px !important; +} + +.fa-xs { + line-height: 1.3 !important; +} + +/* .third { + width: calc(100% - 585px); + margin: 10px 300px 10px 300px; +} */ + +.fourth { + border: 2px solid red; + width: 100wh; + height: 700px; +} + +.column1 { + height: 100vh; + width: 65vw; +} + +/* .genisEkran { + height: 100%; +} */ + +.yarimEkran { + height: 465px; + display: flex; + flex-direction: column; +} + +.butm { + margin: 2px 60px 2px 60px; +} + +.topMenu { + display: flex; + height: 40px; +} + +.sol { + margin-top: 5px; +} +.sol > button:nth-child(2) > i { + margin-left: 10px; +} + +.sag { + margin-left: 250px; + margin-top: 12px; +} +.d { + padding-left: 0px; + padding-right: 0px; +} + +.ortaMenu { + margin-bottom: 1px; + display: flex; +} + +.ddl { + display: flex; + height: 50px; + margin-top: 20px; +} + +.hidden { + display: none; +} + +.cog { + margin-left: 50px; + margin-top: 22px; + height: 50px; +} +.cog > img { + height: 25px; +} + +.i { + margin-left: 30px; + margin-top: 20px; + height: 50px; +} +.i > img { + margin-left: 5px; + padding-left: 5px; + padding-right: 5px; + height: 25px; +} + +.altMenu { + display: flex; + height: 270px; + margin-bottom: 1px; + width: 645px; +} + +.enAltMenu { + display: flex; + flex-grow: 1; + height: 20px; + margin-bottom: 10px; + flex-direction: column; +} + +.buttonApply { + margin-left: 190px; +} + +.topMenu2 { + display: flex; + height: 40px; +} + +.identity { + margin-bottom: 1px; + display: flex; +} + +.btn.active { + background-color: orange; /* Seçili butonun arka plan rengi */ + color: white; /* Seçili butonun metin rengi */ +} + +.btn-default { + background-color: grey; /* Diğer butonların arka plan rengi */ + color: white; /* Diğer butonların metin rengi */ +} + +.dropMenu { + height: 270px; + margin: top -10px; +} + +#large-area { + height: 815px; +} +#btn-group { + top: -25px; +} + +.d-advanced { + margin: 3px auto !important; + width: 60% !important; +} + +.tfac { + border: 2px solid black; +} + +.tfac.active { + background-color: orange; /* Seçili butonun arka plan rengi */ + color: white; /* Seçili butonun metin rengi */ +} + +.tfac-default { + background-color: grey; /* Diğer butonların arka plan rengi */ + color: white; /* Diğer butonların metin rengi */ +} + +.tfac { + background-color: grey; + color: white; + cursor: pointer; +} + +.drop-tfac { + border: 1px solid black; + top: -17px; + height: auto; + position: relative; + z-index: 2; +} + +#addButton { + cursor: pointer; + margin-right: 15px; + border: 0.02em solid black; + margin-left: 10px; +} + +#addButton > button { + left: -10px; + position: relative; +} + +#removeButton { + cursor: pointer; + margin-right: 15px; + border: 0.02em solid black; + margin-left: 10px; +} + +#removeButton > button { + left: -10px; + position: relative; +} + +#moveTopButton { + cursor: pointer; + margin-right: 15px; + border: 0.02em solid black; + margin-left: 10px; +} + +#moveTopButton > button { + left: -10px; + position: relative; +} + +#moveBottomButton { + cursor: pointer; + margin-right: 15px; + border: 0.02em solid black; + margin-left: 10px; +} + +#moveBottomButton > button { + left: -10px; + position: relative; +} + +#moveUpButton { + cursor: pointer; + margin-right: 15px; + border: 0.02em solid black; + margin-left: 10px; +} + +#moveUpButton > button { + left: -10px; + position: relative; +} + +#moveDownButton { + cursor: pointer; + margin-right: 15px; + border: 0.02em solid black; + margin-left: 10px; +} + +#moveDownButton > button { + left: -10px; + position: relative; +} + +.tableButton { + margin-top: 25px; +} + +.sql-field { + display: flex; +} + +.sql-col { + display: grid; + width: 20px; + position: relative; + justify-content: center; +} + +.sql-p { + position: relative; + top: -5px; + margin-block-start: 0px !important; + margin-block-end: 0px !important; +} + +textarea { + resize: none; +} + +.sql-form { + display: flex; + justify-content: flex-start; + width: 500px; + margin-left: 10px; +} + +.sql-keyword { + color: rgb(66, 127, 219); +} + +.table-name { + color: rgb(241, 0, 245); +} + +.sql-fields { + color: rgb(241, 0, 245); + margin-top: 20px; +} + +.sql-col-name { + width: 200px; + margin-top: 15px; +} + +.sql-col-type { + width: 70px; + position: relative; + margin-top: 15px; +} + +.sql-col-checkbox { + display: flex; + width: 60px; + position: relative; + left: 70px; + margin-top: 15px; +} + +.sql-col-default { + position: relative; + display: flex; + width: 90px; + left: 50px; + margin-top: 15px; +} + +.sql-col-check { + position: relative; + display: flex; + width: 100px; + left: 50px; + margin-top: 15px; +} + +.sql-col-collation { + position: relative; + display: flex; + width: 130px; + left: 20px; + margin-top: 15px; +} + +.sql-col-fk { + position: relative; + display: flex; + width: 200px; + left: 10px; + margin-top: 15px; +} +.sql-col-mt { + margin-top: 5px; + margin-bottom: 5px; +} + +#sqlQuery { + border: 2px solid black; + width: 100vh; +} + +.field-style { + margin-top: -20px; +} + +.execute-sql-buttons { + width: 40px; + margin: auto; +} + +.sqlQ { + border: 2px solid; + width: auto; + height: 86%; + display: flex; + position: relative; + flex-direction: column; +} + +.queryBox { + width: 100px; + height: 1.5rem; + position: relative; + /* border: 2px solid red; */ + left: 45%; + top: 1.5px; + border-radius: 10px; + background-color: slategrey; + color: azure; + align-items: center; + justify-content: center; + display: flex; +} + +.sqlQ_body { + height: 400px; + position: relative; + border: 2px solid purple; + width: 100%; + display: flex; + flex-direction: row; + margin-top: 2px; +} + +.inner-box-left { + width: 50px; + flex-direction: column; + display: flex; +} +.inner-box-right { + flex: 1; + margin-left: 5px; +} + +.row-item { + display: flex; + justify-content: center; +} + +textarea { + color: white; + background-color: rgb(47, 47, 46); +} +textarea::selection { + background: rgb(200, 131, 3); +} + +.sqlQ_result { + height: 400px; + position: relative; + width: 100%; + display: flex; + flex-direction: row; + margin: 5px auto; + margin-top: 7px; + overflow-y: auto; +} +.mt-0 { + position: relative; + top: 5px; +} + +#csvPreview { + max-height: 400px; + overflow-y: auto; + padding: 10px; +} +#rotateImg { + transition: transform 0.3s ease; +} + +.genisEkran { + overflow-y: auto; + max-height: 800px; /* İstediğiniz yüksekliğe göre ayarlayabilirsiniz */ +} + +.table thead th { + text-align: center; +} + +input[type="text"] { + width: 100%; + box-sizing: border-box; +} + +#prettyPrint { + background-color: #f0f0f0; /* Arka plan rengi */ + color: #333; /* Yazı rengi */ + padding: 5px 10px; /* İç boşluk */ + border-radius: 5px; /* Kenar yuvarlatma */ + border: 1px solid #ccc; /* Kenarlık */ + font-size: 14px; /* Yazı tipi boyutu */ +} diff --git a/Projects/Bugbusters/templates/index.html b/Projects/Bugbusters/templates/index.html new file mode 100644 index 000000000..189766d17 --- /dev/null +++ b/Projects/Bugbusters/templates/index.html @@ -0,0 +1,1521 @@ + + + + + + DB Browser for SQLite + + + + + + + +
+
+
+
+
+ +
+
+ +
+
+ | +
+
+ +
+
+ +
+
+ | +
+
+ +
+
+ +
+
+ | +
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+ + + + + +
+
+
+
+
Name
+
| Type
+
| Scheme
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ + +
+
+

Edit Database Cell

+
+
+
+
+
+ + +
+
+
+ + +
+
+ + + + + + + + +
+
+
+

NULL

+
+
+
+
+
+

Type of data currently in cell

+
+
+

Size of data currently in table

+
+
+
+ +
+
+
+
+
+
+
+ + +
+
+

Remote

+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+
Name
+
| Last Modified
+
| Size
+
| Commit
+
+
+
+
+
+
+
+ +
+
+
+
+
+ + + + + + + + + + + + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+