Further work on import functions

This commit is contained in:
Tom Bloor 2017-11-13 13:30:33 +00:00
parent 593efcedfa
commit 9096bef00d
9 changed files with 382 additions and 0 deletions

View file

@ -0,0 +1,43 @@
% layout 'admin';
% title 'Import';
% content_for javascript => begin
% end
% if ( my $error = flash 'error' ) {
<div class="alert alert-danger" role="alert">
<strong>Error!</strong> <%= $error %>
</div>
% } elsif ( my $success = flash 'success' ) {
<div class="alert alert-success" role="alert">
<strong>Success!</strong> <%= $success %>
</div>
% }
<div class="row">
<div class="col-12">
<h3>Add CSV Import</h3>
<p>
Copy and paste a CSV in to import it. The first line should contain the
headers The following headers are recognised:
</p>
<ul>
<li>user</li>
<li>value</li>
<li>date</li>
<li>organisation</li>
</ul>
<p>
Any columns which are not in the list above will be ignored and can be
called anything you want, as long as they are not in the list above. They
must also be unique.
</p>
<p>
For date format, consult <a href="https://metacpan.org/pod/DateTime::Format::Strptime#STRPTIME-PATTERN-TOKENS">here</a> for the patterns
</p>
</div>
<div class="col-12">
<form action="<%= url_for %>" method="post">
<input type="text" class="form-control mb-3" name="date_format" required value="<%=flash 'date_format' %>"/>
<textarea class="form-control mb-3" rows="15" name="csv"><%= flash 'csv_data' %></textarea>
<button class="btn btn-success btn-block" type="submit">Save</button>
</form>
</div>
</div>

View file

View file

@ -0,0 +1,45 @@
% layout 'admin';
% title 'Import';
% content_for javascript => begin
% end
% if ( my $error = flash 'error' ) {
<div class="alert alert-danger" role="alert">
<strong>Error!</strong> <%= $error %>
</div>
% } elsif ( my $success = flash 'success' ) {
<div class="alert alert-success" role="alert">
<strong>Success!</strong> <%= $success %>
</div>
% }
<div class="row">
<div class="col-12">
<div class="card">
<h3 class="card-header">
CSV Import
<a href="<%= url_for . '/add' %>" class="btn btn-success" style="float: right">Import Data</a>
</h3>
</div>
</div>
% for my $import ( $import_rs->all ) {
<div class="col col-md-4 mb-3">
<div class="card">
<div class="card-header">
<span class="font-bold"><%= $import->id %></span>
%= format_human_datetime $import->date;
</div>
<div class="card-body">
</div>
<div class="card-footer text-right">
<a href="<%= url_for . '/' . $import->id %>" class="card-link">
Edit Import
</a>
</div>
</div>
</div>
% }
</div>
<div class="row">
<div class="col">
%= bootstrap_pagination( $c->param('page') || 1, $import_rs->pager->last_page, { class => 'justify-content-center' } );
</div>
</div>

View file

@ -0,0 +1,102 @@
% layout 'admin';
% title 'Import';
% content_for javascript => begin
% end
% if ( my $error = flash 'error' ) {
<div class="alert alert-danger" role="alert">
<strong>Error!</strong> <%= $error %>
</div>
% } elsif ( my $success = flash 'success' ) {
<div class="alert alert-success" role="alert">
<strong>Success!</strong> <%= $success %>
</div>
% }
<div class="row">
<div class="col-12 col-md-6 mb-3">
<div class="card">
<h3 class="card-header">
User Assignments
</h3>
<div class="card-body">
Unique users in this Import, and their assigned entity
</div>
<div class="list-group list-group-flush">
% for my $user ( $import_users_rs->all ) {
<div class="list-group-item">
<div class="row">
<div class="col-4">
%= $user->user_name
</div>
<div class="col-4">
<span class="text-muted font-italic">Unassigned</span>
</div>
<div class="col-4">
<a class="btn btn-primary">Select</a>
</div>
</div>
</div>
% }
</div>
</div>
</div>
<div class="col-12 col-md-6 mb-3">
<div class="card">
<h3 class="card-header">
Org Assignments
</h3>
<div class="card-body">
Unique orgs in this Import, and their assigned entity
</div>
<div class="list-group list-group-flush">
% for my $org ( $import_org_rs->all ) {
<div class="list-group-item">
<div class="row">
<div class="col-4">
%= $org->org_name
</div>
<div class="col-4">
<span class="text-muted font-italic">Unassigned</span>
</div>
<div class="col-4">
<a class="btn btn-primary">Select</a>
</div>
</div>
</div>
% }
</div>
</div>
</div>
<div class="col-12">
<div class="card">
<h3 class="card-header">
%= format_human_datetime $import_set->date;
</h3>
<div class="card-body">
Content listed in original order of import
</div>
<div class="list-group list-group-flush">
% for my $import_value ( $import_value_rs->all ) {
<div class="list-group-item">
<div class="row">
<div class="col-2">
<%= $import_value->user_name %>
</div>
<div class="col-3">
<%= format_human_datetime $import_value->purchase_date %>
</div>
<div class="col-2">
<%= $import_value->purchase_value %>
</div>
<div class="col-3">
<%= $import_value->org_name %>
</div>
<div class="col-2">
<a href="#" class="btn btn-danger">Ignore</a>
</div>
</div>
</div>
% }
</div>
</div>
</div>
</div>

View file

@ -50,6 +50,9 @@
<li class="nav-item">
<a class="nav-link<%= title eq 'Organisations' ? ' active' : '' %>" href="<%= url_for '/admin/organisations' %>">Organisations</a>
</li>
<li class="nav-item">
<a class="nav-link<%= title eq 'Import' ? ' active' : '' %>" href="<%= url_for '/admin/import' %>">Import</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<%= url_for '/admin/logout' %>">Logout</a>
</li>