Active admin index page i want to hide the column based on some condition , but the below code is not wokrking.
index title: 'Comp-Off', download_links: false do
selectable_column
if proc{ !(current_user.has_role? :Employee) }
column("Name", sortable: :name) {|resource| resource.employee.name}
column("ID", sortable: :employee_id) {|resource| resource.employee.employee_id}
end
column :status
end
How to solve this problem.
It is achieved using the below code.
index title: 'Comp-Off', download_links: false do
selectable_column
column("Name", sortable: :name) {|resource| resource.employee.name} if !(current_user.has_role? :HRMS_Employee)
column("ID", sortable: :employee_id) {|resource| resource.employee.employee_id} if !(current_user.has_role? :HRMS_Employee)
end
column :status
end
Related
I have a Classic Report with a schedule for each day. There are no, one or multiple entries per day. It looks like this:
select
week_no,
apex_item.DISPLAY_AND_SAVE(p_idx => 8, p_value => plan_id) as ID,
apex_item.select_list(p_idx => 1, p_list_values => 'S1;1,S2;2,S3;3', p_attributes => 'size="3" multiple="multiple"', p_show_null => 'NO', p_show_extra => 'NO', p_item_id => plan_id || '_1', p_value => monday) as monday,
apex_item.select_list(p_idx => 2, p_list_values => 'S1;1,S2;2,S3;3', p_attributes => 'size="3" multiple="multiple"', p_show_null => 'NO', p_show_extra => 'NO', p_item_id => plan_id || '_2', p_value => tuesday) as tuesday,
apex_item.select_list(p_idx => 3, p_list_values => 'S1;1,S2;2,S3;3', p_attributes => 'size="3" multiple="multiple"', p_show_null => 'NO', p_show_extra => 'NO', p_item_id => plan_id || '_3', p_value => wednesday) as wednesday
from plan;
I can select multiple values and can save them to my table. It gets save like this "1,2". But I can't load the data rows with multiple selected values.
I can select multiple options with jQuery like this
$('#1000_1').val(["1","2"]);
but I don't know how to select the stored values from table with PL/SQL and then set the options selected with javascript.
I tried to load the data in an apex_item.text (id="1000_11" for monday etc.) and transfer the values in "After Refresh" DA to select list like that:
var sel_opt = $('#1000_11').val();
if (sel_opt == "1,2")
{
$('#1000_1').val(["1","2"]);
}
else if (sel_opt == "1,3")
{
$('#1000_1').val(["1","3"]);
}
else if (sel_opt == "2,3")
{
$('#1000_1').val(["2","3"]);
}
else if (sel_opt == "1,2,3")
{
$('#1000_1').val(["1","2","3"]);
}
It works, but maybe there's a smarter solution?
I create a sample Workspace on https://apex.oracle.com/pls/apex/f?p=4550:1:0:::::
Workspace: multi_select
Username: dev
Password: newYears3problems
I would create SELECT LIST page items for each selection menu and set their multi selection option to Yes.
then I'm guessing I'd need something like this somewhere at my page-process section
declare
array apex_application_global.vc_arr2;
begin
array := apex_util.string_to_table (:P30_SELECT_LIST_1);
apex_collection.create_or_truncate_collection ('P30_SELECT_LIST_1');
apex_collection.add_members ('P30_SELECT_LIST_1', array);
end;
to store more than one menu item at once.
then I'd add something like that to my query
and ITEM_1 in (
select c001
from apex_collections
where collection_name = 'P30_SELECT_LIST_1'
)
I probably didn't understand your question, but according to part that I get, it's straightforward sql query. no need for js.
I have a interactive grid with column email_to email_from which is editable grid, now i need to fetch the values which we are entering into columns in grid..my items are :p1_email_to,:p1_email_from..
below is my query which is calling the email procedure, here i need to pass the item values which i am entering on screen but the item values are showing null, the grid values are not returning to items.
Here the query for on submit button:
DECLARE
p_division EMAIL_ERRORS.ORG_ID%TYPE;
p_to EMAIL_ERRORS.TO_NAME%TYPE;
p_from EMAIL_ERRORS.FROM_NAME%TYPE;
p_message EMAIL_ERRORS.MESSAGE_TXT%TYPE;
p_user EMAIL_ERRORS.USER_NAME%TYPE;
p_sys_param_from EMAIL_ERRORS.SYS_PARAM_FROM_TXT%TYPE;
p_attach EMAIL_ERRORS.ATTACH_TXT%TYPE;
P_POST_OP EMAIL_ERRORS.POST_OP_TXT%TYPE;
P_POST_OP_PARAM1 EMAIL_ERRORS.POST_OP_PARAM1_TXT%TYPE;
P_POST_OP_PARAM2 EMAIL_ERRORS.POST_OP_PARAM2_TXT%TYPE;
P_POST_OP_PARAM3 EMAIL_ERRORS.POST_OP_PARAM3_TXT%TYPE;
BEGIN
CAB$MAIL.send (p_to => :P1_TO_NAME
,p_from => :P1_FROM_NAME
,p_message => :P1_MESSAGE_TXT
,p_user => :P1_USER_NAME
,p_sys_param_from => :P1_SYS_PARAM_FROM_TXT
,p_division => :P1_ORG_ID
,p_attach => :P1_ATTACH_TXT
,P_POST_OP => :P1_POST_OP_TXT
,P_POST_OP_PARAM1 => :P1_POST_OP_PARAM1_TXT
,P_POST_OP_PARAM2 => :P1_POST_OP_PARAM2_TXT
,P_POST_OP_PARAM3 => :P1_POST_OP_PARAM3_TXT);
END;
Is it possible to format both a row and column?
For instance I am doing a loop that uses the index to style rows different colors based on if it is even or odd but I also want to style a column that has percentages to use the :num_fmt => 9
Also why when I am presenting the number as something like 1.2 does that end up changing it to 120%, all I want is for that data to look like 1.2%
#people.each_with_index | person, index |
if index.odd?
sheet.add_row [person['name'], person['rate']]
else
sheet.add_row [person['name'],person['rate']], :style => even_row
end
end
(my even row style is set at the top of my code)
I figured this out, you need to do set your style using something like
percent = s.add_style(:num_fmt => 9)
even_row_percent = s.add_style(:bg_color => 'blue', :fg_color => 'white', :b => false, :format_code => 0%)
even_row = s.add_style(:bg_color => 'blue', :fg_color =>'white', :b => false)
then in your loop just use an each with index and then use a if statement like
if index.odd
sheet.add_row[
item[:value],
item[:value_percent]], :style => [nil, percent]
else
sheet.add_row[
item[:value],
item[:value]], :style => [even_row, even_row_percent]
end
I have states stored in my database with numeric values... as in:
["Alabama", "1"],
["Alaska", "2"],
["Arizona", "3"],
["Arkansas", "4"],
ETC....
When I want to display "Alaska" because the number 2 is being output, how do I do this?
I tried something like this in my controller:
def show
#contact = Contact.find(params[:id])
#state = contact.location_state
end
And have the following in my "show.html.erb":
<%= #state %>
In the case you have to deal with an array of arrays you can get the specific number in the second position of every array accessing to it, with the index [1]:
places = [
["Alabama", "1"],
["Alaska", "2"],
["Arizona", "3"],
["Arkansas", "4"]
]
p places[0][1]
# => "1"
If you have a single one, you don't need to specify the precise array inside the main array of arrays, just with:
place = ["Alabama", "1"]
p place[1]
# => "1"
If you're sending the #state object and want to work with it in your views you can iterate and show the second value corresponding to the number you want to show:
places.each{|place| p place[1]}
# => "1"
# => "2"
# => "3"
# => "4"
Say I have a model like so.
Photo
has_many :appearances
def people
appearances.map{|p| p.person.name}
end
end
Person
has_many :appearances
end
Appearance
belongs_to :person
belongs_to :photo
end
When I try to eager load the photos I see an advanced query like active record is doing the appropriate joins
Photo.eager_load({:appearances => :person}).find(ids)
However when I try to manually map the response like so
Photo.eager_load({:appearances => :person}).find(ids).map{|p| p.people}
I see that activerecord is doing an n+1 query, selecting all appearances for each photo in the set
SQL (0.6ms) SELECT `photos`.`id` AS t0_r0, `photos`.`time_created` AS t0_r1, `photos`.`sub_location` AS t0_r2, `photos`.`state` AS t0_r3, `photos`.`author` AS t0_r4, `photos`.`copyright_notice` AS t0_r5, `photos`.`country_primary_location_name` AS t0_r6, `photos`.`date_created` AS t0_r7, `photos`.`city` AS t0_r8, `photos`.`caption` AS t0_r9, `photos`.`by_line` AS t0_r10, `photos`.`abstract` AS t0_r11, `photos`.`name` AS t0_r12, `photos`.`province` AS t0_r13, `photos`.`visible` AS t0_r14, `photos`.`filename` AS t0_r15, `photos`.`folder` AS t0_r16, `photos`.`image_file_name` AS t0_r17, `photos`.`image_content_type` AS t0_r18, `photos`.`image_file_size` AS t0_r19, `photos`.`image_updated_at` AS t0_r20, `photos`.`image` AS t0_r21, `photos`.`position` AS t0_r22, `photos`.`event_id` AS t0_r23, `photos`.`created_at` AS t0_r24, `photos`.`updated_at` AS t0_r25, `photos`.`price_mod` AS t0_r26, `photos`.`never_discount` AS t0_r27, `photos`.`visible_and_public` AS t0_r28, `photos`.`make_public_on` AS t0_r29, `photos`.`is_shoppable` AS t0_r30, `photos`.`is_visible` AS t0_r31, `photos`.`keywords` AS t0_r32, `photos`.`tag_names` AS t0_r33, `appearances`.`id` AS t1_r0, `appearances`.`photo_id` AS t1_r1, `appearances`.`person_id` AS t1_r2, `appearances`.`position` AS t1_r3, `appearances`.`created_at` AS t1_r4, `appearances`.`updated_at` AS t1_r5, `appearances`.`visible_and_public` AS t1_r6, `people`.`id` AS t2_r0, `people`.`name` AS t2_r1, `people`.`title` AS t2_r2, `people`.`created_at` AS t2_r3, `people`.`updated_at` AS t2_r4, `people`.`slug` AS t2_r5, `people`.`has_one_photo` AS t2_r6, `people`.`appearance_count` AS t2_r7 FROM `photos` LEFT OUTER JOIN `appearances` ON `appearances`.`photo_id` = `photos`.`id` LEFT OUTER JOIN `people` ON `people`.`id` = `appearances`.`person_id` WHERE `photos`.`id` = 1 AND `photos`.`id` IN (1)
Person Load (0.4ms) SELECT `people`.* FROM `people` WHERE `people`.`id` = 2 LIMIT 1
Person Load (0.4ms) SELECT `people`.* FROM `people` WHERE `people`.`id` = 3 LIMIT 1
Person Load (0.4ms) SELECT `people`.* FROM `people` WHERE `people`.`id` = 4 LIMIT 1
Completed 200 OK in 483ms (Views: 1.2ms | ActiveRecord: 22.9ms)