diff --git a/app/assets/javascripts/angular/worklogs/client.js.coffee b/app/assets/javascripts/angular/worklogs/client.js.coffee
index 2895522..2fce724 100644
--- a/app/assets/javascripts/angular/worklogs/client.js.coffee
+++ b/app/assets/javascripts/angular/worklogs/client.js.coffee
@@ -16,9 +16,8 @@ app.factory "Client", ["RailsResource", (RailsResource)->
nameOrCompanyName: ->
if @name.length
- @name
+ "#{@name} [#{@user.username}]"
else
- @companyName
-
+ "#{@companyName} [#{@user.username}]"
Client
]
diff --git a/app/assets/javascripts/public/kpis.js.coffee b/app/assets/javascripts/public/kpis.js.coffee
deleted file mode 100644
index e7bbeaa..0000000
--- a/app/assets/javascripts/public/kpis.js.coffee
+++ /dev/null
@@ -1,23 +0,0 @@
-window.App ||= {}
-
-window.App.Kpis =
- init: ->
- form = $('#new_kpi')
- form.submit()
- form.on 'change', (e) ->
- form.submit()
-
- data_el = $('#kpi-data')
-
- form.on("ajax:beforeSend", (e, data, status, xhr) ->
- data_el.html("")
- )
-
- form.on("ajax:success", (e, data, status, xhr) ->
- data_el.html(data)
- )
-
- form.on("ajax:error", (e, xhr, status, error) ->
- data_el.html("
There has been an error while generating the data
")
- )
-
diff --git a/app/assets/stylesheets/application.css.sass b/app/assets/stylesheets/application.css.sass
index 2107363..7d6d5af 100644
--- a/app/assets/stylesheets/application.css.sass
+++ b/app/assets/stylesheets/application.css.sass
@@ -19,5 +19,4 @@
@import "static"
@import "worklogs"
@import "tutorial"
-@import kpis
@import "responsive_fixes"
diff --git a/app/assets/stylesheets/kpis.css.sass b/app/assets/stylesheets/kpis.css.sass
deleted file mode 100644
index 0dfb25d..0000000
--- a/app/assets/stylesheets/kpis.css.sass
+++ /dev/null
@@ -1,6 +0,0 @@
-#kpi-data-wrapper
- select[multiple]
- height: 130px
- width: 520px
- .checkbox
- float: none
diff --git a/app/controllers/clients_controller.rb b/app/controllers/clients_controller.rb
index 58d788a..8ed4b61 100644
--- a/app/controllers/clients_controller.rb
+++ b/app/controllers/clients_controller.rb
@@ -14,7 +14,7 @@ def index
@clients = @clients.updated_since(params[:updated_since])
end
end
- format.json {render json: current_user.clients_and_shared_clients}
+ format.json {render json: current_user.clients_and_shared_clients.to_json(include: :user)}
end
end
@@ -89,4 +89,5 @@ def activity
end
@form.aggregate
end
+
end
diff --git a/app/controllers/kpis_controller.rb b/app/controllers/kpis_controller.rb
deleted file mode 100644
index 5e8c99a..0000000
--- a/app/controllers/kpis_controller.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class KpisController < ApplicationController
- def new
- @kpi = Kpi.new
- end
-
- def create
- @kpi = Kpi.new((params[:kpi] || {}).merge(requester: current_user))
- @kpi.generate_user_data
- render partial: "data", layout: false, locals: { kpi: @kpi }
- end
-end
diff --git a/app/helpers/kpis_helper.rb b/app/helpers/kpis_helper.rb
deleted file mode 100644
index 6b9caf8..0000000
--- a/app/helpers/kpis_helper.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-module KpisHelper
-end
diff --git a/app/models_no_database/kpi.rb b/app/models_no_database/kpi.rb
deleted file mode 100644
index 02904da..0000000
--- a/app/models_no_database/kpi.rb
+++ /dev/null
@@ -1,137 +0,0 @@
-class Kpi
- extend ActiveModel::Naming
- extend ActiveModel::Translation
- include ActiveModel::Validations
- include ActiveModel::Conversion
-
- ALLOWED_GROUPING_OPTIONS = %w[day week month year]
-
- attr_accessor :client_ids, :user_ids, :user_data, :requester, :group_data_by, :start_date, :end_date
-
- def initialize(params={})
- params.each do |attr, value|
- self.public_send("#{attr}=", value)
- end if params
-
- super()
- set_default_values
- end
-
- def set_default_values
- if client_ids.nil?
- self.client_ids = []
- end
- if user_ids.nil?
- self.user_ids = []
- end
- self.user_data = []
-
- if !ALLOWED_GROUPING_OPTIONS.include?(group_data_by)
- self.group_data_by = "week"
- end
- if start_date.blank?
- self.start_date = DateTime.now - 1.month
- end
- if end_date.blank?
- self.end_date = DateTime.now
- end
-
- set_client_ids
- set_user_ids
- end
-
- def persisted?
- false
- end
-
- def new_record?
- true
- end
-
- def can_display_data?
- client_ids.present? && user_ids.present?
- end
-
- def set_client_ids
- converted_client_ids = client_ids.select{|id| id.present? }.map(&:to_i)
- if converted_client_ids.blank? && requester.present?
- converted_client_ids = requester.clients.map(&:id)
- end
- self.client_ids = converted_client_ids
- end
-
- def set_user_ids
- converted_user_ids = user_ids.select{|id| id.present? }.map(&:to_i)
- if converted_user_ids.blank? && requester.present?
- converted_user_ids = requester.added_team_members.map(&:id)
- end
- self.user_ids = converted_user_ids
- end
-
- def generate_user_data
- temp = Worklog.where(user_id: user_ids, client_id: client_ids).
- where("start_time >= ? AND end_time <= ?", start_date, end_date).
- order("start_time DESC").
- includes(:client, :user).group_by{|wl| wl.user }
- self.user_data = temp
- end
-
- def all_worklogs_for_criteria
- Worklog.where(user_id: user_ids, client_id: client_ids).
- where("start_time >= ? AND end_time <= ?", start_date, end_date)
- end
-
- def worklog_earnings_grouped
- empty_range = empty_date_range
- queried = all_worklogs_for_criteria.send("group_by_#{group_data_by}", :end_time, {format: format_string_for_display}).sum("hourly_rate_cents / 100")
- queried = Hash[queried.map{|date, val| [DateTime.parse(date).to_i, val]}]
- Hash[empty_range.merge(queried).map{|timestamp, result| [Time.at(timestamp).to_datetime.strftime(format_string_for_display), result]}]
- end
-
- def worklogs_grouped_by
- user_ids.map do |user_id|
- data = Worklog.where(user_id: user_id).
- where(client_id: client_ids).
- where("start_time >= ? AND end_time <= ?", start_date, end_date).
- send("group_by_#{group_data_by}", :end_time).
- sum("end_time - start_time")
-
- # Treat all times as UTC to get the mapping to work
- data = Hash[data.map {|k, v| [DateTime.parse(k.strftime("%F")).beginning_of_day, v]}]
-
- OpenStruct.new(
- user: User.find(user_id),
- data: merge_data_with_preset_data(data)
- )
- end
- end
-
- # Expects a hash like {DateTime: value}
- def merge_data_with_preset_data(data)
- empty_range = empty_date_range
- queried = Hash[data.map{|date, val| [date.to_i, val]}]
- Hash[empty_range.merge(queried).map{|timestamp, result| [Time.at(timestamp).to_datetime, result]}].sort_by {|k, v| k }.reverse
- end
-
- def group_date_i18n_format
- "kpi_#{group_data_by}".to_sym
- end
-
- def format_string_for_display
- # Hack for initing translation backend
- I18n.t :foo
- translations = I18n.backend.send(:translations)
- translations[:en][:time][:formats][group_date_i18n_format]
- end
-
- def empty_date_range
- step = 1.send(group_data_by.pluralize)
- result = {}
- new_start_date = start_date.is_a?(String) ? DateTime.parse(start_date) : start_date
- new_end_date = end_date.is_a?(String) ? DateTime.parse(end_date) : end_date
- ( new_start_date.beginning_of_day .. new_end_date.beginning_of_day ).step(step) do |time|
- result[time.to_i] = nil
- end
- result
- end
-end
diff --git a/app/views/kpis/_data.html.slim b/app/views/kpis/_data.html.slim
deleted file mode 100644
index 38122a7..0000000
--- a/app/views/kpis/_data.html.slim
+++ /dev/null
@@ -1,44 +0,0 @@
-- if kpi.can_display_data?
- h3 Overall earnings
- = column_chart kpi.worklog_earnings_grouped
- h3 Worked hours aggregated
- - kpi.worklogs_grouped_by.each do |group_data|
- .well
- h4 User: #{group_data.user.username}
- - if group_data.data.present?
- table.table-condensed.table-striped.table
- thead
- tr
- th Date
- th style="width: 30%;" Duration
- tbody
- - group_data.data.each do |date, total|
- tr
- td= l date, format: kpi.group_date_i18n_format
- td= total || "-"
- - else
- .alert.alert-info No data to display for user
-
- hr
- h3 Recent worklogs by users
- - kpi.user_data.each do |user, worklogs|
- .well
- h4 User: #{user.username}
- table.table-condensed.table-striped.table
- thead
- tr
- th Start
- th End
- th Client
- th Total
- th Details
- tbody
- - worklogs.each do |worklog|
- tr
- td= l worklog.start_time
- td= l worklog.end_time
- td= worklog.client.name
- td= with_currency worklog.total
- td= link_to "Details", "", class: "btn btn-default btn-mini"
-- else
- h5 No data to display
diff --git a/app/views/kpis/new.html.slim b/app/views/kpis/new.html.slim
deleted file mode 100644
index ff4380d..0000000
--- a/app/views/kpis/new.html.slim
+++ /dev/null
@@ -1,38 +0,0 @@
-#kpi-data-wrapper
- = simple_form_for @kpi, method: :post, remote: true do |f|
- h1 Key performance indicators
- .row
- .col-md-6
- p Choose the clients
- = f.select :client_ids,
- current_user.clients_and_shared_clients.map {|c| [c.name, c.id]},
- {}, multiple: true
-
- .col-md-6
- p Choose the users
- = f.select :user_ids,
- (current_user.added_team_members + [current_user]).map {|u| [u.username, u.id]},
- {}, multiple: true
-
- .row
- .col-md-3
- .control-group
- label Start Date
- input type="date" name="kpi[start_date]"
- .col-md-3
- .control-group
- label End Date
- input type="date" name="kpi[end_date]"
- .col-md-4
- = f.input :group_data_by, collection: Kpi::ALLOWED_GROUPING_OPTIONS,
- label_method: ->(opt) { opt.capitalize }
-
- hr
-
- #kpi-data
- = render "data", kpi: @kpi
-
- javascript:
- $(function() {
- window.App.Kpis.init();
- })
diff --git a/app/views/layouts/_header.html.slim b/app/views/layouts/_header.html.slim
index 4027321..f489467 100644
--- a/app/views/layouts/_header.html.slim
+++ b/app/views/layouts/_header.html.slim
@@ -34,8 +34,6 @@ nav.navbar.navbar-default role="navigation"
= link_to "Invoices", invoices_path
li
= link_to "Edit defaults", edit_invoice_default_path(current_user.invoice_default)
- li
- = link_to "KPI", new_kpi_path
- if not_on_home?
li
= link_to "Tutorial", show_tutorial_path, class: "show-tutorial"
diff --git a/config/routes.rb b/config/routes.rb
index 0b130c9..7c00788 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,7 +1,5 @@
Timetracker::Application.routes.draw do
- get "kpis/new"
-
root :to => "static#home"
resources :users, only: [:new, :create, :show, :edit, :update] do
@@ -14,7 +12,6 @@
get :shared_clients
end
end
- resources :kpis, only: [:new, :create]
resources :clients do
member do
get "activity"
@@ -58,5 +55,4 @@
get "show_tutorial" => "tutorial#show", as: "show_tutorial"
get "/auth/:provider/callback" => "sessions#auth_provider_callback"
-
end