TimeTrex/interface/html5/model/APIReturnHandler.js

137 lines
3.4 KiB
JavaScript

/*
To be the common data model for data return from api
*/
import { Base } from './Base';
export class APIReturnHandler extends Base {
constructor( options = {} ) {
_.defaults( options, {
result_data: null,
delegate: null
} );
super( options );
}
isValid() {
if ( Global.isSet( this.get( 'result_data' ).api_retval ) && this.get( 'result_data' ).api_retval === false ) {
return false;
}
return true;
}
getDetails() {
if ( Global.isSet( this.get( 'result_data' ).api_details ) && Global.isSet( this.get( 'result_data' ).api_details.details ) ) {
return this.get( 'result_data' ).api_details.details;
}
return true;
}
getPagerData() {
if ( Global.isSet( this.get( 'result_data' ).api_details ) && Global.isSet( this.get( 'result_data' ).api_details.pager ) ) {
return this.get( 'result_data' ).api_details.pager;
}
return false;
}
getResult() {
var result;
if ( Global.isSet( this.get( 'result_data' ).api_retval ) ) {
result = this.get( 'result_data' ).api_retval;
} else {
result = this.get( 'result_data' );
}
if ( typeof result === 'undefined' ) {
result = null;
} else if ( $.type( result ) === 'array' && result.length === 0 ) {
result = {};
}
return result;
}
getCode() {
if ( Global.isSet( this.get( 'result_data' ).api_details ) && Global.isSet( this.get( 'result_data' ).api_details.code ) ) {
return this.get( 'result_data' ).api_details.code;
}
return false;
}
getDescription() {
if ( Global.isSet( this.get( 'result_data' ).api_details ) && Global.isSet( this.get( 'result_data' ).api_details.description ) ) {
return this.get( 'result_data' ).api_details.description;
}
return false;
}
getRecordDetails() {
if ( Global.isSet( this.get( 'result_data' ).api_details ) && Global.isSet( this.get( 'result_data' ).api_details.record_details ) ) {
return this.get( 'result_data' ).api_details.record_details;
}
return false;
}
getTotalRecords() {
if ( Global.isSet( this.get( 'result_data' ).api_details ) && Global.isSet( this.get( 'result_data' ).api_details.record_details ) &&
Global.isSet( this.get( 'result_data' ).api_details.record_details.total_records ) ) {
return this.get( 'result_data' ).api_details.record_details.total_records;
}
return false;
}
getValidRecords() {
if ( Global.isSet( this.get( 'result_data' ).api_details ) && Global.isSet( this.get( 'result_data' ).api_details.record_details ) &&
Global.isSet( this.get( 'result_data' ).api_details.record_details.valid_records ) ) {
return this.get( 'result_data' ).api_details.record_details.valid_records;
}
return false;
}
getInValidRecords() {
if ( Global.isSet( this.get( 'result_data' ).api_details ) && Global.isSet( this.get( 'result_data' ).api_details.record_details ) &&
Global.isSet( this.get( 'result_data' ).api_details.record_details.invalid_records ) ) {
return this.get( 'result_data' ).api_details.record_details.invalid_records;
}
return false;
}
getAttributeInAPIDetails( attrName ) {
let result_data = this.get( 'result_data' );
if ( result_data && result_data.api_details ) {
return result_data.api_details[attrName];
}
return false;
}
getDetailsAsString() {
var errorInfo = '';
$.each( this.getDetails(), function( index, errorItem ) {
for ( var i in errorItem ) {
errorInfo += errorItem[i][0] + '\r';
}
} );
return errorInfo;
}
}