<vn>
<div id="title">
	<h1 id="title-text"><t>Catalog</t></h1>
	<div id="subtitle"></div>
</div>
<div id="actions" class="catalog-actions">
	<htk-search-entry form="params" column="search"/>
	<htk-bar-button
		id="view-button"
		tip="_Switch view"
		icon="view_list"
		on-click="this.onSwitchViewClick()"/>
	<htk-bar-button
		icon="shopping_cart_checkout"
		tip="_ShoppingBasket"
		on-click="this.onBasketClick()"/>
	<button
		class="menu"
		on-click="onShowMenuClick">
		<htk-icon name="menu" alt="_Menu"/>
	</button>
</div>
<vn-group>
	<vn-lot-query id="params" on-change="this.onFilterChange()">
		<vn-spec name="search" type="String"/>
		<vn-spec name="realm" type="Number"/>
		<vn-spec name="type" type="Number"/>
	</vn-lot-query>
	<vn-lot id="filter-lot"/>
</vn-group>
<vn-group>
	<sql-filter-item
		id="id-op"
		type="EQUAL"
		target="i"
		field="id"
		param="search"/>
	<sql-operation
		id="search-op"
		type="OR">
		<sql-filter-item
			type="LIKE"
			target="i"
			field="longName"
			param="search"/>
		<sql-filter-item
			type="LIKE"
			target="i"
			field="subname"
			param="search"/>
	</sql-operation>
	<sql-filter-item
		id="realm-op"
		type="EQUAL"
		target="t"
		field="categoryFk"
		param="realm"/>
	<sql-filter-item
		id="type-op"
		type="EQUAL"
		target="i"
		field="typeFk"
		param="type"/>
	<sql-filter-item
		id="color-op"
		type="EQUAL"
		target="i"
		field="inkFk"
		param="color"/>
	<sql-filter-item
		type="EQUAL"
		id="origin-op"
		target="i"
		field="originFk"
		param="origin"/>
	<sql-filter-item
		type="EQUAL"
		id="category-op"
		target="i"
		field="category"
		param="category"/>
	<sql-filter-item
		id="producer-op"
		type="EQUAL"
		target="i"
		field="producerFk"
		param="producer"/>
</vn-group>
<vn-group>
	<db-form v-model="basket">
		<db-model property="model">
			SELECT b.id, b.sent, a.description agency, m.code method
				FROM myBasket b
					JOIN vn.agencyMode a ON a.id = b.agencyModeFk
					JOIN vn.deliveryMethod m ON m.id = b.deliveryMethodFk
		</db-model>
	</db-form>
	<db-model
		id="items"
		auto-load="false"
		result-index="3"
		on-status-changed="onItemsChange">
		DROP TEMPORARY TABLE IF EXISTS tmp.item;
		CREATE TEMPORARY TABLE tmp.item
			(INDEX (itemFk))
			ENGINE = MEMORY
			SELECT i.id itemFk
				FROM vn.item i
					JOIN vn.itemType t ON t.id = i.typeFk
				WHERE #filter;
		CALL myBasket_calcCatalogFull;
		SELECT i.id, i.longName item, i.subName,
				i.tag5, i.value5, i.tag6, i.value6, i.tag7, i.value7,
				i.relevancy, i.size, i.category,
				k.name ink, p.name producer, o.name origin,
				b.available, b.price, b.`grouping`,
				i.image, im.updated
			FROM tmp.ticketCalculateItem b
				JOIN vn.item i ON i.id = b.itemFk
				LEFT JOIN vn.ink k ON k.id = i.inkFk
				LEFT JOIN vn.producer p ON p.id = i.producerFk
				LEFT JOIN vn.origin o ON o.id = i.originFk
				LEFT JOIN image im
					ON im.collectionFk = 'catalog'
					AND im.name = i.image
			WHERE b.available > 0
			ORDER BY i.relevancy DESC, i.name, i.size
			LIMIT 5000;
		DROP TEMPORARY TABLE
			tmp.item,
			tmp.ticketCalculateItem,
			tmp.ticketComponentPrice,
			tmp.ticketComponent,
			tmp.ticketLot,
			tmp.zoneGetShipped;
	</db-model>
	<db-form id="$card" v-model="card" model="items"/>
	<vn-lot id="card-lot"/>
</vn-group>
<div id="form" class="catalog">
	<div id="main" class="main">
	<htk-repeater
		id="grid-view"
		empty-message="_Choose filter from right menu"
		form-id="item"
		model="items">
		<custom>
		<div
			id="item-box"
			class="item-box clickable"
			title="{{_('AddToBasket')}}"
			on-click="this.onAddItemClick($event, $iter)">
			<htk-image
				directory="catalog"
				subdir="200x200"
				form="$iter"
				column="image"
				stamp-column="updated"
				full-dir="1600x900"
				title="_Zoom image"/>
			<div class="item-info">
				<h2>
					<span class="item-id">
						#{{item.id}}
					</span>
					{{item.item}}
				</h2>
				<p class="sub-name">
					{{item.subName}}
				</p>
				<table class="tags">
					<tr>
						<td>{{item.tag5}}</td>
						<td>{{item.value5}}</td>
					</tr>
					<tr>
						<td>{{item.tag6}}</td>
						<td>{{item.value6}}</td>
					</tr>
					<tr>
						<td>{{item.tag7}}</td>
						<td>{{item.value7}}</td>
					</tr>
				</table>
				<div class="available-price">
					<span class="grouping" title="_MinimalGrouping">
						{{Vn.Value.format(item.grouping, 'x%.0d')}}
					</span> 
					<span class="available" title="_Available">
						{{item.available}}
					</span> 
					<span class="price" title="_GroupingPrice">
						{{Vn.Value.format(item.price, '%.02d€')}}
					</span>
				</div>
			</div>
		</div>
		</custom>
	</htk-repeater>
	</div>
</div>
<div id="right-panel" class="right-panel" on-click="onRightPanelClick">
	<div class="basket-info">
		<p>{{Vn.Value.format(basket.sent, '%D')}}</p>
		<p>
			{{_(basket.method != 'PICKUP' ? 'Agency' : 'Warehouse')}} 
			{{basket.agency}}
		</p>
		<button class="thin" on-click="this.onConfigureClick()">
			<t>Modify</t>
		</button>
	</div>
	<div class="filter">
		<div class="categories">
			<div class="realms">
				<htk-repeater
					form-id="form"
					renderer="realmRenderer"
					class="realms-box">
					<db-model
						id="realms"
						property="model"
						on-status-changed="refreshTitle">
						SELECT c.id, l.name, c.color, c.code
							FROM vn.itemCategory c
								JOIN vn.itemCategoryL10n l ON l.id = c.id
							WHERE c.display
							ORDER BY display
					</db-model>
					<custom>
						<a id="link">
							<img
								id="image"
								src="{{`image/family/black/${form.code}.svg`}}"
								title="{{form.name}}"
								alt="{{form.name}}"/>
						</a>
					</custom>
				</htk-repeater>
				<div class="clear"/>
			</div>
		</div>
		<div id="realm-msg" class="realm-msg">
			<h5><t>Choose a realm</t></h5>
		</div>
		<div id="filters" class="filters">
			<h2><t>Filter by</t></h2>
			<htk-combo
				placeholder="_Family"
				form="params"
				column="type"
				id="type-filter">
				<db-model
					id="types"
					property="model"
					conn="conn"
					lot="params"
					result-index="1"
					on-status-changed="refreshTitle">
					CALL myBasket_getAvailable;
					SELECT DISTINCT t.id, l.name
						FROM vn.item i
							JOIN vn.itemType t ON t.id = i.typeFk
							JOIN tmp.itemAvailable a ON a.id = i.id
							JOIN vn.itemTypeL10n l ON l.id = t.id
						WHERE t.`order` >= 0
							AND t.categoryFk = #realm
						ORDER BY t.`order`, l.name;
					DROP TEMPORARY TABLE tmp.itemAvailable;
				</db-model>
			</htk-combo>
			<htk-combo
				placeholder="_Color"
				form="params"
				column="color"
				on-mousedown="colors.lazyRefresh()">
				<db-model
					id="colors"
					property="model"
					auto-load="false"
					result-index="1">
					CALL myBasket_getAvailable;
					SELECT DISTINCT l.id, l.name
						FROM vn.item i
							JOIN vn.itemType t ON t.id = i.typeFk
							JOIN tmp.itemAvailable a ON a.id = i.id
							JOIN vn.inkL10n l ON l.id = i.inkFk
						WHERE #filter
						ORDER BY name;
					DROP TEMPORARY TABLE tmp.itemAvailable;
				</db-model>
			</htk-combo>
			<htk-combo
				placeholder="_Producer"
				form="params"
				column="producer"
				on-mousedown="producers.lazyRefresh()">
				<db-model
					id="producers"
					property="model"
					auto-load="false"
					result-index="1">
					CALL myBasket_getAvailable;
					SELECT DISTINCT p.id, p.name
						FROM vn.item i 
							JOIN vn.itemType t ON t.id = i.typeFk
							JOIN tmp.itemAvailable a ON a.id = i.id
							JOIN vn.producer p ON p.id = i.producerFk
						WHERE #filter
						ORDER BY name;
					DROP TEMPORARY TABLE tmp.itemAvailable;
				</db-model>
			</htk-combo>
			<htk-combo
				placeholder="_Origin"
				form="params"
				column="origin"
				on-mousedown="origins.lazyRefresh()">
				<db-model
					id="origins"
					property="model"
					auto-load="false"
					result-index="1">
					CALL myBasket_getAvailable;
					SELECT DISTINCT o.id, l.name, o.code
						FROM vn.item i 
							JOIN vn.itemType t ON t.id = i.typeFk
							JOIN tmp.itemAvailable a ON a.id = i.id
							JOIN vn.origin o ON o.id = i.originFk
							JOIN vn.originL10n l ON l.id = o.id
						WHERE #filter
						ORDER BY name;
					DROP TEMPORARY TABLE tmp.itemAvailable;
				</db-model>
			</htk-combo>
			<htk-combo
				placeholder="_Category"
				form="params"
				column="category"
				on-mousedown="categorys.lazyRefresh()">
				<db-model
					id="categorys"
					property="model"
					auto-load="false"
					result-index="1">
					CALL myBasket_getAvailable;
					SELECT DISTINCT i.category, i.category
						FROM vn.item i 
							JOIN vn.itemType t ON t.id = i.typeFk
							JOIN tmp.itemAvailable a ON a.id = i.id
						WHERE #filter
						ORDER BY category;
					DROP TEMPORARY TABLE tmp.itemAvailable;
				</db-model>
			</htk-combo>
		</div>
		<div id="order" class="order">
			<h2><t>Order by</t></h2>
			<select on-change="onOrderChange">
				<option value="D|relevancy" selected="true">
					<t>Relevancy</t>
				</option>
				<option value="A|item">
					<t>Name</t>
				</option>
				<option value="A|price">
					<t>Lower price</t>
				</option>
				<option value="D|price">
					<t>Higher price</t>
				</option>
				<option value="A|available">
					<t>Available</t>
				</option>
				<option value="A|size">
					<t>Lower size</t>
				</option>
				<option value="D|size">
					<t>Higher size</t>
				</option>
				<option value="A|ink">
					<t>Color</t>
				</option>
				<option value="A|producer">
					<t>Producer</t>
				</option>
				<option value="A|origin">
					<t>Origin</t>
				</option>
				<option value="A|category">
					<t>Category</t>
				</option>
			</select>
		</div>
	</div>
</div>
<htk-popup id="desc-popup">
	<div
		property="child-node"
		class="desc-popup"
		id="description"/>
</htk-popup>
<htk-popup
	id="card-popup"
	class="card-popup"
	modal="true"
	on-closed="onPopupClose">
	<div property="child-node" class="item-card">
		<db-form vModel="extendedCard">
			<db-model
				property="model"
				lot="card-lot"
				on-status-changed-after="onCardLoad">
				SELECT i.description, o.name origin
					FROM vn.item i
						LEFT JOIN vn.originL10n o ON o.id = i.originFk
					WHERE i.id = #item
			</db-model>
		</db-form>
		<div class="top">
			<htk-image
				directory="catalog"
				subdir="200x200"
				form="$card"
				column="image"
				stamp-column="updated"
				full-dir="1600x900"
				conn="conn"
				editable="true"/>
			<div class="item-info">
				<h2>{{card.item}}</h2>
				<p class="sub-name">{{card.subname}}</p>
				<p>#{{card.id}}</p>
				<p>{{Vn.Value.format(card.stems, _('%.0d Units'))}}</p>
			</div>
			<p class="desc">{{extendedCard.description}}</p>
			<htk-repeater show-status="false" form-id="tag" class="tags">
				<db-model
					property="model"
					lot="card-lot"
					on-status-changed-after="onCardLoad">
					SELECT l.name, it.value
						FROM vn.itemTag it
							JOIN vn.tag t ON t.id = it.tagFk
							JOIN vn.tagL10n l ON l.id = t.id
						WHERE it.itemFk = #item
							AND priority >= 0
						ORDER BY it.priority
				</db-model>
				<custom>
					<tr>
						<td>{{tag.name}}</td>
						<td>{{tag.value}}</td>
					</tr>
				</custom>
			</htk-repeater>
		</div>
		<htk-grid class="lots-grid" show-header="false">
			<db-model
				id="item-lots"
				property="model"
				result-index="1"
				on-status-changed-after="onCardLoad"
				lot="card-lot">
				CALL myBasket_calcCatalogFromItem(#item);
				SELECT l.warehouseFk, w.name warehouse, p.`grouping`,
						p.price, p.priceKg, p.rate, l.available
					FROM tmp.ticketLot l
						JOIN tmp.ticketComponentPrice p ON p.warehouseFk = l.warehouseFk
						JOIN vn.warehouse w ON w.id = p.warehouseFk
					ORDER BY warehouseFk, `grouping`;
				DROP TEMPORARY TABLE
					tmp.ticketCalculateItem,
					tmp.ticketComponentPrice,
					tmp.ticketComponent,
					tmp.ticketLot,
					tmp.zoneGetShipped;
			</db-model>
			<htk-column-spin column="price" unit="€" digits="2"/>
			<htk-column-spin column="priceKg" unit="€/kg" digits="3" class="price-kg"/>
			<htk-column-text column="grouping" format="x%.0d"/>
			<htk-column-button
				column="id"
				icon="add"
				tip="_Add"
				on-clicked="onAddLotClick"/>
		</htk-grid>
		<div class="footer">
			<button
				title="_Erase"
				on-click="this.onEraseClick()"
				class="erase">
				<htk-icon
					name="delete"
					theme="dark"
					alt="_Erase"/>
			</button>
			<htk-text id="amount"/>
			<button
				title="_Confirm"
				on-click="this.onConfirmClick()"
				class="confirm">
				<htk-icon
					name="done"
					theme="dark"
					alt="_Confirm"/>
			</button>
		</div>
	</div>
</htk-popup>
</vn>