How to track checkboxes with Django and endless pagination? - forms

I am a Django noob and have a situation that goes beyond the basic documentation, etc.
I am updating an ordering webpage that has a form structured as follows:
several text boxes, etc to gather general info (name, date, etc)
two separate tables for selecting (via checkbox) catalogs that are generated/managed using endless_pagination. Each table can have thousands of records, hence the endless_pagination. The first column in each table is a checkbox with value = catalog.id.
a textbox where the user can manually enter catalog IDs
a submit button
I am not sure how to keep track of what a user has selected in the two paginated tables since the checked boxes are lost when choosing a different page. Also, when the user flips back and forth between the pages, the previoulsy checked catalogs will need to be re-checked(since the checked state is not maintained). I am also not sure which tool(s) to use to deal with this.
My thought is to use JavaScript (with which I have minimal experience) to update a list of catalog IDs whenever a checkbox is checked/unchecked and:
- and attach that list to the form or
- update a variable in the form or
- send as a variable separate from the form, whichever is possible/makes more sense.
I'm hoping that maintaining a list of catalog IDs is possible because the next iteration of this form will likely include some sort of filtering so I'm trying to devise a solution that will not have to be reworked later.
I have reviewed a lot of posts but I believe the closest solutions are rendered useless because of the endless_pagination.
Let me know if further clarification is required. Thanks in advance for any suggestions.
UPDATE
I tried using JavaScript to store the catalog IDs in an array when a checkbox is checked. This does not work when a user selects another page in the pagination. The array of checked catalog IDs is lost when the page 'reloads'.

I'm running into this problem right now as well. I'm handling this by writing the checked items to localStorage so they carry across to page 2, 3, etc.. as well as show up as already checked when you go back to page 1. Then every time the page loads, either find and check the existing checkbox, or create a hidden input with the appropriate name and value and append it to the main form.
var selected_items = []
function add_item_to_checkbox(item) {
localStorage.setItem('selected_items', JSON.stringify(selected_items));
checkbox.on("click", add_item_to_checkbox);
bahh... Just look at my jsfiddle it's easier to read and yeah. I don't have to type JS into a textarea on stackoverflow.
Here is my javascript minus a few things that are specific to my code. I'm sure it could be improved upon but it works really well for my application.

Related

Editing a custom object record in visualforce page

How can I achieve editing a custom object record by listing all the records and selecting a particular record in checkbox which will open popup window for editing purpose in visualforce ?
What have you tried already, do you have any code sample you're stuck with?
Be careful what you wish for, "all records" when it's tens of thousands of them will likely blow the page's viewstate. I mean solution might be as simple as making a page with <apex:enhancedList> in it...
Read up about StandardSetController.
It's old feature, it's battle-tested, there will be tons of examples how to use it like https://developer.secure.force.com/cookbook/recipe/editing-multiple-records-using-a-visualforce-list-controller or http://www.sfdcpoint.com/salesforce/pagination-using-standard-set-controller-salesforce/
Looks like you need something very simple that just displays list of links & these links will have JavaScript (window.open function?) that creates a popup with record id passed.

MS ACCESS 2013 Displaying Data Rows for users to be able to click and open a new form

I'm just starting to get into Access due to my job and am tasked with creating a form that displays Data for the individual users on load. Basically what it needs to do is to get data from 3 tables, join them together, and then display the found rows that match that person's accounts they are responsible for managing.
I have this working via a single table Query using a listbox and a datasheet view, however, being a web developer by trade, I would like functionality that displays items similar to what a Unordered List(UL) would display and with functionality that allows the user to click on the company name(which acts as a hyperlink) to then update the information in a new form that I have built, by loading that data into the form, and allowing them to update the fields that I have designated as changeable.
Is this possible in Access via a form or would this be too difficult to implement? I'm decent with VBA, still learning what a lot of the things do, but as far as the logic and things like that to make something happen, I can do that no problem. These rows all have a unique ID so I would be able to either keep them in a collection to populate the form data or I can simply requery the data using the ID number for loading the form data.
A listbox performs like a combobox in datasheet view. Did you mean you have a combobox?
Actually very simple to accomplish, and various methods available. I assume you have a form bound to your Query with a combobox that lists companies. Controls have events. Use the Click event of the Company control. I use only VBA (not macros but macro could do this). Select [Event Procedure] in the event property. Click the ellipses (...) to open VBA Code Editor, type code into the procedure:
DoCmd.OpenForm "CompanyInfo", , , "ID=" & Me.tbxCompany
Keep in mind, controls used for the purpose of entering/selecting filter criteria should be UNBOUND, otherwise you would change data in record. However, using the Click event of a BOUND combobox (as long as you click on the box, not the dropdown) or textbox will not change existing data, not so for a listbox.

Symfony: unique options in embedded form collection

I have an embedded form collection in Symfony. Which is working nice. I am working with a manytomany assocation mapping.
Except i want to create (with javascript?) the form so that only unique values are available. In my example i have an Organisation which can exist of many users. When i add user "L" in this case and i want to add a second user i want to prevent that user "L" is available in the other dropdown.
The way i embedded the collection of forms is exactly like the documentation of Symfony has learned me. (http://symfony.com/doc/current/cookbook/form/form_collections.html)
Down below is an example of how it works now (in this example I want to prevent that in the dropdown the user "L" is available as an option.
Thank you very much!
Unfortunately, there's no way you can make the HTML form behave this way. HTML forms just do not have any composite (or dependent) <select> widgets. So, the right way to go here would be:
validating the form server-side, so that duplicate values in two select boxes are not allowed;
adding some JavaScript code to the view that renders form. Perhaps this code should listen to <select>s' onChange events, and once an event is received, the option selected in the first box should either receive a disabled attribute or get deleted.

Play Framework form with history

I'm working on an application using Play 2.0.4 in Scala, and one of the features I was asked to implement is to build a form that remembers all of the edit history. Basically, there should be a button next to every field that shows the details of every change, because the app users may want to rollback or use the edit history information later.
The first idea pops up in my mind is to assign a hidden div to every field that appends every change, and only shows the div when users click on the corresponding button. This doesn't sound very hard, but I feel like it may make the HTML a mess (since each user has his own record, each record has many fields). Or I could make a copy of the database and store all the changes inside, with the primary keys changed to be both the id of the form, and the edit time.
Thoughts? Am I overthinking the problem? Is there a more elegant way to store all of the edit history? We estimate that there would only be around 200 people in the company using it, so I guess I can let efficiency slide a little...
Thanks in advance.
I would normalize and persist the record in the database. This would allow you to have history on changes by having a history table for each section that they with to rollback.
This would allow manageability of restorations based on sets of data and significant changes can be tracked. Managing each field separately would be very cumbersome and least pragmatic.

How does GWT "know" which DOM element you've just selected?

It has been a while since I've touched GWT, but I was recently looking at GWT applications to see how they accomplished certain tasks. I noticed that if you go into AdWords (a GWT application), you can manipulate table information in-line. For example, if I go into my campaign and click the pencil icon next to the ad group, a little popup will appear allowing me to change the ad group's name ... except there's no identifying information anywhere in the DOM structure. No hidden fields, no id's snuck into the div elements.
What's going on here? I've been working with interactive tables, but I've always established a click handler on a class and stuck an ID in there so I can tell what I'm editing. I've always found this as unsatisfactory. Any ideas?
It uses a JavaScript variable to get a hold on the element directly when it's created. That variable can then be stored somewhere - as long as it's accessible directly or indirectly from the the global object (document), it can be retrieved later from there.
A simple pure JavaScript example would be:
document.myParagraph = document.createElement('p');
document.body.appendChild(myParagraph);
document.mySpan = document.createElement('span');
document.myParagraph.appendChild(mySpan);
...
document.mySpan.onclick = ...