<%# Helper methods %> <% def status_badge_class(status) %> <% case status %> <% when 'pending' %> bg-gray-100 text-gray-800 <% when 'processing' %> bg-blue-100 text-blue-800 <% when 'completed' %> bg-green-100 text-green-800 <% when 'failed' %> bg-red-100 text-red-800 <% else %> bg-gray-100 text-gray-800 <% end %> <% end %>

GeoLite2 Data Imports

Manage and monitor your GeoLite2 database imports.

<%= link_to "New Import", new_data_import_path, class: "inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500" %>
<%= form_with(url: data_imports_path, method: :get, local: true) do |f| %>
<%= f.label :import_type, "Import Type", class: "block text-sm font-medium text-gray-700 mb-1" %> <%= f.select :import_type, options_for_select([['All Types', ''], ['ASN', 'asn'], ['Country', 'country']], params[:import_type]), { }, { class: "block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 sm:text-sm" } %>
<%= f.label :status, "Status", class: "block text-sm font-medium text-gray-700 mb-1" %> <%= f.select :status, options_for_select([['All Statuses', ''], ['Pending', 'pending'], ['Processing', 'processing'], ['Completed', 'completed'], ['Failed', 'failed']], params[:status]), { }, { class: "block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 sm:text-sm" } %>
<%= f.label :filename, "Filename", class: "block text-sm font-medium text-gray-700 mb-1" %> <%= f.text_field :filename, value: params[:filename], class: "block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 sm:text-sm", placeholder: "Search filename..." %>
<%= f.submit "Filter", class: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500" %>
<% end %>
<%= DataImport.count %>
Total Imports
<%= DataImport.completed.count %>
Completed
<%= DataImport.processing.count %>
Processing
<%= DataImport.failed.count %>
Failed
<% if @data_imports.any? %> <% @data_imports.each do |data_import| %> <% end %> <% else %> <% end %>
Filename Type Status Progress Created Duration Actions
<%= link_to data_import, class: "flex items-center text-blue-600 hover:text-blue-900 hover:underline" do %> <%= truncate(data_import.filename, length: 40) %> <% end %> <%= data_import.import_type.upcase %> <%= data_import.status.capitalize %> <%= link_to data_import, class: "block hover:bg-gray-50 -mx-2 px-2 py-1 rounded" do %> <% if data_import.processing? || data_import.total_records > 0 %>
<% if data_import.processed_records > 0 %> <% if data_import.total_records > 0 && data_import.processed_records >= data_import.total_records %> <%= number_with_delimiter(data_import.processed_records) %> total <% else %> <%= number_with_delimiter(data_import.processed_records) %> imported <% end %> <% else %> Initializing... <% end %>
<% else %> Not started <% end %> <% end %>
<%= data_import.created_at.strftime('%Y-%m-%d %H:%M') %> <% if data_import.duration > 0 %> <%= distance_of_time_in_words(data_import.duration) %> <% else %> - <% end %> <% unless data_import.processing? %> <%= link_to "Delete", data_import, data: { turbo_method: :delete, turbo_confirm: "Are you sure you want to delete this import?" }, class: "text-red-600 hover:text-red-900" %> <% else %> Processing... <% end %>

No imports found

<% if params[:import_type].present? || params[:status].present? || params[:filename].present? %> Try adjusting your search filters or <% else %> Get started by uploading your first <% end %> <%= link_to "GeoLite2 import", new_data_import_path, class: "text-blue-600 hover:text-blue-500" %>.

<% if @pagy.pages > 1 %>
<% end %>