jQuery UI Widgets › Forums › Plugins › Validator, Drag & Drop, Sortable › drag & drop populate
Tagged: drag & drop populate, jqxdragdrop, json, php
This topic contains 7 replies, has 2 voices, and was last updated by areis 12 years, 4 months ago.
-
Authordrag & drop populate Posts
-
Hi.
someone can help me and say how to connect the example of jqxdragdrop with json and php?thanks
Hello areis,
Could you, please, provide us with more information? Do you wish to implement similar solution where the items are populated through JSON?
Best Regards,
DimitarjQWidets team
http://www.jqwidgets.com/thanks for the reply.
What I wanted was for example http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxdragdrop/index.htm#demos/jqxdragdrop/defaultfunctionality.htm
explain how it would be done dynamically using a database and php and jsonRegards
Antonio ReisHi Antonio Reis,
The products variable of cart can be a PHP loaded JSON file rather than a local array as in the example. The JSON file may have three fields – name, pic and price.
Best Regards,
DimitarjQWidets team
http://www.jqwidgets.com/thanks for the reply.
can you give me an example? I’m not very good at it.
thank youHi.
I stil not solve the problem. Someone can help me to solve?Hi Antonio Reis,
Here is a solution with JSON:
<!DOCTYPE html><html lang="en"><head> <meta name="keywords" content="jqxDragDrop, jQuery Draggable, jQWidgets, Default Functionality" /> <meta name="description" content="jqxDragDrop is a plugin which will make any DOM element draggable. It can be used in combination with many widgets like jqxTree, jqxGrid, jqxListBox and etc." /> <title id='Description'>Drag a T-Shirt from the left area and drop it into the 'Shopping Cart' table.</title> <link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" /> <link rel="stylesheet" href="../../jqwidgets/styles/jqx.classic.css" type="text/css" /> <script type="text/javascript" src="../../scripts/jquery-1.8.2.min.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxscrollbar.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxmenu.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxgrid.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxgrid.columnsresize.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxgrid.selection.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxlistbox.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxdropdownlist.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxdragdrop.js"></script> <style type="text/css"> .draggable-demo-cart { border: 2px dashed #aaa; padding: 5px; width: 232px; margin: auto; } .draggable-demo-shop { border: 1px solid #666; width: 665px; padding: 5px; } .draggable-demo-catalog { position: relative; width: 397px; border: 1px solid #bbb; height: 457px; float: left; } .draggable-demo-product-image { width: 150px; } .draggable-demo-product { padding: 5px; border: 1px solid #888; width: 115px; height: 135px; background-color: #fff; position: absolute; margin: 5px; } .draggable-demo-product img { width: 113px; border: 1px solid #aaa; border-top-width: 0px; outline-width: 15px; } .draggable-demo-product-header { border: 1px solid #888; height: 20px; border-bottom-width: 0px; font-size: 13px; position: relative; text-align: center; } .draggable-demo-product-header-label { margin-top: 3px; } .draggable-demo-product-price { position: absolute; top: 124px; left: 6px; width: 113px; text-align: center; font-family: Verdana; font-size: 11px; display: none; height: 16px; border-top: 1px solid #888; border-bottom: 1px solid #fff; } .draggable-demo-title { font-size: 23px; font-family: Verdana; text-align: center; padding: 7px; margin: 5px; font-weight: bold; border: 1px solid #aaa; } .draggable-demo-cart-wrapper { float: right; border: 1px solid #aaa; height: 457px; width: 260px; } .draggable-demo-total { font-size: 17px; font-family: Verdana; margin: 6px; margin-top: 7px; padding: 7px; } </style> <script type="text/javascript"> var cart = (function ($) { var productsOffset = 3, theme, onCart = false, cartItems = [], totalPrice = 0; var source = { datatype: "json", datafields: [ { name: "name" }, { name: "pic" }, { name: "price" } ], url: "../../SUPPORT/SampleJSON.txt", async: false }; var products = new $.jqx.dataAdapter(source); products.dataBind(); var name; function render() { productsRendering(); gridRendering(); }; function addClasses() { $('.draggable-demo-catalog').addClass('jqx-scrollbar-state-normal-' + theme); $('.draggable-demo-title').addClass('jqx-expander-header-' + theme); $('.draggable-demo-title').addClass('jqx-expander-header-expanded-' + theme); $('.draggable-demo-total').addClass('jqx-expander-header-' + theme).addClass('jqx-expander-header-expanded-' + theme); if (theme === 'shinyblack') { $('.draggable-demo-shop').css('background-color', '#555'); $('.draggable-demo-product').css('background-color', '#999'); } }; function productsRendering() { var catalog = $('#catalog'), imageContainer = $('</div>'), image, product, left = 0, top = 0, counter = 0; var productsCount = products.records.length; for (var i = 0; i < productsCount; i++) { product = products.records[i]; name = product.name; image = createProduct(name, product); image.appendTo(catalog); if (counter !== 0 && counter % 3 === 0) { top += 147; // image.outerHeight() + productsOffset; left = 0; } image.css({ left: left, top: top }); left += 127; // image.outerWidth() + productsOffset; counter += 1; } $('.draggable-demo-product').jqxDragDrop({ dropTarget: $('#cart'), revert: true }); }; function createProduct(name, product) { return $('<div class="draggable-demo-product jqx-rc-all">' + '<div class="jqx-rc-t draggable-demo-product-header jqx-widget-header-' + theme + ' jqx-fill-state-normal-' + theme + '">' + '<div class="draggable-demo-product-header-label"> ' + name + '</div></div>' + '<div class="jqx-fill-state-normal-' + theme + ' draggable-demo-product-price">Price: <strong>$' + product.price + '</strong></div>' + '<img src="../../images/t-shirts/' + product.pic + '" alt=' + name + '" class="jqx-rc-b" />' + '</div>'); }; function gridRendering() { $("#jqxgrid").jqxGrid( { height: 335, width: 230, theme: theme, selectionmode: 'none', columns: [ { text: 'Item', dataField: 'name', width: 120 }, { text: 'Count', dataField: 'count', width: 50 }, { text: 'Remove', dataField: 'remove', width: 60 } ] }); $("#jqxgrid").bind('cellclick', function (event) { var index = event.args.rowindex; if (event.args.datafield == 'remove') { var item = cartItems[index]; if (item.count > 1) { item.count -= 1; updateGridRow(index, item); } else { cartItems.splice(index, 1); removeGridRow(index); } updatePrice(-item.price); } }); }; function init() { theme = "classic"; render(); addClasses(); addEventListeners(); }; function addItem(item) { var index = getItemIndex(item.name); if (index >= 0) { cartItems[index].count += 1; updateGridRow(index, cartItems[index]); } else { var id = cartItems.length, item = { name: item.name, count: 1, price: item.price, index: id, remove: '<div style="text-align: center; cursor: pointer; width: 53px;"' + 'id="draggable-demo-row-' + id + '">X</div>' }; cartItems.push(item); addGridRow(item); } updatePrice(item.price); }; function updatePrice(price) { totalPrice += price; $('#total').html('$ ' + totalPrice); }; function addGridRow(row) { $("#jqxgrid").jqxGrid('addrow', null, row); }; function updateGridRow(id, row) { var rowID = $("#jqxgrid").jqxGrid('getrowid', id); $("#jqxgrid").jqxGrid('updaterow', rowID, row); }; function removeGridRow(id) { var rowID = $("#jqxgrid").jqxGrid('getrowid', id); $("#jqxgrid").jqxGrid('deleterow', rowID); }; function getItemIndex(name) { for (var i = 0; i < cartItems.length; i += 1) { if (cartItems[i].name === name) { return i; } } return -1; }; function toArray(obj) { var item, array = [], counter = 1; for (var key in obj) { item = {}; item = { name: key, price: obj[key].count, count: obj[key].price, number: counter } array.push(item); counter += 1; } return array; }; function addEventListeners() { $('.draggable-demo-product').mouseenter(function () { $(this).children('.draggable-demo-product-price').fadeTo(100, 0.9); }); $('.draggable-demo-product').mouseleave(function () { $(this).children('.draggable-demo-product-price').fadeTo(100, 0); }); $('.draggable-demo-product').bind('dropTargetEnter', function (event) { $(event.args.target).css('border', '2px solid #000'); onCart = true; $(this).jqxDragDrop('dropAction', 'none'); }); $('.draggable-demo-product').bind('dropTargetLeave', function (event) { $(event.args.target).css('border', '2px solid #aaa'); onCart = false; $(this).jqxDragDrop('dropAction', 'default'); }); $('.draggable-demo-product').bind('dragEnd', function (event) { $('#cart').css('border', '2px dashed #aaa'); if (onCart) { addItem({ price: event.args.price, name: event.args.name }); onCart = false; } }); $('.draggable-demo-product').bind('dragStart', function (event) { var tshirt = $(this).find('.draggable-demo-product-header').text(), price = $(this).find('.draggable-demo-product-price').text().replace('Price: $', ''); $('#cart').css('border', '2px solid #aaa'); price = parseInt(price, 10); $(this).jqxDragDrop('data', { price: price, name: tshirt }); }); }; return { init: init } } ($)); $(document).ready(function () { cart.init(); }); </script></head><body class='default'> <div id="shop" class="draggable-demo-shop jqx-rc-all"> <div id="catalog" class="draggable-demo-catalog jqx-rc-all"> </div> <div class="draggable-demo-cart-wrapper jqx-rc-all"> <div class="draggable-demo-title jqx-rc-t"> Shopping Cart</div> <div id='cart' class="draggable-demo-cart jqx-rc-all"> <div id="jqxgrid"> </div> </div> <div class="draggable-demo-total"> Total: <strong><span id="total">$ 0</span></strong></div> </div> <div style="clear: both;"> </div> </div></body></html>
And here is the code of the file SampleJSON.txt:
[{"name": "Retro Rock T-shirt", "pic": "black-retro-rock-band-guitar-controller.png", "price": "15"},{"name": "Lucky T-shirt", "pic": "bright-green-gettin-lucky-in-kentucky.png", "price": "18"},{"name": "Loading T-shirt", "pic": "brown-loading-bar-computer-geek.png", "price": "25"},{"name": "Cool Story T-shirt", "pic": "cool-story-bro.png", "price": "20"},{"name": "The beard T-shirt", "pic": "fear-the-beard.png", "price": "17"},{"name": "Don't care T-shirt", "pic": "honey-badger-don-t-care.png", "price": "19"},{"name": "Guitar T-shirt", "pic": "scott-pilgrim-red-rock-band.png", "price": "24"},{"name": "Dodgers T-shirt", "pic": "2-sided-dodgers-bankrupt-t-shirt-ash.png", "price": "21"},{"name": "Misfits T-shirt", "pic": "misfits-sf-giants-white.png", "price": "21"}]
Best Regards,
DimitarjQWidets team
http://www.jqwidgets.com/many, many thanks, Dimitar!!
-
AuthorPosts
You must be logged in to reply to this topic.