somleng/somleng-rtd

View on GitHub
app/views/homes/show.html.haml

Summary

Maintainability
Test Coverage
%section#overview
  %h2
    Overview
  %p
    Last updated
    - if last_updated = @real_time_data.updated_at
      = time_ago_in_words(last_updated, :include_seconds => true)
      ago
    - else
      never

  .row
    .col-xs-12.col-sm-12.col-md-3.col-lg-3
      .panel.panel-primary
        .panel-heading
          = fa_icon("building", :text => "Projects")
        .panel-body
          %dl.row
            %dt.col-xs-6.col-sm-6.col-md-6.col-lg-6
              Projects
            %dd.col-xs-6.col-sm-6.col-md-6.col-lg-6
              = number_to_human(@real_time_data.projects_count)
            %dt.col-xs-6.col-sm-6.col-md-6.col-lg-6
              Countries
            %dd.col-xs-6.col-sm-6.col-md-6.col-lg-6
              = number_to_human(@real_time_data.countries_count)
            %dt.col-xs-6.col-sm-6.col-md-6.col-lg-6
              Continents
            %dd.col-xs-6.col-sm-6.col-md-6.col-lg-6
              = number_to_human(@real_time_data.continents_count)

    .col-xs-12.col-sm-12.col-md-3.col-lg-3
      .panel.panel-warning
        .panel-heading
          = fa_icon("phone", :text => "Calls")
        .panel-body
          %dl.row
            %dt.col-xs-6.col-sm-6.col-md-6.col-lg-6
              Inbound
            %dd.col-xs-6.col-sm-6.col-md-6.col-lg-6
              = pluralize(number_to_human(@real_time_data.calls_inbound_count), "Call")
              %br
              = pluralize(number_to_human(@real_time_data.calls_inbound_minutes), "Min")
            %dt.col-xs-6.col-sm-6.col-md-6.col-lg-6
              Outbound
            %dd.col-xs-6.col-sm-6.col-md-6.col-lg-6
              = pluralize(number_to_human(@real_time_data.calls_outbound_count), "Call")
              %br
              = pluralize(number_to_human(@real_time_data.calls_outbound_minutes), "Min")
            %dt.col-xs-6.col-sm-6.col-md-6.col-lg-6
              Total
            %dd.col-xs-6.col-sm-6.col-md-6.col-lg-6
              = pluralize(number_to_human(@real_time_data.calls_count), "Call")
              %br
              = pluralize(number_to_human(@real_time_data.calls_minutes), "Min")

    .col-xs-12.col-sm-12.col-md-3.col-lg-3
      .panel.panel-success
        .panel-heading
          = fa_icon("bank", :text => "Savings")
        .panel-body
          %dl.row
            %dt.col-xs-6.col-sm-6.col-md-6.col-lg-6
              Total Spent
            %dd.col-xs-6.col-sm-6.col-md-6.col-lg-6
              = @real_time_data.total_amount_spent
            %dt.col-xs-6.col-sm-6.col-md-6.col-lg-6
              Twilio's Price
            %dd.col-xs-6.col-sm-6.col-md-6.col-lg-6
              = @real_time_data.total_equivalent_twilio_price
            %dt.col-xs-6.col-sm-6.col-md-6.col-lg-6
              Total Saved
            %dd.col-xs-6.col-sm-6.col-md-6.col-lg-6
              = @real_time_data.total_amount_saved

%hr

%section#projects
  %h2
    Projects

  .row.table-responsive
    .col-xs-12.col-sm-12.col-md-12.col-lg-12
      %table.table.table-striped
        %caption
          %h5
            Legend
          .row
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("hashtag", :text => "= Project No.")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("pencil", :text => "= Name")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("file-text-o", :text => "= Description")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("globe", :text => "= Location")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("edge", :text => "= Homepage")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("arrow-circle-down")
              = fa_icon("phone", :text => "= Inbound Calls")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("arrow-circle-up")
              = fa_icon("phone", :text => "= Outbound Calls")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("plus-circle")
              = fa_icon("phone", :text => "= Total Calls")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("arrow-circle-down")
              = fa_icon("clock-o", :text => "= Inbound Call Minutes")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("arrow-circle-up")
              = fa_icon("clock-o", :text => "= Outbound Call Minutes")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("plus-circle")
              = fa_icon("clock-o", :text => "= Total Call Minutes")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("money", :text => "= Total Spent")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("money")
              = fa_icon("tags", :text => "= Twilio's Price")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("bank", :text => "= Total Saved")
            .col-xs-6.col-sm-6.col-md-3.col-lg-3
              = fa_icon("tag", :text => "= Twilio Pricing")
        %thead
          %tr
            %th
              = fa_icon("hashtag")
            %th
              = fa_icon("pencil")
            %th{:title => "Description"}
              = fa_icon("file-text-o")
            %th{:title => "Project Location"}
              = fa_icon("globe")
            %th{:title => "Project Homepage"}
              = fa_icon("edge")
            %th{:title => "Inbound Calls"}
              = fa_icon("arrow-circle-down")
              = fa_icon("phone")
            %th{:title => "Outbound Calls"}
              = fa_icon("arrow-circle-up")
              = fa_icon("phone")
            %th{:title => "Total Calls"}
              = fa_icon("plus-circle")
              = fa_icon("phone")
            %th{:title => "Inbound Call Minutes"}
              = fa_icon("arrow-circle-down")
              = fa_icon("clock-o")
            %th{:title => "Outbound Call Minutes"}
              = fa_icon("arrow-circle-up")
              = fa_icon("clock-o")
            %th{:title => "Total Call Minutes"}
              = fa_icon("plus-circle")
              = fa_icon("clock-o")
            %th{:title => "Total Spent"}
              = fa_icon("money")
            %th{:title => "Twilio's Price"}
              = fa_icon("money")
              = fa_icon("tags")
            %th{:title => "Total Saved"}
              = fa_icon("bank")
            %th{:title => "Twilio Pricing"}
              = fa_icon("tag")
        %tbody
          - @projects.each_with_index do |project, index|
            %tr{:id => project.id}
              %th{:scope => "row"}
                = index + 1

              %td{:title => "Name"}
                = project.name
              %td{:title => "Description"}
                = truncate(project.description, :length => 40)
                %p
                  %span
                    = link_to("Read More", project.homepage, :title => "Project Homepage", :target => "_blank")
              %td{:title => "Project Location"}
                = project.country_name

              %td{:title => "Project Homepage"}
                = link_to(project.homepage, :title => "Project Homepage", :target => "_blank") do
                  = fa_icon("edge")


              %td{:title => "Inbound Calls"}
                = pluralize(number_to_human(project.calls_inbound_count), "Call")

              %td{:title => "Outbound Calls"}
                = pluralize(number_to_human(project.calls_outbound_count), "Call")

              %td{:title => "Total Calls"}
                = pluralize(number_to_human(project.calls_count), "Call")

              %td{:title => "Inbound Minutes"}
                = pluralize(number_to_human(project.calls_inbound_minutes), "Minute")

              %td{:title => "Outbound Minutes"}
                = pluralize(number_to_human(project.calls_outbound_minutes), "Minute")

              %td{:title => "Total Minutes"}
                = pluralize(number_to_human(project.calls_minutes), "Minute")

              %td{:title => "Total Spent"}
                = project.total_amount_spent.format

              %td{:title => "Twilio's Price"}
                = project.total_equivalent_twilio_price.format

              %td{:title => "Total Saved"}
                = project.total_amount_saved.format

              %td{:title => "Twilio Pricing"}
                = link_to(project.twilio_price_voice_url, :title => "Twilio Pricing", :target => "_blank") do
                  = fa_icon("tag")

%hr

%section#api
  %h2
    RTD API
  .row
    .col-xs-12.col-sm-12.col-md-12.col-lg-12
      %section#get_real_time_data
        %h3
          Fetch Real Time Data
        %p
          Retuns aggregate data about all the projects that are using Somleng.
        %h5
          API Endpoint
        %code
          = api_real_time_data_url
        %h5
          Example: Fetch Real Time Data
        %pre
          = preserve do
            :escaped
              $ curl "#{api_real_time_data_url}"
        %h5
          Example: Filtering by Date
        %p
          Fetches Real Time Data within the given date range.
        %pre
          = preserve do
            :escaped
              $ curl "#{api_real_time_data_url("StartDate" => 1.month.ago.beginning_of_month.to_date, "EndDate" => 1.month.ago.end_of_month.to_date)}"
        %h5
          Sample Response
        %pre
          = preserve do
            = JSON.pretty_generate(JSON.parse(@real_time_data.to_json))
      %section#get_projects
        %h3
          Fetch Projects
        %p
          Returns a list of Projects which are currently using Somleng.
        %h5
          API Endpoint
        %code
          = api_projects_url
        %h5
          Example: Fetch all Projects
        %pre
          = preserve do
            :escaped
              $ curl #{api_projects_url}
        %h5
          Example: Filtering by Date
        %p
          Fetches all projects created within in given date range.
        %pre
          = preserve do
            :escaped
              $ curl "#{api_projects_url("StartDate" => 1.month.ago.beginning_of_month.to_date, "EndDate" => 1.month.ago.end_of_month.to_date)}"
        - if @projects.any?
          %h5
            Sample Response
          %pre
            = preserve do
              = JSON.pretty_generate(JSON.parse(@projects.limit(2).to_json))
      - project_id = (@sample_project && @sample_project.id) || ":project_id"
      %section#get_project
        %h3
          Fetch a Project
        %p
          Returns a single project given an id.
        %h5
          API Endpoint
        %code
          = api_project_url(project_id)
        %h5
          Example: Fetch a Project
        %pre
          = preserve do
            :escaped
              $ curl "#{api_project_url(project_id)}"
        - if @sample_project
          %h5
            Sample Response
          %pre
            = preserve do
              = JSON.pretty_generate(JSON.parse(@sample_project.to_json))
      %section#get_project_real_time_data
        %h3
          Fetch Real Time Data about a given Project
        %p
          Returns Real Time Data for a project given a project id.
        %h5
          API Endpoint
        %code
          = api_project_real_time_data_url(project_id)
        %h5
          Example: Fetch Real Time Data for a Project
        %pre
          = preserve do
            :escaped
              $ curl "#{api_project_real_time_data_url(project_id)}"
        %h5
          Sample Response
        %pre
          = preserve do
            = JSON.pretty_generate(JSON.parse(@real_time_data.to_json))