Oracle APEX - how to refresh Interactive Grid after save process executes - oracle-apex

I have an interactive grid that is updated via custom javascript when the user clicks the custom toolbar button. Then the result is saves using grid's save button via a process. After the process runs, the old data (present before the update) gets displayed until the grid is refreshed manually. My question is what is the best way to kick off the grid refresh manually after update process finishes?

I came across the same problem of refreshing the grid after click on SAVE.This is how it can be resolved.
Follow the steps below :
Create Dynamic Action
When → Custom
Custom Event → interactivegridsave (Do not change this)
Selection Type → Region
Region → your IG region
Now create a true action for the Dynamic Action.
Action → Refresh
Selection Type → Region
Region → your IG region
Please make sure the event name interactivegridsave is spelled correctly as the interactivegridsave fires after the execution of SAVE process.

solution by #Prashant_417 work successfully with me, but instead of refresh region i submit the page
0
I came across the same problem of refreshing the grid after click on SAVE.This is how it can be resolved.
Follow the steps below :
Create Dynamic Action
When → Custom
Custom Event → interactivegridsave (Do not change this)
Selection Type → Region
Region → your IG region
Now create a true action for the Dynamic Action.
Action → submit page
Please make sure the event name interactivegridsave is spelled correctly as the interactivegridsave fires after the execution of SAVE process.
thanks u

Try this:
1- Create an item, for example, P1_FLAG.
2- Create a dynamic action.
Name: refresh_ig
Event: Change
Selection Type: Item(s)
Item(s): P1_FLAG
In Client-side Condition:
Type: Item = Value
Value: 1
3- Create TRUE Action.
Action: Refresh
Affected Elements
Selection Type: Region
Region: Your interactive grid region.
4- Create TRUE Action.
Action: Set Value
Set Type: PL/SQL Function Body
PL/SQL Function Body: Return null;
Items to Submit: P1_FLAG
Selection type: Item(s)
Item(s): P1_FLAG
Finally, in your process
:P1_FLAG := 1;

Related

How to create a Lambda function for AWS IoT Button

I've read though a couple of tutorials, and watched several videos about this topic, but I'm not able to reproduce the steps shown there.
My AWS IoT Button is configurd correctly and works as it should. I then go to the Lambda Management console, and create a new Lambda function from one of the templates. The screen that appears now is different from all the tutorials and videos. Anyway, I have to choose a trigger and select the IoT Button there. The GUI then tells me to configure that trigger. I then enter the serial number of the Button, and don't touch the certificate options, because I already have keys and certificates on my IoT Button. After I made sure that "Enable Trigger" is selected, and click on the "Add" button. Now I'm getting a red box inside the trigger configuration screen saying:
"Empty list of actions is not allowed. At least one action needs to be defined. (Service: AWSIot; Status Code: 400; Error Code: InvalidRequestException; Request ID: 41c78c96-00fe-11e8-a48a-61538c57d315)"
I'm stuck at this point, because I never can assign any Trigger to my function.
It took a bit of mucking around but I think I've figured out how to get around this.
The error is strange, because of course you're trying to create an action. It seems like it's a bug.
Fortunately, you can create it around the other way:
Visit the AWS IoT console
Go to the Act option in the sidebar menu
Click Create to create a new rule
Give a name, and description
For the SQL rule, build a rule that looks like SELECT * FROM 'iotbutton/+' (i.e. enter * for Attribute, etc.)
Add your action - your Lambda function :)
Add an error action too if you wish
Click Create Rule
Press your button and confirm that your Lambda function ran!
I'm assuming you could put your button's DSN in place of the + in the select statement if you have more than one button.

Unable to use "Create new XXX"

When I try to create a region, either by clicking the + next to Regions, or by right-clicking on Regions>Content Body>"Create Region", APEX just creates a region with static content. It does NOT present the create region wizard.
Why is this?
A basic question, hopefully someone can help me here.
Thanks in advance.
This is Apex default region then you have to select what type of region you want. but if you want to create a specific region directly go to Layout ---> region ---> and choose the type of region you want.
enter image description here
for form region click to + button on the top of your page then chooose your type of form region you want
enter image description here

Refresh Sitecore index to include CD's

I've written some code to refresh an index when an item is programmatically added to Sitecore. Now as the live system is made up of 1 CM and 2 CD Servers I need my code to also trigger the indexing to be refreshed on the CD Servers (unfortunately my dev machine is just a single box so I can't test this fully). I've looked online but can't find anything about this when triggering a re-index programmatically.
So the question is do I need to write code for this or does Sitecore do this by default and if I do need to write code, does anyone have ideas how I go about this. My current code is below.
ISearchIndex index = ContentSearchManager.GetIndex("GeorgeDrexler_web_index");
Sitecore.Data.Database database = Sitecore.Configuration.Factory.GetDatabase("web");
Item item = database.GetItem("/sitecore/content/GeorgeDrexler/Global/Applications");
index.Refresh(new SitecoreIndexableItem(item));
My config for the index has the remotebuild strategy enabled
<strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/remoteRebuild" />
As #Hishaam Namooya pointed out in his comment, publishing from master to web should trigger the web index updates out of the box, unless you've disabled something in the configurations.
Note that items won't publish unless they are in a final workflow state, so if you want a completely automated process that creates the item, updates the local index, and then immediately updates the web index, you will also need to update the workflow state to your final approved state and then trigger a publish of the item.

Sitecore workbox "Approve all" configure security

In my Sitecore workbox admin can perform "Approve", "Reject" actions from workbox.
By default workbox displays "Approve All", "Reject All" buttons.
Is there a way to control access to these "All" buttons for certain roles by configuring security?
There is no easy way, because these all buttons are rendered always together with selected buttons. The only way I know is to override class that renderes these buttons.
You need to find \sitecore\shell\Applications\Workbox\Workbox.xml file and change base class in this line to your own class:
<CodeBeside Type="Sitecore.Shell.Applications.Workbox.WorkboxForm,Sitecore.Client"/>
I created one, that always hides all buttons:
public class WorkboxForm : Sitecore.Shell.Applications.Workbox.WorkboxForm
{
protected override void DisplayState(global::Sitecore.Workflows.IWorkflow workflow, global::Sitecore.Workflows.WorkflowState state, global::Sitecore.Data.DataUri[] items, System.Web.UI.Control control, int offset, int pageSize)
{
base.DisplayState(workflow, state, items, control, offset, pageSize);
if (control.Controls.Count > 0)
{
var borderControls = control.Controls[control.Controls.Count - 1].Controls;
for (var i = 0; i < borderControls.Count; i++)
{
if (i % 2 == 1)
{
borderControls[i].Visible = false;
}
}
}
}
}
= REST OF THE ANSWER TELLS HOW TO MANAGE ACCESS TO WORKFLOW STATE BUTTONS =
You can define access to these buttons in Security Editor.
First login to Sitecore Desktop as an admin, go to Start->Security tools->Security editor. Select role and click Columns button:
Make sure this checkboxes are checked:
Then in Security Editor go to /sitecore/system/workflows and configure access rights for your workflow:
According to Workflow Reference:
3.4 Workflow and Security
Sitecore defines three workflow specific access rights.
Workflow State Delete — controls whether or not a user can delete items which are currently associated with a specific workflow state
Workflow State Write — controls whether or not a user can update items which are currently associated with a specific workflow state.
Workflow Command Execute — controls whether or not a user is shown specific workflow commands.

Is there a way to view logs from three different remote nodes on one tab on Chainsaw

Is there a way to view logs from three different remote nodes on one tab? Right now I get three tabs open for three nodes.
Here is my log4j config for the same app deployed on three different linux boxes
log4j.appender.HUB=org.apache.log4j.net.SocketHubAppender
log4j.appender.HUB.port=39867
log4j.appender.HUB.LocationInfo=true
log4j.appender.HUB.Threshold=INFO
log4j.appender.HUB.application=remotehost
Yes.
You can create a new tab from existing events via the 'view, create tab from expression' menu item - it will combine events matching the expression into a new tab. As new events which match the expression arrive, they will also be added to the new tab.
This isn't persistent - restart Chainsaw and you have to go through that process again.
If you want to permanently change things, you can modify the 'tab name/event routing expression' under Chainsaw preferences. As events come in, the expression in the 'event routing expression' box is resolved with the values for the current event. If a tab exists with that tab name, the events are added to that tab. If no tab exists, a new tab is created.
An example expression you could use in the 'view, create tab from expression' expression box (assuming the events you are interested in all have an 'application' column with 'remoteHost' as the value in that column):
PROP.application=remoteHost
This second option just builds a string - isn't really an expression like the search and filter expression syntax...
An example tab name/event routing expression you could use to get all events with 'remoteHost' as the application on a tab called 'remoteHost':
PROP.application
By the way, I would suggest checking out the latest developer snapshot of Chainsaw, available here:
http://people.apache.org/~sdeboy