Skip to content

Commit

Permalink
df-scheduler 0.2.0 (#174)
Browse files Browse the repository at this point in the history
* DP-115 Add API call scheduling capabilities to platform

- Fix text typo "Frequency (defined in minutes)"
- Scheduler 0.2.0 (add task logs)
- Texts fixes
  • Loading branch information
yaroslavmo committed Dec 20, 2019
1 parent 74de440 commit 712fae6
Show file tree
Hide file tree
Showing 11 changed files with 1,567 additions and 1,321 deletions.
Expand Up @@ -340,7 +340,8 @@ angular.module('dfApplication', ['dfUtility', 'dfUserManagement', 'ngResource'])
},
scheduler: {
include_count: true,
limit: limit
limit: limit,
related: 'task_log_by_task_id'
},
}
};
Expand Down
33 changes: 23 additions & 10 deletions app/admin_components/adf-scheduler/dreamfactory-scheduler.js
Expand Up @@ -11,7 +11,7 @@ angular.module('dfScheduler', ['ngRoute', 'dfUtility'])
templateUrl: MOD_SCHEDULER_ASSET_PATH + 'views/main.html',
controller: 'SchedulerCtrl',
resolve: {
checkAdmin:['checkAdminService', function (checkAdminService) {
checkAdmin: ['checkAdminService', function (checkAdminService) {
return checkAdminService.checkAdmin();
}],
checkUser: ['checkUserService', function (checkUserService) {
Expand Down Expand Up @@ -124,6 +124,11 @@ angular.module('dfScheduler', ['ngRoute', 'dfUtility'])

taskData['service_name'] = scope._getService(taskData['service_id']).name;
taskData['service'] = scope._getService(taskData['service_id']);
if (taskData.hasOwnProperty('task_log_by_task_id') && taskData.task_log_by_task_id) {
taskData['has_log'] = true;
} else {
taskData['has_log'] = false;
}
return {
__dfUI: {
selected: false
Expand Down Expand Up @@ -176,6 +181,11 @@ angular.module('dfScheduler', ['ngRoute', 'dfUtility'])
name: 'frequency',
label: 'Frequency',
active: true
},
{
name: 'has_log',
label: 'Log',
active: true
}
];

Expand Down Expand Up @@ -447,7 +457,7 @@ angular.module('dfScheduler', ['ngRoute', 'dfUtility'])
var newTask = {
name: null,
description: null,
is_active: false,
is_active: true,
service_id: null,
component: null,
id: null,
Expand All @@ -471,6 +481,7 @@ angular.module('dfScheduler', ['ngRoute', 'dfUtility'])

scope.task = null;
scope.isBasicTab = true;
scope.taskErrorEditorObj = {"editor": null};

// Is this going to be a new Task
if (scope.newTask) {
Expand Down Expand Up @@ -538,12 +549,14 @@ angular.module('dfScheduler', ['ngRoute', 'dfUtility'])
return;
}

scope.prepareTaskPayload();
scope.prepareTaskPayload();
};

scope.prepareTaskPayload = function () {
if(scope.task.record.verb !== 'GET'){
if (scope.task.record.verb !== 'GET') {
scope.task.record.payload = scope.taskPayloadEditorObj.editor.getValue();
} else {
scope.task.record.payload = null;
}
};

Expand Down Expand Up @@ -772,7 +785,11 @@ angular.module('dfScheduler', ['ngRoute', 'dfUtility'])
},
config: {
title: 'Scheduler Task Config',
text: 'This section is responsible for scheduler task config: service, component, method, frequency, payload.'
text: 'Use this interface to configure scheduled calls for an API endpoint.'
},
log: {
title: 'Scheduler Task Log',
text: 'This interface displays the scheduler task error log.'
}
};
}
Expand Down Expand Up @@ -805,10 +822,7 @@ angular.module('dfScheduler', ['ngRoute', 'dfUtility'])

scope.task.record.verb_mask = scope.verbs[nameStr].mask;
scope.task.record.verb = nameStr;

if (scope.task.record.verb === "GET") {
scope.task.record.payload = null;
}
scope.task.record.payload = scope.taskPayloadEditorObj.editor.getValue();
document.getElementById('task_verb_picker').click();
};

Expand Down Expand Up @@ -838,7 +852,6 @@ angular.module('dfScheduler', ['ngRoute', 'dfUtility'])
var components = ['', '*'];

scope._getComponents().then(

function (result) {

components = result.data.resource;
Expand Down
22 changes: 18 additions & 4 deletions app/admin_components/adf-scheduler/views/df-manage-tasks.html
Expand Up @@ -6,9 +6,11 @@
<df-section-header data-title="'Manage Tasks'"></df-section-header>

<df-section-toolbar>
<df-toolbar-paginate data-api="'scheduler'" ></df-toolbar-paginate>
<df-toolbar-paginate data-api="'scheduler'"></df-toolbar-paginate>
<div class="btn-group btn-group-sm hidden-xs df-btn-group">
<button class="btn btn-default" data-ng-click="deleteSelectedTasks()" data-ng-disabled="selectedTasks.length === 0" title="Delete selected tasks"><i class="fa fa-fw fa-trash"></i></button>
<button class="btn btn-default" data-ng-click="deleteSelectedTasks()"
data-ng-disabled="selectedTasks.length === 0" title="Delete selected tasks"><i
class="fa fa-fw fa-trash"></i></button>
</div>
<div style="clear: both"></div>
</df-section-toolbar>
Expand Down Expand Up @@ -39,7 +41,9 @@
</th>
</thead>
<tbody>
<tr data-ng-repeat="obj in tasks | orderObjectBy:order.orderBy:order.orderByReverse" class="repeated-item" class="repeated-item" data-ng-class="obj.__dfUI.selected ? 'danger' : ''">
<tr data-ng-repeat="obj in tasks | orderObjectBy:order.orderBy:order.orderByReverse"
class="repeated-item" class="repeated-item"
data-ng-class="obj.__dfUI.selected ? 'danger' : ''">
<td style="width: 80px;">
<div class="cell-content">
<div class="checkbox" style="margin: 0">
Expand Down Expand Up @@ -68,6 +72,15 @@
</span>
</div>

<div ng-switch-when="has_log">
<span ng-if="value == true" data-ng-class="value ? 'df-tab-has-error' : ''">
<i class="fa fa-warning" ng-></i>
</span>
<span ng-if="value == false">
-
</span>
</div>

<div ng-switch-default>
{{value}}
</div>
Expand All @@ -84,7 +97,8 @@

<!-- Edit Role -->
<div data-ng-show="currentEditTask">
<df-task-details data-task-data="currentEditTask" data-new-task="false" data-api-data="apiData"></df-task-details>
<df-task-details data-task-data="currentEditTask" data-new-task="false"
data-api-data="apiData"></df-task-details>
</div>

</div>
6 changes: 3 additions & 3 deletions app/admin_components/adf-scheduler/views/df-task-config.html
Expand Up @@ -51,21 +51,21 @@
</div>
<div class="form-group ng-scope">
<div class="form-group btn-group" role="group" aria-label="">
<label for="tasks_details_frequency_{{$parent.$parent.$index}}">Frequency</label>
<label for="tasks_details_frequency_{{$parent.$parent.$index}}">Frequency (defined in minutes)</label>
<div>
<input class="form-control" type="number" id="tasks_details_frequency_{{$parent.$parent.$index}}"
data-ng-model="task.record.frequency" min="1"/>
</div>
</div>
</div>
<div class="form-group tab-content" data-ng-if="task.record.verb !== 'GET'" style="margin-top: 20px">
<label for="jsonEditor">Payload</label>
<label for="jsonEditor">Payload (JSON)</label>
<div id="jsonEditor" class="tab-pane active">
<df-ace-editor data-input-type="'string'"
data-input-content="task.record.payload"
data-input-update="serviceDefUpdateCounter"
data-input-format="'json'"
data-is-editable="true"
data-is-editable="task.record.verb !== 'GET'"
data-editor-obj="taskPayloadEditorObj"
data-target-div="newTask ? 'taskPayloadCreate' : 'taskPayloadEdit'">
</df-ace-editor>
Expand Down
25 changes: 25 additions & 0 deletions app/admin_components/adf-scheduler/views/df-task-details.html
Expand Up @@ -11,6 +11,10 @@
|
</li>
<li><a showtab href="#config" id="config-tab" ng-click="refreshTaskEditor($event)" data-ng-class="noServiceIdError ? 'df-tab-has-error' : ''">Config</a></li>
<li class="vert-nav-divider">
|
</li>
<li><a showtab href="#log" id="task-log-tab" ng-click="refreshTaskEditor($event)" data-ng-class="task.record.has_log ? 'df-tab-has-error' : ''">Log</a></li>
</ul>

<div class="tab-content" style="margin-top: 20px">
Expand Down Expand Up @@ -43,6 +47,27 @@
<df-large-help data-options="dfLargeHelp.config"></df-large-help>
<scheduler-task-config></scheduler-task-config>
</div>
<div id="log" class="tab-pane">
<df-large-help data-options="dfLargeHelp.log"></df-large-help>
<div class="form-group ng-scope">
<div class="form-group btn-group" data-ng-class="noServiceIdError ? 'df-tab-has-error' : ''" role="group" aria-label="">
<div>Status Code: {{task.record.task_log_by_task_id.status_code}}</div>
</div>
</div>
<div class="form-group tab-content" style="margin-top: 20px">
<span>Error:</span>
<div id="jsonEditor" class="tab-pane active">
<df-ace-editor data-input-type="'string'"
data-input-content="task.record.task_log_by_task_id.content"
data-input-update="0"
data-input-format="'json'"
data-is-editable="false"
data-editor-obj="taskErrorEditorObj"
data-target-div="taskErrorShow">
</df-ace-editor>
</div>
</div>
</div>
</div><!-- /.tab-content -->

<div class="form-group form-controls">
Expand Down
@@ -1 +1 @@
<div> <div data-ng-hide="currentEditTask"> <!-- Section Header --> <df-section-header data-title="'Manage Tasks'"></df-section-header> <df-section-toolbar> <df-toolbar-paginate data-api="'scheduler'"></df-toolbar-paginate> <div class="btn-group btn-group-sm hidden-xs df-btn-group"> <button class="btn btn-default" data-ng-click="deleteSelectedTasks()" data-ng-disabled="selectedTasks.length === 0" title="Delete selected tasks"><i class="fa fa-fw fa-trash"></i></button> </div> <div style="clear: both"></div> </df-section-toolbar> <div data-ng-show="tasks.length === 0 && emptySectionOptions.active"> <df-empty-section></df-empty-section> </div> <div data-ng-show="tasks.length > 0"> <div> <div class="panel panel-default"> <table class="table table-responsive table-bordered table-striped table-hover table-condensed"> <thead> <th> </th> <th data-ng-class="order.orderBy === field.name ? 'df-th-selected' : ''" data-ng-click="orderOnSelect(field)" data-ng-repeat="field in fields"> <span class="df-th-text" style="white-space: nowrap">{{field.label}} <i style="margin-left: 5px;" data-ng-if="order.orderBy === field.name" class="fa" data-ng-class="order.orderBy === field.name && order.orderByReverse ? 'fa-caret-down' : 'fa-caret-up'"></i> </span> </th> </thead> <tbody> <tr data-ng-repeat="obj in tasks | orderObjectBy:order.orderBy:order.orderByReverse" class="repeated-item" class="repeated-item" data-ng-class="obj.__dfUI.selected ? 'danger' : ''"> <td style="width: 80px;"> <div class="cell-content"> <div class="checkbox" style="margin: 0"> <label> <input id="tasks_table_row_checkbox_{{obj.record.id}}" type="checkbox" data-ng-checked="obj.__dfUI.selected" data-ng-click="setSelected(obj)"> <div class="btn-group btn-group-xs"> <button id="tasks_table_row_delete_{{obj.record.id}}" type="button" class="btn btn-xs btn-default" data-ng-click="deleteTask(obj)" title="Delete Task"><i class="fa fa-trash"></i></button> </div> </label> </div> </div> </td> <td id="tasks_table_row_{{$index}}_{{obj.record.id}}" data-ng-click="editTask(obj.record)" data-ng-repeat="value in obj.record | orderAndShowValue : fields track by $index"> <div class="cell-content" ng-switch="fields[$index].name"> <div ng-switch-when="is_active"> <span ng-if="value == true"> <i class="fa fa-check"></i> </span> <span ng-if="value == false"> <i class="fa fa-times"></i> </span> </div> <div ng-switch-default> {{value}} </div> </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> <!-- Edit Role --> <div data-ng-show="currentEditTask"> <df-task-details data-task-data="currentEditTask" data-new-task="false" data-api-data="apiData"></df-task-details> </div> </div>
<div> <div data-ng-hide="currentEditTask"> <!-- Section Header --> <df-section-header data-title="'Manage Tasks'"></df-section-header> <df-section-toolbar> <df-toolbar-paginate data-api="'scheduler'"></df-toolbar-paginate> <div class="btn-group btn-group-sm hidden-xs df-btn-group"> <button class="btn btn-default" data-ng-click="deleteSelectedTasks()" data-ng-disabled="selectedTasks.length === 0" title="Delete selected tasks"><i class="fa fa-fw fa-trash"></i></button> </div> <div style="clear: both"></div> </df-section-toolbar> <div data-ng-show="tasks.length === 0 && emptySectionOptions.active"> <df-empty-section></df-empty-section> </div> <div data-ng-show="tasks.length > 0"> <div> <div class="panel panel-default"> <table class="table table-responsive table-bordered table-striped table-hover table-condensed"> <thead> <th> </th> <th data-ng-class="order.orderBy === field.name ? 'df-th-selected' : ''" data-ng-click="orderOnSelect(field)" data-ng-repeat="field in fields"> <span class="df-th-text" style="white-space: nowrap">{{field.label}} <i style="margin-left: 5px;" data-ng-if="order.orderBy === field.name" class="fa" data-ng-class="order.orderBy === field.name && order.orderByReverse ? 'fa-caret-down' : 'fa-caret-up'"></i> </span> </th> </thead> <tbody> <tr data-ng-repeat="obj in tasks | orderObjectBy:order.orderBy:order.orderByReverse" class="repeated-item" class="repeated-item" data-ng-class="obj.__dfUI.selected ? 'danger' : ''"> <td style="width: 80px;"> <div class="cell-content"> <div class="checkbox" style="margin: 0"> <label> <input id="tasks_table_row_checkbox_{{obj.record.id}}" type="checkbox" data-ng-checked="obj.__dfUI.selected" data-ng-click="setSelected(obj)"> <div class="btn-group btn-group-xs"> <button id="tasks_table_row_delete_{{obj.record.id}}" type="button" class="btn btn-xs btn-default" data-ng-click="deleteTask(obj)" title="Delete Task"><i class="fa fa-trash"></i></button> </div> </label> </div> </div> </td> <td id="tasks_table_row_{{$index}}_{{obj.record.id}}" data-ng-click="editTask(obj.record)" data-ng-repeat="value in obj.record | orderAndShowValue : fields track by $index"> <div class="cell-content" ng-switch="fields[$index].name"> <div ng-switch-when="is_active"> <span ng-if="value == true"> <i class="fa fa-check"></i> </span> <span ng-if="value == false"> <i class="fa fa-times"></i> </span> </div> <div ng-switch-when="has_log"> <span ng-if="value == true" data-ng-class="value ? 'df-tab-has-error' : ''"> <i class="fa fa-warning" ng-></i> </span> <span ng-if="value == false"> - </span> </div> <div ng-switch-default> {{value}} </div> </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> <!-- Edit Role --> <div data-ng-show="currentEditTask"> <df-task-details data-task-data="currentEditTask" data-new-task="false" data-api-data="apiData"></df-task-details> </div> </div>

0 comments on commit 712fae6

Please sign in to comment.