-
-
-
-
-
-
-
-
-
Upload new Call Records
-
-
-
-
-
-
-{% endblock %}
-
-{% block extrajs %}{% endblock %}
\ No newline at end of file
diff --git a/easyCall/apps/user_interface/urls.py b/easyCall/apps/user_interface/urls.py
index d2802dd..8412fff 100644
--- a/easyCall/apps/user_interface/urls.py
+++ b/easyCall/apps/user_interface/urls.py
@@ -4,6 +4,5 @@
url(r'^$', 'easyCall.apps.user_interface.views.index', name='index'),
url(r'^call/$', 'easyCall.apps.user_interface.views.call', name='call'),
url(r'^search/$', 'easyCall.apps.user_interface.views.search', name='search'),
- url(r'^ecadmin/upload$', 'easyCall.apps.user_interface.views.upload', name='upload'),
- url(r'^ecadmin/queue$', 'easyCall.apps.user_interface.views.queue', name='queue'),
+ url(r'^ecadmin/$', 'easyCall.apps.user_interface.views.admin', name='admin'),
)
\ No newline at end of file
diff --git a/easyCall/apps/user_interface/views.py b/easyCall/apps/user_interface/views.py
index 4ce3933..4bb2284 100644
--- a/easyCall/apps/user_interface/views.py
+++ b/easyCall/apps/user_interface/views.py
@@ -13,7 +13,7 @@
def index(request):
groups = request.user.groups.values_list('name',flat=True)
if ('Admin' in groups):
- return redirect('ui:upload')
+ return redirect('ui:admin')
elif ('Inbound' in groups):
return redirect('ui:search')
elif ('Caller' in groups):
@@ -45,18 +45,7 @@ def search(request):
@login_required
-def queue(request):
- groups = request.user.groups.values_list('name',flat=True)
- if ('Admin' not in groups):
- return redirect('logout')
- context = {
- 'groups': groups
- }
- return render(request, 'user_interface/queue.html', context)
-
-
-@login_required
-def upload(request):
+def admin(request):
groups = request.user.groups.values_list('name',flat=True)
if ('Admin' not in groups):
return redirect('logout')
@@ -85,7 +74,7 @@ def upload(request):
'form': form,
'message': message,
}
- return render(request, 'user_interface/upload.html', context)
+ return render(request, 'user_interface/admin.html', context)
def handle_uploaded_file(the_file, list_type, just_headings):
diff --git a/package.json b/package.json
index e9a5ba1..3f8c2c9 100644
--- a/package.json
+++ b/package.json
@@ -40,12 +40,10 @@
"static": "venv/bin/python manage.py collectstatic --noinput",
- "open:stage": "heroku open --remote staging",
- "open:prod": "heroku open --remote production",
+ "open:stage": "heroku open",
"open:dev": "opener http://localhost:5000",
- "deploy:stage": "git push staging develop:master",
- "deploy:prod": "git push production master",
+ "deploy:stage": "git push heroku master",
"dev": "npm run open:dev -s & parallelshell 'npm run serve -s' 'npm run watch -s'",
"stage": "npm run deploy:stage -s & npm run open:stage -s",
@@ -53,11 +51,10 @@
"db:migrate:make": "venv/bin/python manage.py makemigrations",
"db:migrate:dev": "venv/bin/python manage.py migrate",
- "db:migrate:stage": "heroku run --remote staging python manage.py migrate",
- "db:migrate:prod": "heroku run --remote production python manage.py migrate",
+ "db:migrate:stage": "heroku run python manage.py migrate",
"db:reset:dev": "rm -rf db.sqlite3",
- "db:reset:stage": "heroku pg:reset --remote staging DATABASE_URL --confirm intense-island-9839",
+ "db:reset:stage": "heroku pg:reset DATABASE_URL --confirm intense-island-9839",
"db:dumpdata:dev": "venv/bin/python manage.py dumpdata lists --indent=4 --natural-foreign > dump.json",
"db:loaddata:dev": "venv/bin/python manage.py loaddata dump.json",
"db:loadgroups:dev": "venv/bin/python manage.py loaddata groups.json"
diff --git a/static/app/css/main.min.css b/static/app/css/main.min.css
index 8114a8b..fabc2b9 100644
--- a/static/app/css/main.min.css
+++ b/static/app/css/main.min.css
@@ -1 +1 @@
-body{font-family:Helvetica,sans-serif}.login-body{padding-top:40px;padding-bottom:40px}.form-signin{max-width:330px;padding:15px;margin:0 auto}.form-signin .form-signin-heading{margin-bottom:10px}.form-signin .alert{margin-top:10px;margin-bottom:10px}.form-signin .form-control{position:relative;height:auto;padding:10px;font-size:16px}.form-signin .form-control:focus{z-index:2}.form-signin input[type="text"]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.form-signin input[type="password"]{margin-bottom:10px;border-top-right-radius:0;border-top-left-radius:0}.type-list{padding-top:20px;max-width:330px;margin:0 auto}.type-list .type-selection-heading{margin-bottom:40px}.type-list .btn{padding:10px;font-size:16px;margin-bottom:40px}.search-body .search-input{padding-top:30px}.search-body .results{padding-top:50px}.search-body .results .phone-numbers,.search-body .results .address,.search-body .results .status{padding-top:10px}.search-body .results .phone-numbers em,.search-body .results .address em,.search-body .results .status em{color:#8c8c8c;weight:bold;padding-right:10px}.search-body .results button{margin-top:-40px}.search-body .results .list-group-item-sub-heading{padding-right:15px}.search-body .results .no-results{color:#b3b3b3}h2{margin-top:0;color:#545454}h3.sub-heading{color:#b3b3b3}.title{font-size:90%;font-weight:bolder;color:#8c8c8c;text-transform:uppercase;text-align:right}.item-heading{display:inline-block;color:#8c8c8c;font-size:80%;font-weight:bolder;text-transform:uppercase;text-align:right;vertical-align:bottom}h4{color:#545454}.call-body .pane-left .call-demographics{margin-bottom:20px}.call-body .pane-left .call-demographics .name{font-size:130%;font-weight:bold;padding-bottom:10px;color:#545454}.call-body .pane-left .call-demographics .btn.edit{margin-right:17px}.call-body .pane-left .call-demographics .view-mode .title{padding-top:1px}.call-body .pane-left .call-demographics .view-mode .data{white-space:pre-line}.call-body .pane-left .call-demographics .view-mode .demo-set{padding-top:10px}.call-body .pane-left .call-results .input-group{padding-bottom:5px}.call-body .pane-left .call-results .buttons{padding-top:15px;margin-right:-5px;margin-left:-5px}.call-body .pane-left .call-results .buttons .col-xs-6,.call-body .pane-left .call-results .buttons .col-xs-4{padding-bottom:5px;padding-top:5px;padding-left:5px;padding-right:5px}.call-body .pane-right{height:100%}.call-body .pane-right .extra-block em{text-transform:uppercase}.call-body .pane-right .extra-block .row{padding-bottom:10px}.call-body .pane-right .list-group-item{border:0;padding:10px}.call-body .pane-right .list-group-item .note-text{white-space:pre-line}.call-body .pane-right .list-group-item .button-group{padding-left:25px;padding-right:0}.call-body .pane-right .list-group-item .row{padding-top:15px}.call-body .pane-right .panel-heading button{display:inline-box;float:right;margin-right:-5px}
\ No newline at end of file
+body{font-family:Helvetica,sans-serif}.login-body{padding-top:40px;padding-bottom:40px}.form-signin{max-width:330px;padding:15px;margin:0 auto}.form-signin .form-signin-heading{margin-bottom:10px}.form-signin .alert{margin-top:10px;margin-bottom:10px}.form-signin .form-control{position:relative;height:auto;padding:10px;font-size:16px}.form-signin .form-control:focus{z-index:2}.form-signin input[type="text"]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.form-signin input[type="password"]{margin-bottom:10px;border-top-right-radius:0;border-top-left-radius:0}.type-list{padding-top:20px;max-width:330px;margin:0 auto}.type-list .type-selection-heading{margin-bottom:40px}.type-list .btn{padding:10px;font-size:16px;margin-bottom:40px}h2{margin-top:0;color:#545454}.title{font-size:90%;font-weight:bolder;color:#8c8c8c;text-transform:uppercase;text-align:right}.item-heading{display:inline-block;color:#8c8c8c;font-size:80%;font-weight:bolder;text-transform:uppercase;text-align:right;vertical-align:bottom}h4{color:#545454}.call-body .pane-left .call-demographics{margin-bottom:20px}.call-body .pane-left .call-demographics .name{font-size:130%;font-weight:bold;padding-bottom:10px;color:#545454}.call-body .pane-left .call-demographics .btn.edit{margin-right:17px}.call-body .pane-left .call-demographics .view-mode .title{padding-top:1px}.call-body .pane-left .call-demographics .view-mode .data{white-space:pre-line}.call-body .pane-left .call-demographics .view-mode .demo-set{padding-top:10px}.call-body .pane-left .call-results .input-group{padding-bottom:5px}.call-body .pane-left .call-results ul{padding-top:20px;list-style-type:none;padding-left:0}.call-body .pane-left .call-results ul li{display:inline-block}.call-body .pane-left .call-results .btn{margin-right:10px}.call-body .pane-right{height:100%}.call-body .pane-right .extra-block em{text-transform:uppercase}.call-body .pane-right .extra-block .row{padding-bottom:10px}.call-body .pane-right .list-group-item{border:0;padding:10px}.call-body .pane-right .list-group-item .note-text{white-space:pre-line}.call-body .pane-right .list-group-item .button-group{padding-left:25px;padding-right:0}.call-body .pane-right .list-group-item .row{padding-top:15px}.call-body .pane-right .panel-heading button{display:inline-box;float:right;margin-right:-5px}
\ No newline at end of file
diff --git a/static/app/js/call/app.js b/static/app/js/app.js
similarity index 58%
rename from static/app/js/call/app.js
rename to static/app/js/app.js
index 20582c3..3cc8885 100644
--- a/static/app/js/call/app.js
+++ b/static/app/js/app.js
@@ -10,17 +10,13 @@ ecApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/ready', {
- templateUrl: djangoStatic + 'partials/call/ready.html',
+ templateUrl: djangoStatic + 'partials/ready.html',
controller: 'readyCtrl'
}).
when('/call/:callCat', {
- templateUrl: djangoStatic + 'partials/call/call.html',
+ templateUrl: djangoStatic + 'partials/call.html',
controller: 'callCtrl'
}).
- when('/call/:callCat/empty', {
- templateUrl: djangoStatic + 'partials/call/call_empty.html',
- controller: 'callEmptyCtrl'
- }).
otherwise({
redirectTo: '/ready'
});
diff --git a/static/app/js/call/controllers.js b/static/app/js/controllers.js
similarity index 91%
rename from static/app/js/call/controllers.js
rename to static/app/js/controllers.js
index ee2682e..a95c5d0 100644
--- a/static/app/js/call/controllers.js
+++ b/static/app/js/controllers.js
@@ -4,27 +4,19 @@ var ecAppControllers = angular.module('ecAppControllers', ['restangular']);
ecAppControllers.controller('readyCtrl',
- ['$scope', 'Restangular',
- function($scope, Restangular) {
+ ['$scope', 'Restangular', '$q',
+ function($scope, Restangular, $q) {
+ 'use strict';
+
Restangular.all('list_types/').getList().then(function(types) {
$scope.types = types;
});
}]);
-ecAppControllers.controller('callEmptyCtrl',
- ['$scope', '$routeParams', 'Restangular',
- function($scope, $routeParams, Restangular) {
- Restangular.one('list_types/' + $routeParams.callCat + '/').get().then(
- function(callType) {
- $scope.callType = callType;
- });
- }]);
-
-
ecAppControllers.controller('callCtrl',
- ['$scope', '$routeParams', 'Restangular', '$q', '$window',
- function($scope, $routeParams, Restangular, $q, $window) {
+ ['$scope', '$routeParams', 'Restangular', '$q',
+ function($scope, $routeParams, Restangular, $q) {
'use strict';
Restangular.one('list_types/' + $routeParams.callCat + '/').get().then(
@@ -43,7 +35,6 @@ ecAppControllers.controller('callCtrl',
}, function (response) {
console.log("Error with status code", response.status);
deferred.reject();
- $window.location.href = '#/call/' + $routeParams.callCat + '/empty';
});
return deferred.promise;
diff --git a/static/app/js/call/directives.js b/static/app/js/directives.js
similarity index 93%
rename from static/app/js/call/directives.js
rename to static/app/js/directives.js
index a0ec661..34f7a93 100644
--- a/static/app/js/call/directives.js
+++ b/static/app/js/directives.js
@@ -230,26 +230,15 @@ ecAppDirectives.directive('ecResultSection', function() {
},
template:
'
' +
- '
' +
- '
',
+ '
' +
+ ' ' +
+ ' ' +
+ ' ' +
+ ' ',
link: function (scope, element, attrs) {
scope.submit = function(button) {
- scope.updatefunc({'button': button.display_name, 'data': scope.call});
- };
- scope.next = function() {
- scope.updatefunc({'button': 'Next', 'data': scope.call});
+ scope.updatefunc({'button': button, 'data': scope.call});
};
}
};
@@ -260,31 +249,13 @@ ecAppDirectives.directive('ecActionButton', function() {
return {
restrict: "A",
scope: {
- linkfunc: "&",
- data: "=",
+ data: "&",
+ label: "@",
},
template: '
' +
- '{{data.display_name}}' +
- ' ',
-
- link: function (scope) {
- scope.btnclass = function(cat) {
- var base = "btn btn-block btn-md ";
- if (cat === "gd") {
- var result = base.concat("btn-success");
- } else if (cat === "bd") {
- var result = base.concat("btn-danger");
- } else if (cat === "nt") {
- var result = base.concat("btn-default");
- } else if (cat === "ic") {
- var result = base.concat("btn-primary");
- } else {
- var result = base;
- };
- return result;
- };
- }
+ 'class="btn btn-md btn-default" role="button" ng-click="data()">' +
+ '{{label}}' +
+ ''
};
});
diff --git a/static/app/js/call/filters.js b/static/app/js/filters.js
similarity index 100%
rename from static/app/js/call/filters.js
rename to static/app/js/filters.js
diff --git a/static/app/js/queue/app.js b/static/app/js/queue/app.js
deleted file mode 100644
index 42c1998..0000000
--- a/static/app/js/queue/app.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var ecQueue = angular.module('ecQueue', [
- 'restangular',
- 'ecQueueControllers',
- 'ecQueueDirectives',
- 'ecQueueServices',
-]);
\ No newline at end of file
diff --git a/static/app/js/queue/controllers.js b/static/app/js/queue/controllers.js
deleted file mode 100644
index 75bd02b..0000000
--- a/static/app/js/queue/controllers.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Controllers */
-
-var ecQueueControllers = angular.module('ecQueueControllers', []);
-
-
-ecQueueControllers.controller('queueCtrl',
- ['$scope', 'ListType', 'ListTypeReport',
- function($scope, ListType, ListTypeReport) {
-
- $scope.refresh = function() {
- ListType.getData().then(
- function(list_types) {
- $scope.listtypes = {};
- list_types.forEach(function(element) {
- ListTypeReport.getData(element.slug).then(function(result) {
- var typeInfo = {
- 'slug': element.slug,
- 'display': element.display_name,
- 'completed': result.completed,
- 'dequeued': result.dequeued,
- 'inprogress': result.inprogress,
- 'new': result.new,
- 'queued': result.queued
- };
- $scope.listtypes[typeInfo.slug] = typeInfo;
- });
- });
- });
- };
-
- $scope.doqueue = function(data) {
- var slug = data.slug;
- ListTypeReport.doQueue(slug).then(
- function(result) {
- data.completed = result.completed;
- data.dequeued = result.dequeued;
- data.inprogress = result.inprogress;
- data.new = result.new;
- data.queued = result.queued;
-
- $scope.listtypes[slug] = data;
- });
- };
-
- $scope.listtypes = [];
- $scope.refresh();
-
- }]);
\ No newline at end of file
diff --git a/static/app/js/queue/directives.js b/static/app/js/queue/directives.js
deleted file mode 100644
index f9a6277..0000000
--- a/static/app/js/queue/directives.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Directives */
-
-var ecQueueDirectives = angular.module('ecQueueDirectives', []);
-
-
-ecQueueDirectives.directive('ecReportRow', function() {
- return {
- restrict: "A",
- scope: {
- 'data': "=",
- 'queuefunc': "&",
- },
- template:
- '
{{ data.display }} ' +
- '
{{ data.completed }} ' +
- '
{{ data.dequeued }} ' +
- '
{{ data.inprogress }} ' +
- '
{{ data.new }} ' +
- '
{{ data.queued }} ' +
- '
' +
- ' Queue ' +
- ' ',
-
- link: function (scope, element, attrs) {
- scope.queue = function() {
- scope.queuefunc({'list': scope.data});
- };
- }
- };
-});
diff --git a/static/app/js/queue/services.js b/static/app/js/queue/services.js
deleted file mode 100644
index cf18b68..0000000
--- a/static/app/js/queue/services.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Services and Factories */
-
-var ecQueueServices = angular.module('ecQueueServices', ['restangular']);
-
-
-ecQueueServices.factory('ListType',
- ['$q', 'Restangular',
- function($q, Restangular) {
- return {
- getData: function() {
- var deferred = $q.defer();
- Restangular.all('list_types/').getList().then(function(result) {
- deferred.resolve(result);
- });
- return deferred.promise;
- }
- };
-}]);
-
-
-ecQueueServices.factory('ListTypeReport',
- ['$q', 'Restangular',
- function($q, Restangular) {
- return {
- getData: function(slug) {
- var deferred = $q.defer();
- Restangular.all('list_types/').one(slug + '/report/').get().then(function(result) {
- deferred.resolve(result);
- });
- return deferred.promise;
- },
-
- doQueue: function(slug) {
- var deferred = $q.defer();
- Restangular.all('list_types/').one(slug + '/report/')
- .put({}, {"X-CSRFToken": csrf_token}).then(function(result) {
- deferred.resolve(result);
- });
- return deferred.promise;
- }
- };
-}]);
\ No newline at end of file
diff --git a/static/app/js/search/app.js b/static/app/js/search/app.js
deleted file mode 100644
index 4be3d86..0000000
--- a/static/app/js/search/app.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var ecSearch = angular.module('ecSearch', [
- 'restangular',
- 'ecSearchControllers',
- 'ecSearchDirectives',
- 'ecSearchServices',
-]);
\ No newline at end of file
diff --git a/static/app/js/search/controllers.js b/static/app/js/search/controllers.js
deleted file mode 100644
index ea8cbfe..0000000
--- a/static/app/js/search/controllers.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Controllers */
-
-var ecSearchControllers = angular.module('ecSearchControllers', []);
-
-
-ecSearchControllers.controller('searchCtrl',
- ['$scope', 'CallRecord',
- function($scope, CallRecord) {
-
- var doSearch = function(searchstring) {
- CallRecord.getList({'search': searchstring}).then(
- function(call_records) {
- $scope.data = call_records;
- });
- };
-
- $scope.dequeue = function(id) {
- CallRecord.one(id).get().then(
- function(rec) {
- rec.status = 'dq';
- rec.put({}, {"X-CSRFToken": csrf_token}).then(
- function (response) {
- doSearch($scope.searchString);
- }, function (response) {
- console.log("Error with status code", response.status);
- });
- });
- };
-
- $scope.onChange = function() {
- if ($scope.searchString.length > 2) {
- doSearch($scope.searchString);
- };
- };
-
- $scope.$watch('data', function(newVal, oldVal){
- if (newVal) {
- if (newVal.length < 1) {
- $scope.noresults = true;
- } else {
- $scope.noresults = false;
- };
- } else {
- // First page load
- $scope.noresults = true;
- };
- });
-
- }]);
\ No newline at end of file
diff --git a/static/app/js/search/directives.js b/static/app/js/search/directives.js
deleted file mode 100644
index d5b79e5..0000000
--- a/static/app/js/search/directives.js
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Directives */
-
-var ecSearchDirectives = angular.module('ecSearchDirectives', []);
-
-
-ecSearchDirectives.directive('ecSearchResult', function() {
- return {
- restrict: "E",
- scope: {
- data: "=",
- dequeue: "&",
- },
- template:
- '
' +
- '
SN: {{ data.serial_number }} ' +
- ' ' +
- ' {{ data.list_type_display }} {{ data.status_display }} ' +
- ' ' +
- '' +
- '
{{ full_name }} ' +
- '
' +
- ' ' +
- '
' +
- ' ' +
- '
' +
- ' ' +
- ' Dequeue' +
- ' ',
-
- link: function (scope, element, attrs) {
-
- var button = angular.element(element.find('button'));
- if (scope.data.status !== "nw" && scope.data.status !== "ip") {
- button.attr( "disabled", "disabled" );
- };
-
- scope.handleclick = function() {
- scope.dequeue({'id': scope.data.id});
- };
-
- scope.labelClass = function() {
- if (scope.data.status === "nw") {
- return "label label-success";
- } else if (scope.data.status === "ip") {
- return "label label-info";
- } else if (scope.data.status === "cp") {
- return "label label-primary";
- } else {
- return "label label-default";
- };
- };
-
- function calcname() {
- var name = '';
- if (scope.data.name_prefix) name = name + scope.data.name_prefix + ' ';
- if (scope.data.name_first) name = name + scope.data.name_first + ' ';
- if (scope.data.name_middle) name = name + scope.data.name_middle + ' ';
- if (scope.data.name_family) name = name + scope.data.name_family + ' ';
- if (scope.data.name_suffix) name = name + scope.data.name_suffix;
- return name;
- };
-
- scope.full_name = calcname();
- }
- };
-});
-
-
-ecSearchDirectives.directive('ecTelCompressed', function() {
- return {
- restrict: "E",
- scope: {
- 'day': "=",
- 'evening': "=",
- 'work': "=",
- 'mobile': "=",
- },
- template:
- '
' +
- ' (DAY) {{ day }} ' +
- ' (EVE) {{ evening }} ' +
- ' (WORK) {{ work }} ' +
- ' (MOB) {{ mobile }} ' +
- '
',
-
- link: function (scope, element, attrs) {
- scope.spanclass = 'col-xs-10 col-sm-6 col-lg-4';
- }
- };
-});
-
-
-ecSearchDirectives.directive('ecAddressCompressed', function() {
- return {
- restrict: "E",
- scope: {
- 'addr1': "=",
- 'addr2': "=",
- 'addr3': "=",
- 'suburb': "=",
- 'city': "=",
- 'postcode': "=",
- },
- template:
- '
' +
- '
' +
- ' {{ addr1 }} ' +
- ' {{ addr2 }} ' +
- ' {{ addr3 }} ' +
- ' {{ suburb }} ' +
- ' ' +
- ' {{ city }} ' +
- ' , {{ postcode }} ' +
- ' ' +
- ' ' +
- '
'
- };
-});
diff --git a/static/app/js/search/filters.js b/static/app/js/search/filters.js
deleted file mode 100644
index 071b56d..0000000
--- a/static/app/js/search/filters.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Filters */
-
-var ecASearchFilters = angular.module('ecASearchFilters', []);
\ No newline at end of file
diff --git a/static/app/js/search/services.js b/static/app/js/search/services.js
deleted file mode 100644
index f4504c0..0000000
--- a/static/app/js/search/services.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Services */
-
-var ecSearchServices = angular.module('ecSearchServices', ['restangular']);
-
-
-ecSearchServices.factory('CallRecord',
- ['Restangular',
- function(Restangular) {
- return Restangular.service('call_records');
-}]);
-
diff --git a/static/app/partials/call/call.html b/static/app/partials/call.html
similarity index 100%
rename from static/app/partials/call/call.html
rename to static/app/partials/call.html
diff --git a/static/app/partials/call/call_empty.html b/static/app/partials/call/call_empty.html
deleted file mode 100644
index 1d7e42e..0000000
--- a/static/app/partials/call/call_empty.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
There are no more records of type:
- '{{callType.display_name}}'.
-
-
Please try another List Type or talk to your supervisor.
-
-
Return
-
-
\ No newline at end of file
diff --git a/static/app/partials/call/ready.html b/static/app/partials/ready.html
similarity index 100%
rename from static/app/partials/call/ready.html
rename to static/app/partials/ready.html