Backpack Laravel Filterable Crud List in Tabbed Content - laravel-backpack

I have two Crud Controllers, Project & PurchaseOrders.
When I display a particular project content (say URL /project/2/show), its related purchase orders are displayed in table format in one of the tabs like picture below:
Since there will be a lot of purchase orders within same project, I need the table above to be filterable, like in the method SetupListOperation() in PurchaseOrders Controller like picture below:
Basically, how do I put PurchaseOrders Controller List Operation within a Project content Tab?
Thanks

In short, in Backpack version 4.x / 5.x, you can't. The ListOperation wasn't designed to be used that way, so it will be very difficult to do. It will be faster to just code that feature yourself, with a limited set of features - only the ones you need.
The main reason why it wouldn't be simple is that both the ListOperation and the CreateOperation / UpdateOperation would be using the CRUD singleton, whereas you need to show/manipulate entries in two different entities (projects and purchase orders).
The Backpack team is working on a feature that you could use for this (a "table" widget you can include anywhere, including there), but it will probably take 2-3 more months to launch.
Also, there's a Backpack add-on offering something similar (see https://github.com/izica/relations-widgets-for-backpack ) but it's meant for the Show operation (not Update) and it doesn't include filtering, from what I can tell.
So the best you can do, in my opinion, is to just add some rough filters to your custom view - they'll work just like you want, and when an official solution becomes available, you can use that then.

Related

Reload a Tableau custom SQL DataSource (live) with a parameter = username() after a logout and login with a different user

I created a DataSource like this:
select sd.* from global_reporting.summary_drivers sd
join global_reporting.vw_row_level_security vrls
on vrls.company = sd.company
where vrls.company = SUBSTRING_INDEX(<Parameters.COMPANY_AND_USER>, '~~', 1)
and
vrls.username = SUBSTRING_INDEX(<Parameters.COMPANY_AND_USER>, '~~', -1)
The problem is that if I logout and log back in from a WebApplication that includes the dashboard into an iframe, the username() function changes correctly but the derived parameter does not change and so also the DataSource remains with the old data.
Parameters.COMPANY_AND_USER was set starting from a calculated field, from the username() function.
Questions:
Am I on the right path or is there a better or any other way to do that?
Since you are embedding your views in a web page, you can use the JavaScript API to fine tune how your view behaves or more tightly couple it with your web page
https://help.tableau.com/current/api/js_api/en-us/JavaScriptAPI/js_api.htm
For instance, you could tell your views to refresh data using the RefreshDataASync() function whenever the user changes.
I’d recommend using the <object> tag placed inside a <div> instead of the <iframe> tag for embedding your views, to get a bit more control.
https://help.tableau.com/current/pro/desktop/en-us/embed_code.htm
Tableau produced a very good quick tutorial about their JavaScript API that lets you get a very good idea of what it provides and how to use it that you can skim in about 5 minuets. Highly recommended. https://help.tableau.com/samples/en-us/js_api/tutorial.htm
All that said, you absolutely can use custom SQL for your data source, but I’d drop to that level only if you’re convinced the higher level features won’t work for you. If only for maintainability reasons.

Camunda Modeler form fields organization

I wanna to use Camunda Modeler to create a complicated form cards for User Tasks consist about 20-30-50 fields divided in several tabs. Many cards will contain the same fields and fields groups. I wanna to have an ability to create and reuse fields groups or somewhat liked on fields groups. How can organize process with Modeler? What is the appropriate template? Or maybe you can recommend another tool?
I have a variant of template, but it's not clear for me now. The complicated form will be divided into several tabs. For example the card consists in 2 Tabs: Tab1 and Tab2. Then I can suppose that the card with active Tab1 is one state of the card, and the same card with active Tab2 - the another state. And then I can configure a scenario for each tab and transitions between tabs. Does it look believable?
Apparently, there are no standard solutions of such kind of issue. I'm going to make an integration form.io formBuilder into Camunda modeler instead standard form constructor. Maybe it looks madly, but I'm sure - it would be working. The formio has angular implementation of the constructor and modeler is based on the electron technologies. There are looks the same, and integration is not imagine as great headache. I hope. But I need a lot of time to do this.
We created our own framework with Scala / Play and Semantic-UI (Here you can use whatever technology you like).
You model the user form in the Camunda Modeler, using additional properties to describe the 'special' components, like File Upload, Field Grouping, Number Field, Radio Buttons etc.
We use then Play Templates / Semantic-UI to implement the generic Forms.
So in our implementation we use the defined properties to generate them in the Form.
So for example you can provide a property width. This value we use for the Semantic-UI layout which allows widths 1 to 16. So you have a simple possibility to have more than one component in one row.

SugarCRM fetching data from outside REST service to subpanel

I'm trying to create subpanel in Account detail view where list of elements is fetched from external REST service.
I know how to define subpanel, but have no idea how to fill it with data from external network source. Was trying to use get_subpanel_data but there I can only change SQL.
Any ideas how can I do this?
When I've done this in the the past, at least with Sugar 6, I opted distinctly not to try to create a true subpanel. The data being loaded is coming from an outside source and is loaded dynamically with the page, so why present it as if it's static data coming from Sugar? Instead, I created a custom Smarty template to use as the footer on the detail page. For such an example, you can check how it works on the Calls Edit View. I think it's the footerTpl parameter in the detailviewdefs.php or editviewdefs.php. I loaded the smarty template by creating a custom detail view for my module, so custom/modules/MyModule/views/view.detail.php - extend the base Detail View class and override the display to feed Smarty new params, then your Smarty template only needs to iterate through and present the data that your view defined.
To be super-hip and abide by MVC, you could even put your custom code into your bean (if it's a custom module) or into a custom controller method, then reference that from the view.detail.php, and still feed it from there to the Smarty template.
Alternatively, you could just load JavaScript into the Smarty template and use the JavaScript to call the third-party service, parse and present it, etc.
I realize this question is a little bit old now however it comes up fairly often so why not provide an answer with a couple possible solutions. I won't get into code but more just into the design theory of how it can work. If someone needs more specific code help then that is another question.
A couple ideas...
As you mentioned you can define a custom Function which will load in Data to the SubPanel from your own SQL Query. That is one method that I just recently got to finally put to use after knowing about it for a good year and a half.
When you go this route, you are restrained to using the Columns in the SubPanel. I assume it is using the actual Metadata files to determine which Field Columns a SubPanel can use so you pretty much need your custom data in a Database table to have the same column names as the fields defined in the SubPanel Metadata.
Obviously this works great in the right situation, however not always and that leads us into the 2nd method I know of.
The other way is pretty much what #Mattew-Poer mentioned in his answer. It means abandoning the SubPanel altogether and instead generating your own HTML. This is by far my favorite and prefered way of doing it and I have been some really custom modules due to this being possible in a custom module! I will show an example below.
(Click HERE to View full size image)
In the screenshot, you can see in this example that I have something looking Similar to a SubPanel however it is not and is much for flexible and easy to customize.
Example, to the far left column in my fake subpanel is image checkboxes. When clicked on, an AJAX request is made to change the Task row Status.
After that, the checkbox image is updated to indicate the new Status state, the Modified DateTime is updated, the Status column has color background SPANS and is also updated with the correct text and background color when the left side checkbox is clicked.
Doing any of this with the standard SubPanels is a complete nightmare and would be difficult to do some of the stuff that you are open to do when you build your own version of a SubPanel.
With that said, I have built an identical clone of the above screenshot using SugarCRM default SubPanels! It was a nightmare. I could easily update the content and HTML in some of the columns. I even had the AJAX click checkbox image to update and do all the other updates I mentioned above. It wasn't too hard and worked fairly good but it had some issues.
When you do inline edit, inline create record, or subpanel paging to load different set of record. You would then lose all the custom HTML formatting that was applied. The reason is, in the SubPanel you are limited to using the After UI load logic hook. So since the "Page" is loaded already, when an AJAX request is made to add/edit the subpanel content or load a new set of items with the paging links. It only loads the SubPanel content on those events and the whole Page content does not reload. Because the logic hook only fires off 1 time after the page loads, this newly loaded subpanel data doe not receive any of your custom HTML formatting.
In my case, this means that nice looking colored background Status spans are lost, the image checkboxes are lost, and some other functionality is lost.
Now to get super technical, I could have gone another 3rd route and instead made new Custom Field Types for each SubPanel filed that I needed to apply custom HTML to. This process is super hard in my experience and in some cases it really isn't the BEST solution.
Because of the reason explained, this is why my new modules use the Custom HTML route to generate my own version of a custom subpanel or whatever Data is needed in my Module pages! So far it is working better than I imagined and has opened doors for me to build custom SugarCRM modules that I previously didn't even realize would be possible to build due to some of the issues I mentioned above. Now I bypass them altogether and open the door to do pretty much anything!
I've got some really cool stuff for SugarCRM in the works right now. If anyone has any questions feel free to ask in a new question or for me personally in a comment here.

Is my thinking about mvvm right?

I'm having a little bit of a hard time getting into mvvm. I'm writing a simple app, Notebook. I have one viewmodel, it's name is actually ViewModel. It has an ObservableCollection of Notes inside and methods to save and load those from Isolated Storage. My only Model is Note.cs, it implements INotifyPropertyChanged and I'm of course RaisingPropertyChanged.
I've also got two view, both of them are user controls. One to display list of notes and one to edit the one chosen from the list.
My questions are:
Where do I create an instance of my vievmodel?
How should I implement going from the page with list of notes to the page with detailed view after choosing one Note to edit? At the
moment I'm saving the index of Note in App.xaml.cs, going to the next page and setting
the DetailedView DataContext to the right Note in OnNavigatedTo, but
I don't think it's actually the perfect solution.
Where should I save my Notes? I guess Application_Closing in App.xaml.cs is the right place to do it, but I'd have to have my viewmodel as a global object there, is this the right approach?
Additional question:
I have to add possibility to group notes. I guess that class Group with dictionary (GroupName, howManyNotes) is going to be allright since I don't have to be able to for example write all notes from selected group. Do you think there's a better approach I should think about?
Thanks for respones,
Michał.
I would suggest you take a look at Calibrun.Micro which is a great framework for MVVM. You can get some sample from the CodePlex.
I have used that in a bunch of Project, and will give you flexibility in case if your project grows in size.
Google for Caliburn.Micro sample and you will find a number of sample for all technologies like WPF, Silverlight, Windows Store, Windows Mobile.
Caliburn.Micro CodePlex

Repeatable data content in umbraco

I am just wondering is there any plugin to create dynamic content for a page i.e something similar to a data repeaters in .net. To make it simple it should be a section that should contains 5 to 6 fields/property like
heading
heading 2
image
content - rich text editor
info
This must be in repeatable control so that the editor can add any number of these section a page and all these should be displayed in a single page.
Is there a plugin for the above functionality or what is the best way to achieve this.Any help would be greatly appreciated.
Thanks
Aneesh
You can achieve this without any plugins.
Create your repeatable section (containing the relevant fields) as a document type, and then use the multi-node picker in another document type to select one or many of the sections.
So for example, I could have a FAQs page (which uses a document type called "FAQs Page"), and I want to be able to add multiple question and answers to this page. I could set up a document type called "Question". This will contain two fields: Question and Answer.
On the "FAQs Page" document type, I would add a multi-node picker field called "Questions". This way, an author could select multiple "Question" nodes to appear on the FAQs page.
You would obviously need the code to output this, and also you would create a data type that inherited from multi-node picker, so that you could limit the selection to only Question nodes.
There is also the Repeatable Custom Content datatype which works well but does not support all data types. But it does support all the ones you need for your stated purpose (textstring, media picker, richtext area, etc).
You can find it here: http://our.umbraco.org/projects/backoffice-extensions/repeatable-custom-content I've used it a few times and it works really well in certain situations (e.g. where the items will not be shared across different pages of your site).
If you are sharing content components across multiple pages then #Digbyswift's solution is perfect.
I've always Digbyswifts method, but whilst looking for an alternate solution tonight I found this plugin, which is excellent for those situations where creating lots of widget nodes feels like overkill. It's licensed but the free older version is also available.
http://inaboxdesign.dk/blog/widget-builder-for-umbraco/