rails_attend 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/README.md +22 -0
- data/Rakefile +32 -0
- data/app/controllers/attend/admin/absence_stats_controller.rb +60 -0
- data/app/controllers/attend/admin/absences_controller.rb +77 -0
- data/app/controllers/attend/admin/attendance_logs_controller.rb +103 -0
- data/app/controllers/attend/admin/attendance_settings_controller.rb +86 -0
- data/app/controllers/attend/admin/attendance_stats_controller.rb +58 -0
- data/app/controllers/attend/admin/attendances_controller.rb +57 -0
- data/app/controllers/attend/admin/base_controller.rb +4 -0
- data/app/controllers/attend/admin/extra_days_controller.rb +63 -0
- data/app/controllers/attend/admin/financial_months_controller.rb +69 -0
- data/app/controllers/attend/admin/overtimes_controller.rb +59 -0
- data/app/controllers/attend/me/absences_controller.rb +71 -0
- data/app/controllers/attend/me/attendance_logs_controller.rb +74 -0
- data/app/controllers/attend/me/attendance_settings_controller.rb +52 -0
- data/app/controllers/attend/me/attendance_stats_controller.rb +27 -0
- data/app/controllers/attend/me/attendances_controller.rb +43 -0
- data/app/controllers/attend/me/base_controller.rb +4 -0
- data/app/controllers/attend/me/calendars_controller.rb +33 -0
- data/app/controllers/attend/me/overtimes_controller.rb +65 -0
- data/app/javascript/packs/controllers/attend/admin/attendance_logs/index.js +1 -0
- data/app/javascript/packs/controllers/attend/admin/attendance_logs/my.js +14 -0
- data/app/javascript/packs/controllers/attend/admin/attendance_settings/create.js +1 -0
- data/app/javascript/packs/controllers/attend/admin/attendance_settings/index.js +1 -0
- data/app/javascript/packs/controllers/attend/admin/attendance_settings/my.js +13 -0
- data/app/javascript/packs/controllers/attend/admin/attendance_settings/new.js +11 -0
- data/app/javascript/packs/controllers/attend/me/absences/new.js +16 -0
- data/app/javascript/packs/controllers/attend/me/absences/update.js +3 -0
- data/app/javascript/packs/controllers/attend/me/attendance_settings/create.js +1 -0
- data/app/javascript/packs/controllers/attend/me/attendance_settings/edit.js +1 -0
- data/app/javascript/packs/controllers/attend/me/attendance_settings/new.js +2 -0
- data/app/javascript/packs/controllers/attend/me/calendars/show.js +48 -0
- data/app/jobs/attendance_job.rb +14 -0
- data/app/models/absence/attend/annual_leave.rb +5 -0
- data/app/models/absence/attend/bereavement_leave.rb +5 -0
- data/app/models/absence/attend/business_trip.rb +5 -0
- data/app/models/absence/attend/children_day_leave.rb +5 -0
- data/app/models/absence/attend/compensatory_leave.rb +5 -0
- data/app/models/absence/attend/marriage_leave.rb +4 -0
- data/app/models/absence/attend/maternity_leave.rb +5 -0
- data/app/models/absence/attend/parental_leave.rb +5 -0
- data/app/models/absence/attend/personal_leave.rb +5 -0
- data/app/models/absence/attend/prenatal_leave.rb +4 -0
- data/app/models/absence/attend/sick_leave.rb +5 -0
- data/app/models/absence/attend/vacation_leave.rb +5 -0
- data/app/models/absence/attend/welfare_leave.rb +5 -0
- data/app/models/attend/absence.rb +5 -0
- data/app/models/attend/absence_stat.rb +5 -0
- data/app/models/attend/application_record.rb +5 -0
- data/app/models/attend/attendance.rb +5 -0
- data/app/models/attend/attendance_log.rb +5 -0
- data/app/models/attend/attendance_setting.rb +5 -0
- data/app/models/attend/attendance_stat.rb +5 -0
- data/app/models/attend/ext/member.rb +33 -0
- data/app/models/attend/extra_day.rb +5 -0
- data/app/models/attend/financial_month.rb +5 -0
- data/app/models/attend/model/absence/business_trip.rb +10 -0
- data/app/models/attend/model/absence/compensatory_leave.rb +5 -0
- data/app/models/attend/model/absence/personal_leave.rb +5 -0
- data/app/models/attend/model/absence/welfare_leave/annual_leave.rb +16 -0
- data/app/models/attend/model/absence/welfare_leave/vacation_leave.rb +16 -0
- data/app/models/attend/model/absence/welfare_leave.rb +5 -0
- data/app/models/attend/model/absence.rb +208 -0
- data/app/models/attend/model/absence_stat.rb +17 -0
- data/app/models/attend/model/attendance.rb +314 -0
- data/app/models/attend/model/attendance_log.rb +165 -0
- data/app/models/attend/model/attendance_setting.rb +61 -0
- data/app/models/attend/model/attendance_stat.rb +104 -0
- data/app/models/attend/model/extra_day.rb +21 -0
- data/app/models/attend/model/financial_month.rb +114 -0
- data/app/models/attend/model/overtime.rb +93 -0
- data/app/models/attend/overtime.rb +5 -0
- data/app/models/attend.rb +11 -0
- data/app/models/concerns/absent.rb +103 -0
- data/app/views/admin/_attend_nav.html.erb +15 -0
- data/app/views/attend/admin/absence_stats/_filter_form.html.erb +9 -0
- data/app/views/attend/admin/absence_stats/_form.html.erb +12 -0
- data/app/views/attend/admin/absence_stats/_index_tbody.html.erb +3 -0
- data/app/views/attend/admin/absence_stats/_index_thead.html.erb +4 -0
- data/app/views/attend/admin/absence_stats/index.html.erb +5 -0
- data/app/views/attend/admin/absences/_absence.html.erb +38 -0
- data/app/views/attend/admin/absences/_edit_form.html.erb +3 -0
- data/app/views/attend/admin/absences/_filter_form.html.erb +8 -0
- data/app/views/attend/admin/absences/_form.html.erb +5 -0
- data/app/views/attend/admin/absences/_index_tbody.html.erb +18 -0
- data/app/views/attend/admin/absences/_index_thead.html.erb +10 -0
- data/app/views/attend/admin/absences/_new_form.html.erb +3 -0
- data/app/views/attend/admin/absences/_show.html.erb +11 -0
- data/app/views/attend/admin/absences/index.html.erb +5 -0
- data/app/views/attend/admin/absences/my.html.erb +5 -0
- data/app/views/attend/admin/attendance_logs/_edit_form.html.erb +5 -0
- data/app/views/attend/admin/attendance_logs/_filter_form.html.erb +11 -0
- data/app/views/attend/admin/attendance_logs/_form.html.erb +6 -0
- data/app/views/attend/admin/attendance_logs/_index_thead.html.erb +19 -0
- data/app/views/attend/admin/attendance_logs/_list.html.erb +61 -0
- data/app/views/attend/admin/attendance_logs/_new_form.html.erb +3 -0
- data/app/views/attend/admin/attendance_logs/index.html.erb +5 -0
- data/app/views/attend/admin/attendance_logs/my.html.erb +5 -0
- data/app/views/attend/admin/attendance_settings/_button.html.erb +4 -0
- data/app/views/attend/admin/attendance_settings/_filter_form.html.erb +11 -0
- data/app/views/attend/admin/attendance_settings/_form.html.erb +7 -0
- data/app/views/attend/admin/attendance_settings/_index_tbody.html.erb +15 -0
- data/app/views/attend/admin/attendance_settings/_index_thead.html.erb +10 -0
- data/app/views/attend/admin/attendance_settings/_new_form.html.erb +8 -0
- data/app/views/attend/admin/attendance_settings/_show_table.html.erb +12 -0
- data/app/views/attend/admin/attendance_settings/index.html.erb +5 -0
- data/app/views/attend/admin/attendance_settings/my.html.erb +5 -0
- data/app/views/attend/admin/attendance_stats/_filter_form.html.erb +10 -0
- data/app/views/attend/admin/attendance_stats/_form.html.erb +6 -0
- data/app/views/attend/admin/attendance_stats/_index_thead.html.erb +10 -0
- data/app/views/attend/admin/attendance_stats/index.html.erb +44 -0
- data/app/views/attend/admin/attendances/_button.html.erb +2 -0
- data/app/views/attend/admin/attendances/_filter_form.html.erb +10 -0
- data/app/views/attend/admin/attendances/_form.html.erb +23 -0
- data/app/views/attend/admin/attendances/_index_tbody.html.erb +61 -0
- data/app/views/attend/admin/attendances/_index_thead.html.erb +22 -0
- data/app/views/attend/admin/attendances/_new_form.html.erb +4 -0
- data/app/views/attend/admin/attendances/index.html.erb +7 -0
- data/app/views/attend/admin/base/_financial_month_menu.html.erb +10 -0
- data/app/views/attend/admin/base/_nav.html.erb +3 -0
- data/app/views/attend/admin/base/_nav_attendances.html.erb +7 -0
- data/app/views/attend/admin/extra_days/_breadcrumb.html.erb +0 -0
- data/app/views/attend/admin/extra_days/_edit_form.html.erb +4 -0
- data/app/views/attend/admin/extra_days/_filter_form.html.erb +5 -0
- data/app/views/attend/admin/extra_days/_form.html.erb +4 -0
- data/app/views/attend/admin/extra_days/_index_tbody.html.erb +3 -0
- data/app/views/attend/admin/extra_days/_index_thead.html.erb +4 -0
- data/app/views/attend/admin/extra_days/_new_form.html.erb +4 -0
- data/app/views/attend/admin/extra_days/index.html.erb +7 -0
- data/app/views/attend/admin/financial_months/_breadcrumb.html.erb +0 -0
- data/app/views/attend/admin/financial_months/_edit_form.html.erb +4 -0
- data/app/views/attend/admin/financial_months/_filter_form.html.erb +9 -0
- data/app/views/attend/admin/financial_months/_form.html.erb +4 -0
- data/app/views/attend/admin/financial_months/_index_tbody.html.erb +9 -0
- data/app/views/attend/admin/financial_months/_index_thead.html.erb +6 -0
- data/app/views/attend/admin/financial_months/_new_form.html.erb +4 -0
- data/app/views/attend/admin/financial_months/events.json.jbuilder +9 -0
- data/app/views/attend/admin/financial_months/index.html.erb +7 -0
- data/app/views/attend/admin/financial_months/index.js +60 -0
- data/app/views/attend/admin/financial_months/show.html.erb +10 -0
- data/app/views/attend/admin/overtimes/_button.html.erb +0 -0
- data/app/views/attend/admin/overtimes/_edit_form.html.erb +4 -0
- data/app/views/attend/admin/overtimes/_filter_form.html.erb +8 -0
- data/app/views/attend/admin/overtimes/_form.html.erb +3 -0
- data/app/views/attend/admin/overtimes/_index_tbody.html.erb +22 -0
- data/app/views/attend/admin/overtimes/_index_thead.html.erb +9 -0
- data/app/views/attend/admin/overtimes/_new_form.html.erb +4 -0
- data/app/views/attend/admin/overtimes/index.html.erb +5 -0
- data/app/views/attend/admin/overtimes/my.html.erb +8 -0
- data/app/views/attend/me/absences/_absence.html.erb +34 -0
- data/app/views/attend/me/absences/_edit_form.html.erb +3 -0
- data/app/views/attend/me/absences/_filter_form.html.erb +11 -0
- data/app/views/attend/me/absences/_form.html.erb +33 -0
- data/app/views/attend/me/absences/_index_tbody.html.erb +24 -0
- data/app/views/attend/me/absences/_index_thead.html.erb +8 -0
- data/app/views/attend/me/absences/_new_form.html.erb +3 -0
- data/app/views/attend/me/absences/_redeeming_form.html.erb +5 -0
- data/app/views/attend/me/absences/_show.html.erb +11 -0
- data/app/views/attend/me/absences/dashboard.html.erb +44 -0
- data/app/views/attend/me/absences/index.html.erb +7 -0
- data/app/views/attend/me/absences/redeeming.js.erb +6 -0
- data/app/views/attend/me/absences/show.html.erb +1 -0
- data/app/views/attend/me/attendance_logs/_edit_form.html.erb +4 -0
- data/app/views/attend/me/attendance_logs/_filter_form.html.erb +11 -0
- data/app/views/attend/me/attendance_logs/_form.html.erb +11 -0
- data/app/views/attend/me/attendance_logs/_index_thead.html.erb +9 -0
- data/app/views/attend/me/attendance_logs/_new_form.html.erb +4 -0
- data/app/views/attend/me/attendance_logs/index.html.erb +42 -0
- data/app/views/attend/me/attendance_settings/_edit_form.html.erb +6 -0
- data/app/views/attend/me/attendance_settings/_index_tbody.html.erb +15 -0
- data/app/views/attend/me/attendance_settings/_index_thead.html.erb +12 -0
- data/app/views/attend/me/attendance_settings/_new_form.html.erb +8 -0
- data/app/views/attend/me/attendance_settings/index.html.erb +5 -0
- data/app/views/attend/me/attendance_stats/_form.html.erb +6 -0
- data/app/views/attend/me/attendance_stats/_search_form.html.erb +5 -0
- data/app/views/attend/me/attendance_stats/edit.html.erb +9 -0
- data/app/views/attend/me/attendance_stats/index.html.erb +49 -0
- data/app/views/attend/me/attendance_stats/new.html.erb +9 -0
- data/app/views/attend/me/attendance_stats/show.html.erb +28 -0
- data/app/views/attend/me/attendances/_button.html.erb +3 -0
- data/app/views/attend/me/attendances/_filter_form.html.erb +9 -0
- data/app/views/attend/me/attendances/_form.html.erb +22 -0
- data/app/views/attend/me/attendances/_index_tbody.html.erb +49 -0
- data/app/views/attend/me/attendances/_index_thead.html.erb +19 -0
- data/app/views/attend/me/attendances/index.html.erb +7 -0
- data/app/views/attend/me/base/_menu.html.erb +8 -0
- data/app/views/attend/me/base/_nav_absences.html.erb +9 -0
- data/app/views/attend/me/base/_nav_attendances.html.erb +10 -0
- data/app/views/attend/me/calendars/events.json.jbuilder +19 -0
- data/app/views/attend/me/calendars/show.html.erb +12 -0
- data/app/views/attend/me/overtimes/_edit_form.html.erb +4 -0
- data/app/views/attend/me/overtimes/_filter_form.html.erb +9 -0
- data/app/views/attend/me/overtimes/_form.html.erb +16 -0
- data/app/views/attend/me/overtimes/_index_tbody.html.erb +23 -0
- data/app/views/attend/me/overtimes/_index_thead.html.erb +6 -0
- data/app/views/attend/me/overtimes/_new_form.html.erb +4 -0
- data/app/views/attend/me/overtimes/index.html.erb +7 -0
- data/app/views/me/_attend_nav.html.erb +12 -0
- data/app/views/me/_nav_attendance_settings.html.erb +8 -0
- data/config/locales/en.attributes.yml +34 -0
- data/config/locales/en.controller.yml +18 -0
- data/config/locales/en.enum.yml +43 -0
- data/config/locales/en.notify.yml +38 -0
- data/config/locales/zh.attributes.yml +34 -0
- data/config/locales/zh.controller.yml +40 -0
- data/config/locales/zh.enum.yml +43 -0
- data/config/locales/zh.notify.yml +38 -0
- data/config/routes.rb +70 -0
- data/lib/rails_attend/config.rb +11 -0
- data/lib/rails_attend/engine.rb +25 -0
- data/lib/rails_attend.rb +2 -0
- metadata +269 -0
@@ -0,0 +1,6 @@
|
|
1
|
+
<% form_object = default_form_object(@absence, can: { wrap_id: true }) %>
|
2
|
+
|
3
|
+
var template = '<%= j(render partial: 'redeeming_form', locals: { f: form_object }) %>'
|
4
|
+
|
5
|
+
$('#absence_redeeming_days_wrapper').replaceWith(template);
|
6
|
+
$('#absence_redeeming_days').dropdown();
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'absence' %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%= render 'error_messages', target: f.object %>
|
2
|
+
<div class="field is-horizontal">
|
3
|
+
<%= f.label :record_at %>
|
4
|
+
<div class="four wide field">
|
5
|
+
<%= f.date_field 'record_at(date)', wrap: { input: false, all: false }, label: false %>
|
6
|
+
</div>
|
7
|
+
<div class="three wide field">
|
8
|
+
<%= f.time_select :record_at, start_hour: 8, end_hour: 19 %>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
<%= f.text_area :note %>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<th><%= AttendanceLog.human_attribute_name(:id) %></th>
|
2
|
+
<th><%= AttendanceLog.human_attribute_name(:record_at) %></th>
|
3
|
+
<th><%= AttendanceLog.human_attribute_name(:kind) %></th>
|
4
|
+
<th>
|
5
|
+
<p><%= AttendanceLog.human_attribute_name(:source) %></p>
|
6
|
+
<p><%= AttendanceLog.human_attribute_name(:state) %></p>
|
7
|
+
</th>
|
8
|
+
<th><%= AttendanceLog.human_attribute_name(:note) %></th>
|
9
|
+
<th></th>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<%= render 'nav_attendances' %>
|
2
|
+
<%= render 'filter_form' %>
|
3
|
+
|
4
|
+
<table class="table is-hoverable is-fullwidth">
|
5
|
+
<thead>
|
6
|
+
<tr>
|
7
|
+
|
8
|
+
</tr>
|
9
|
+
</thead>
|
10
|
+
<tbody>
|
11
|
+
<% @attendance_logs.each do |attendance_log| %>
|
12
|
+
<tr>
|
13
|
+
<td><%= attendance_log.id %></td>
|
14
|
+
<td>
|
15
|
+
<% if attendance_log.record_at %>
|
16
|
+
<time data-controller="time" data-format="YYYY-MM-DD HH:mm"><%= attendance_log.record_at.to_s(:rfc822) %></time>
|
17
|
+
<% else %>
|
18
|
+
<%= attendance_log.record_at_str %>
|
19
|
+
<% end %>
|
20
|
+
</td>
|
21
|
+
<td><%= attendance_log.kind_i18n %></td>
|
22
|
+
<td>
|
23
|
+
<p><%= attendance_log.source_i18n %></p>
|
24
|
+
<p><%= attendance_log.state_i18n %></p>
|
25
|
+
</td>
|
26
|
+
<td><%= attendance_log.note %></td>
|
27
|
+
<td class="ui labels">
|
28
|
+
<% if attendance_log.editable? %>
|
29
|
+
<%= link_to edit_me_attendance_log_path(attendance_log), class: 'ui pink mini icon button' do %>
|
30
|
+
<i class="fas fa-pencil-alt"></i>
|
31
|
+
<% end %>
|
32
|
+
<%= link_to me_attendance_log_path(attendance_log), method: :delete, data: { confirm: t('.confirm') }, class: 'ui red mini icon button' do %>
|
33
|
+
<i class="times icon"></i>
|
34
|
+
<% end %>
|
35
|
+
<% end %>
|
36
|
+
</td>
|
37
|
+
</tr>
|
38
|
+
<% end %>
|
39
|
+
</tbody>
|
40
|
+
</table>
|
41
|
+
|
42
|
+
<%= paginate @attendance_logs %>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<%= form_with model: @attendance_setting, url: { action: 'update' } do |f| %>
|
2
|
+
<%= render 'error_messages', target: @attendance_setting %>
|
3
|
+
<%= f.select :on_time, options_for_select(AttendanceSetting.time_options, @attendance_setting.on_time) %>
|
4
|
+
<%= f.text_area :note %>
|
5
|
+
<%= f.submit %>
|
6
|
+
<% end %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<td>
|
2
|
+
<span>Next Financial Months</span>
|
3
|
+
</td>
|
4
|
+
<td>
|
5
|
+
<p><%= model.effect_on %></p>
|
6
|
+
<p><%= model.expire_on %></p>
|
7
|
+
</td>
|
8
|
+
<td>
|
9
|
+
<p><%= model.on_time %></p>
|
10
|
+
<p><%= model.off_time %></p>
|
11
|
+
</td>
|
12
|
+
<td>
|
13
|
+
<span><%= model.state_i18n %></span>
|
14
|
+
</td>
|
15
|
+
<td><%= model.note %></td>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<th></th>
|
2
|
+
<th>
|
3
|
+
<p><%= Attend::AttendanceSetting.human_attribute_name(:effect_on) %></p>
|
4
|
+
<p><%= Attend::AttendanceSetting.human_attribute_name(:expire_on) %></p>
|
5
|
+
</th>
|
6
|
+
<th>
|
7
|
+
<p><%= Attend::AttendanceSetting.human_attribute_name(:on_time) %></p>
|
8
|
+
<p><%= Attend::AttendanceSetting.human_attribute_name(:off_time) %></p>
|
9
|
+
</th>
|
10
|
+
<th><%= Attend::AttendanceSetting.human_attribute_name(:state) %></th>
|
11
|
+
<th><%= Attend::AttendanceSetting.human_attribute_name(:note) %></th>
|
12
|
+
<th></th>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%= form_with model: @attendance_setting, url: { action: 'create' } do |f| %>
|
2
|
+
<%= render 'error_messages', target: @attendance_setting %>
|
3
|
+
<%= f.date_field :effect_on %>
|
4
|
+
<%= f.date_field :expire_on %>
|
5
|
+
<%= f.select :on_time, options_for_select(Attend::AttendanceSetting.time_options, @attendance_setting.on_time) %>
|
6
|
+
<%= f.text_area :note %>
|
7
|
+
<%= f.submit %>
|
8
|
+
<% end %>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<%= form_with model: @attendance_stat, url: admin_attendance_stats_path, local: true do |f| %>
|
2
|
+
<%= render 'error_messages', target: @attendance_stat %>
|
3
|
+
<%= f.text_field :member_id %>
|
4
|
+
<%= f.collection_select :financial_month_id, FinancialMonth.all, :id, :end_date %>
|
5
|
+
<%= f.submit %>
|
6
|
+
<% end %>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<%= render 'nav_attendances' %>
|
2
|
+
|
3
|
+
<div class="ui attached segment">
|
4
|
+
<%#= render 'search_form' %>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<table class="table is-hoverable is-fullwidth">
|
8
|
+
<thead>
|
9
|
+
<tr>
|
10
|
+
<th><%= AttendanceStat.human_attribute_name(:id) %></th>
|
11
|
+
<th><%= AttendanceStat.human_attribute_name(:financial_month) %></th>
|
12
|
+
<th><%= AttendanceStat.human_attribute_name(:allowance_days) %></th>
|
13
|
+
<th><%= AttendanceStat.human_attribute_name(:late_days) %></th>
|
14
|
+
<th><%= AttendanceStat.human_attribute_name(:cost_absence_hours) %></th>
|
15
|
+
<th>
|
16
|
+
<p><%= AttendanceStat.human_attribute_name(:absence_redeeming_hours) %></p>
|
17
|
+
<p><%= AttendanceStat.human_attribute_name(:holiday_redeeming_hours) %></p>
|
18
|
+
</th>
|
19
|
+
<th>Actions</th>
|
20
|
+
</tr>
|
21
|
+
</thead>
|
22
|
+
<tbody>
|
23
|
+
<% @attendance_stats.each do |attendance_stat| %>
|
24
|
+
<tr>
|
25
|
+
<td><%= attendance_stat.id %></td>
|
26
|
+
<td>
|
27
|
+
<p><%= attendance_stat.financial_month.begin_date %></p>
|
28
|
+
<p><%= attendance_stat.financial_month.end_date %></p>
|
29
|
+
</td>
|
30
|
+
<td><%= attendance_stat.allowance_days %></td>
|
31
|
+
<td><%= attendance_stat.late_days %></td>
|
32
|
+
<td>
|
33
|
+
<%= attendance_stat.cost_absence_hours %>
|
34
|
+
</td>
|
35
|
+
<td>
|
36
|
+
<p><%= attendance_stat.absence_redeeming_hours %></p>
|
37
|
+
<p><%= attendance_stat.holiday_redeeming_hours %></p>
|
38
|
+
</td>
|
39
|
+
<td class="ui labels">
|
40
|
+
<%= link_to my_attendance_stat_path(attendance_stat), class: 'ui blue mini icon button' do %>
|
41
|
+
<i class="fas fa-info"></i>
|
42
|
+
<% end %>
|
43
|
+
</td>
|
44
|
+
</tr>
|
45
|
+
<% end %>
|
46
|
+
</tbody>
|
47
|
+
</table>
|
48
|
+
|
49
|
+
<%= paginate @attendance_stats %>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<div class="ui segment breadcrumb">
|
2
|
+
<%= link_to 'Back', my_attendance_stats_path, class: 'section' %>
|
3
|
+
<i class="fas fa-angle-right divider"></i>
|
4
|
+
<div class="active section">Show</div>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<table class="table is-hoverable is-fullwidth">
|
8
|
+
<tbody>
|
9
|
+
<tr>
|
10
|
+
<td class="has-text-right three wide"><%= AttendanceStat.human_attribute_name(:free_absence) %></td>
|
11
|
+
<td>
|
12
|
+
<%= simple_format @attendance_stat.free_absence %>
|
13
|
+
</td>
|
14
|
+
</tr>
|
15
|
+
<tr>
|
16
|
+
<td class="has-text-right"><%= AttendanceStat.human_attribute_name(:redeeming_absence) %></td>
|
17
|
+
<td>
|
18
|
+
<%= simple_format @attendance_stat.redeeming_absence %>
|
19
|
+
</td>
|
20
|
+
</tr>
|
21
|
+
<tr>
|
22
|
+
<td class="has-text-right"><%= AttendanceStat.human_attribute_name(:costed_absence) %></td>
|
23
|
+
<td>
|
24
|
+
<%= simple_format @attendance_stat.costed_absence %>
|
25
|
+
</td>
|
26
|
+
</tr>
|
27
|
+
</tbody>
|
28
|
+
</table>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<%= form_with model: [:me, @attendance] do |f| %>
|
2
|
+
<%= render 'error_messages', target: @attendance %>
|
3
|
+
<div class="inline fields">
|
4
|
+
<%= f.label :start_at %>
|
5
|
+
<div class="four wide field">
|
6
|
+
<%= f.date_field :'start_at(date)', can: { wrap_input: false, wrap_all: false }, label: false %>
|
7
|
+
</div>
|
8
|
+
<div class="three wide field">
|
9
|
+
<%= f.time_select :start_at, start_hour: 8, end_hour: 18, minute_step: 30 %>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
<div class="inline fields">
|
13
|
+
<%= f.label :finish_at %>
|
14
|
+
<div class="four wide field">
|
15
|
+
<%= f.date_field :'finish_at(date)', can: { wrap_input: false, wrap_all: false }, label: false %>
|
16
|
+
</div>
|
17
|
+
<div class="three wide field">
|
18
|
+
<%= f.time_select :finish_at, start_hour: 8, end_hour: 18, minute_step: 30 %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<%= f.submit %>
|
22
|
+
<% end %>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<td><%= model.attend_on %></td>
|
2
|
+
<td>
|
3
|
+
<p><time data-controller="time" data-format="HH:mm"><%= model.start_at&.to_s(:rfc822) %></time></p>
|
4
|
+
<p>
|
5
|
+
<% if model.finish_at %>
|
6
|
+
<time data-controller="time" data-format="HH:mm"><%= model.finish_at.to_s(:rfc822) %></time>
|
7
|
+
<% elsif model.finish_at.blank? && model.start_at.present? %>
|
8
|
+
<%= link_to 'Re-Punch', new_me_attendance_log_path(attendance_id: model.id), class: 'ui teal mini button' %>
|
9
|
+
<% end %>
|
10
|
+
</p>
|
11
|
+
</td>
|
12
|
+
<td>
|
13
|
+
<p><time data-controller="time" data-format="HH:mm"><%= model.interval_start_at&.to_s(:rfc822) %></time></p>
|
14
|
+
<p>
|
15
|
+
<% if model.interval_finish_at %>
|
16
|
+
<time data-controller="time" data-format="HH:mm"><%= model.interval_finish_at.to_s(:rfc822) %></time>
|
17
|
+
<% elsif model.interval_finish_at.blank? && model.interval_start_at.present? %>
|
18
|
+
<%= link_to 'Re-Punch', new_me_attendance_log_path(attendance_id: model.id), class: 'ui teal mini button' %>
|
19
|
+
<% end %>
|
20
|
+
</p>
|
21
|
+
</td>
|
22
|
+
<td>
|
23
|
+
<% if model.interval_absence_id %>
|
24
|
+
<p><%= link_to model.interval_hours.to_f.to_s(:human), me_absence_path(model.interval_absence_id), class: 'ui green label' %></p>
|
25
|
+
<% elsif model.interval_hours.to_f > 0 %>
|
26
|
+
<p><span class="tag"><%= model.interval_hours %></span></p>
|
27
|
+
<% end %>
|
28
|
+
</td>
|
29
|
+
<td class="ui labels">
|
30
|
+
<% if model.late_absence_id %>
|
31
|
+
<p><%= link_to model.late_minutes.to_i.minutes.inspect, me_absence_path(model.late_absence_id), class: 'ui green label' %></p>
|
32
|
+
<% elsif model.late_minutes.to_i > 0 %>
|
33
|
+
<p><span class="tag">Be late: <%= model.late_minutes.to_i.minutes.inspect %></span></p>
|
34
|
+
<% end %>
|
35
|
+
<% if model.leave_absence_id %>
|
36
|
+
<p>
|
37
|
+
<%= link_to model.late_minutes.to_i.minutes.inspect, me_absence_path(model.leave_absence_id), class: 'ui green label' %>
|
38
|
+
</p>
|
39
|
+
<% elsif model.leave_minutes.to_i > 0 %>
|
40
|
+
<p><span class="tag">Leave early: <%= model.leave_minutes.to_i.minutes.inspect %></span></p>
|
41
|
+
<% end %>
|
42
|
+
</td>
|
43
|
+
<td>
|
44
|
+
<p><%= model.attend_hours.to_d.to_s(:human) %>h</p>
|
45
|
+
<p><%= model.overtime_hours.to_d.to_s(:human) %>h</p>
|
46
|
+
</td>
|
47
|
+
<td>
|
48
|
+
<%= link_to 'logs', me_attendance_logs_path(attendance_id: model.id), class: 'label' %>
|
49
|
+
</td>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<th><%= Attend::Attendance.human_attribute_name(:attend_on) %></th>
|
2
|
+
<th>
|
3
|
+
<p><%= Attend::Attendance.human_attribute_name(:start_at) %></p>
|
4
|
+
<p><%= Attend::Attendance.human_attribute_name(:finish_at) %></p>
|
5
|
+
</th>
|
6
|
+
<th>
|
7
|
+
<p><%= Attend::Attendance.human_attribute_name(:interval_start_at) %></p>
|
8
|
+
<p><%= Attend::Attendance.human_attribute_name(:interval_finish_at) %></p>
|
9
|
+
</th>
|
10
|
+
<th><%= Attend::Attendance.human_attribute_name(:interval_hours) %></th>
|
11
|
+
<th>
|
12
|
+
<p><%= Attend::Attendance.human_attribute_name(:late_minutes) %></p>
|
13
|
+
<p><%= Attend::Attendance.human_attribute_name(:leave_minutes) %></p>
|
14
|
+
</th>
|
15
|
+
<th>
|
16
|
+
<p><%= Attend::Attendance.human_attribute_name(:attend_hours) %></p>
|
17
|
+
<p><%= Attend::Attendance.human_attribute_name(:overtime_hours) %></p>
|
18
|
+
</th>
|
19
|
+
<th></th>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= render 'nav_attendances' %>
|
2
|
+
|
3
|
+
<%= render layout: 'index_table', locals: { cache_key: Attend::Attendance.column_names.hash } do %>
|
4
|
+
<%= render partial: 'index_tbody', layout: 'index_tr', collection: @attendances, as: :model %>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<%= paginate @attendances %>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<% content_for :breadcrumb do %>
|
2
|
+
<div class="tabs">
|
3
|
+
<ul>
|
4
|
+
<li><%= link_to 'Work Overtime', me_overtimes_path, class: active_helper('attend/me/overtimes': ['index']) %></li>
|
5
|
+
<li><%# link_to 'Group Work Overtime', me_admin_overtimes_path, class: active_helper('me_admin/overtimes': ['me']) %></li>
|
6
|
+
</ul>
|
7
|
+
</div>
|
8
|
+
<% end %>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<% content_for :breadcrumb do %>
|
2
|
+
<div class="tabs">
|
3
|
+
<ul>
|
4
|
+
<li><%= link_to 'My Holiday Application', me_absences_path, class: active_helper('attend/me/absences': ['index']) %></li>
|
5
|
+
<li><%= link_to 'My Dashboard', dashboard_me_absences_path, class: active_helper('attend/me/absences': ['dashboard']) %></li>
|
6
|
+
<li><%# link_to 'Group Holiday Application', me_admin_absences_path, class: active_helper('attend/admin/absences': ['me']) %></li>
|
7
|
+
</ul>
|
8
|
+
</div>
|
9
|
+
<% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% content_for :breadcrumb do %>
|
2
|
+
<div class="tabs">
|
3
|
+
<ul>
|
4
|
+
<li><%= link_to 'Attendances', me_attendances_path, class: active_helper(controllers: 'attend/me/attendances') %></li>
|
5
|
+
<li><%# link_to 'Group Attendance', me_admin_attendance_logs_path, class: active_helper('me_admin/attendance_logs': 'me') %></li>
|
6
|
+
<li><%= link_to 'Attendance Stat', me_attendance_stats_path, class: active_helper(controllers: 'attend/me/attendance_stats') %></li>
|
7
|
+
<li><%= link_to 'Attendance Logs', me_attendance_logs_path, class: active_helper(controllers: 'attend/me/attendance_logs') %></li>
|
8
|
+
</ul>
|
9
|
+
</div>
|
10
|
+
<% end %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
json.array! @financial_months.flat_map { |i| i.events } do |event|
|
2
|
+
json.start event[:start]
|
3
|
+
json.rendering 'background'
|
4
|
+
json.color event[:color]
|
5
|
+
end
|
6
|
+
|
7
|
+
json.array! @financial_months.flat_map { |i| i.extras } do |event|
|
8
|
+
json.title event[:title]
|
9
|
+
json.start event[:start]
|
10
|
+
end
|
11
|
+
|
12
|
+
json.array! @absence_events do |event|
|
13
|
+
json.title event['title']
|
14
|
+
json.start event['start']
|
15
|
+
json.end event['end']
|
16
|
+
json.url event['url']
|
17
|
+
json.color '#881224'
|
18
|
+
end
|
19
|
+
|