2018-07-18 21:48:07 +02:00
import { Injectable } from '@angular/core' ;
import { Cordova , IonicNativePlugin , Plugin } from '@ionic-native/core' ;
export interface CCKContext {
/ * *
* Full identifier path from root , including the context identifier itself . .
* /
identifierPath : string [ ] ;
/ * *
* Title of the context .
* /
title : string ;
/ * *
* Optional . Type value for the context .
* /
type ? : CCKContextType ;
/ * *
* Optional . Topic value of the context .
* /
topic? : string ;
/ * *
* Optional . Display order of the context .
* /
displayOrder? : number ;
}
export enum CCKContextType {
none = 0 ,
app ,
chapter ,
section ,
level ,
page ,
task ,
challenge ,
quiz ,
exercise ,
lesson ,
book ,
game ,
document ,
audio ,
video
}
export enum CCKContextTopic {
math = 'math' ,
science = 'science' ,
literacyAndWriting = 'literacyAndWriting' ,
worldLanguage = 'worldLanguage' ,
socialScience = 'socialScience' ,
computerScienceAndEngineering = 'computerScienceAndEngineering' ,
artsAndMusic = 'artsAndMusic' ,
healthAndFitness = 'healthAndFitness'
}
export interface CCKBinaryItem {
/ * *
* A unique string identifier for the activity item .
* /
identifier : string ;
/ * *
* A human readable name for the activity item .
* /
title : string ;
/ * *
* A type value for the activity item .
* /
type : CCKBinaryType ;
/ * *
* The value that the binary activity item takes .
* /
isCorrect : boolean ;
/ * *
* Optional . Should the activity item be added as the primary activity item .
* /
isPrimaryActivityItem? : boolean ;
}
export enum CCKBinaryType {
trueFalse = 0 ,
passFail ,
yesNo
}
export interface CCKScoreItem {
/ * *
* A unique string identifier for the activity item .
* /
identifier : string ;
/ * *
* A human readable name for the activity item .
* /
title : string ;
/ * *
* The score earned during completion of a task .
* /
score : number ;
/ * *
* The maximum possible score , against which the reported score should be judged .
* /
maxScore : number ;
/ * *
* Optional . Should the activity item be added as the primary activity item .
* /
isPrimaryActivityItem? : boolean ;
}
export interface CCKQuantityItem {
/ * *
* A unique string identifier for the activity item .
* /
identifier : string ;
/ * *
* A human readable name for the activity item .
* /
title : string ;
/ * *
* A quantity associated with the task .
* /
quantity : number ;
/ * *
* Optional . Should the activity item be added as the primary activity item .
* /
isPrimaryActivityItem? : boolean ;
}
/ * *
* @name Class Kit
* @description Plugin for using Apple ' s ClassKit framework .
*
*
* Prerequisites :
* Only works with Xcode 9.4 and iOS 11.4 . Your Provisioning Profile must include the ClassKit capability . Read more about how to Request ClassKit Resources ( https : //developer.apple.com/contact/classkit/) in here: https://developer.apple.com/documentation/classkit/enabling_classkit_in_your_app.
* Also note that you can ’ t test ClassKit behavior in Simulator because Schoolwork isn ’ t available in that environment .
*
* @usage
* ` ` ` typescript
2018-10-10 16:13:45 -05:00
* import { ClassKit , CCKContext , CCKBinaryItem , CCKQuantityItem , CCKScoreItem , CCKContextTopic , CCKContextType , CCKBinaryType } from '@ionic-native/class-kit/ngx' ;
2018-07-18 21:48:07 +02:00
*
* // Init contexts defined in XML file 'CCK-contexts.xml'
* constructor ( . . . , private classKit : ClassKit ) {
* platform . ready ( ) . then ( ( ) = > {
* classKit . initContextsFromXml ( "classkitplugin://" )
* . then ( ( ) = > console . log ( "success" ) )
* . catch ( e = > console . log ( "error: " , e ) ) ;
* } ) ;
* }
*
* . . .
*
* // Init context with identifier path
* const context : CCKContext = {
* identifierPath : [ "parent_title_one" , "child_one" , "child_one_correct_quiz" ] ,
* title : "child one correct quiz" ,
* type : CCKContextType . exercise ,
* topic : CCKContextTopic.science ,
* displayOrder : 0
* } ;
*
* this . classKit . addContext ( "classkitplugin://" , context )
* . then ( ( ) = > console . log ( "success" ) )
* . catch ( e = > console . log ( "error: " , e ) ) ;
*
*
* // Remove all contexts
* this . classKit . removeContexts ( )
* . then ( ( ) = > console . log ( "success" ) )
* . catch ( e = > console . log ( "error: " , e ) ) ;
*
*
* // Remove context with identifier path
* this . classKit . removeContext ( [ "parent_title_one" , "child_one" , "child_one_correct_quiz" ] )
* . then ( ( ) = > console . log ( "success" ) )
* . catch ( e = > console . log ( "error: " , e ) ) ;
*
*
* // Begin a new activity or restart an activity for a given context
* this . classKit . beginActivity ( [ "parent_title_one" , "child_two" , "child_two_quiz" ] , false )
* . then ( ( ) = > console . log ( "success" ) )
* . catch ( e = > console . log ( "error: " , e ) ) ;
*
*
* // Adds a progress range to the active given activity
* this . classKit . setProgressRange ( 0 , 0.66 )
* . then ( ( ) = > console . log ( "success" ) )
* . catch ( e = > console . log ( "error: " , e ) ) ;
*
*
* // Adds a progress to the active given activity
* this . classKit . setProgress ( 0.66 )
* . then ( ( ) = > console . log ( "success" ) )
* . catch ( e = > console . log ( "error: " , e ) ) ;
*
*
* // Adds activity information that is true or false, pass or fail, yes or no
* const binaryItem : CCKBinaryItem = {
* identifier : "child_two_quiz_IDENTIFIER_1" ,
* title : "CHILD TWO QUIZ 1" ,
* type : CCKBinaryType . trueFalse ,
* isCorrect : isCorrect ,
* isPrimaryActivityItem : false
* } ;
*
* this . classKit . setBinaryItem ( binaryItem )
* . then ( ( ) = > console . log ( "success" ) )
* . catch ( e = > console . log ( "error: " , e ) ) ;
*
*
* // Adds activity information that signifies a score out of a possible maximum
* const scoreItem : CCKScoreItem = {
* identifier : "total_score" ,
* title : "Total Score :-)" ,
* score : 0.66 ,
* maxScore : 1.0 ,
* isPrimaryActivityItem : true
* } ;
*
* this . classKit . setScoreItem ( scoreItem )
* . then ( ( ) = > console . log ( "success" ) )
* . catch ( e = > console . log ( "error: " , e ) ) ;
*
*
* // Activity information that signifies a quantity
* const quantityItem : CCKQuantityItem = {
* identifier : "quantity_item_hints" ,
* title : "Hints" ,
* quantity : 12 ,
* isPrimaryActivityItem : false
* } ;
*
* this . classKit . setQuantityItem ( quantityItem )
* . then ( ( ) = > console . log ( "success" ) )
* . catch ( e = > console . log ( "error: " , e ) ) ;
*
* ` ` `
*
* @interfaces
* CCKContext
* CCKContextType
* CCKContextTopic
* CCKBinaryItem
* CCKBinaryType
* CCKScoreItem
* CCKQuantityItem
* /
@Plugin ( {
pluginName : 'ClassKit' ,
plugin : 'cordova-plugin-classkit' ,
pluginRef : 'CordovaClassKit' ,
repo : 'https://github.com/sebastianbaar/cordova-plugin-classkit.git' ,
platforms : [ 'iOS' ]
} )
2019-02-20 17:37:39 +01:00
@Injectable ( {
providedIn : 'root'
} )
2018-07-18 21:48:07 +02:00
export class ClassKit extends IonicNativePlugin {
/ * *
* Init contexts defined in XML file 'CCK-contexts.xml'
* @param { string } urlPrefix URL prefix to use for custom URLs to locate activities ( deeplink ) .
* @return { Promise < any > }
* /
@Cordova ( )
initContextsFromXml ( urlPrefix : string ) : Promise < any > {
return ;
}
/ * *
* Init context with identifier path
* @param { string } urlPrefix URL prefix to use for custom URLs to locate activities ( deeplink ) .
* @param { CCKContext } context Context to initialize .
* @return { Promise < any > }
* /
@Cordova ( )
addContext ( urlPrefix : string , context : CCKContext ) : Promise < any > {
return ;
}
/ * *
* Remove all contexts
* @return { Promise < any > }
* /
@Cordova ( )
removeContexts ( ) : Promise < any > {
return ;
}
/ * *
* Remove context with identifier path
* @param { string [ ] } identifierPath Full identifier path from root , including the context identifier itself .
* @return { Promise < any > }
* /
@Cordova ( )
removeContext ( identifierPath : string [ ] ) : Promise < any > {
return ;
}
/ * *
* Begin a new activity or restart an activity for a given context
* @param { string [ ] } identifierPath Full identifier path from root , including the context identifier itself .
* @param { boolean } asNew Should a new activity be created ( or an old activity be restarted ) .
* @return { Promise < any > }
* /
@Cordova ( )
beginActivity ( identifierPath : string [ ] , asNew : boolean ) : Promise < any > {
return ;
}
/ * *
* End the active activity
* @return { Promise < any > }
* /
@Cordova ( )
endActivity ( ) : Promise < any > {
return ;
}
/ * *
* Adds a progress range to the active given activity
* @param { number } fromStart The beginning of the new range to add . This should be fractional value between 0 and 1 , inclusive .
* @param { number } toEnd The end of the new range to add . This should be larger than the start value and less than or equal to one .
* @return { Promise < any > }
* /
@Cordova ( )
setProgressRange ( fromStart : number , toEnd : number ) : Promise < any > {
return ;
}
/ * *
* Adds a progress to the active given activity
* @param { number } progress A measure of progress through the task , given as a fraction in the range [ 0 , 1 ] .
* @return { Promise < any > }
* /
@Cordova ( )
setProgress ( progress : number ) : Promise < any > {
return ;
}
/ * *
* Adds activity information that is true or false , pass or fail , yes or no
* @param { CCKBinaryItem } binaryItem The binary item to add to the activity .
* @return { Promise < any > }
* /
@Cordova ( )
setBinaryItem ( binaryItem : CCKBinaryItem ) : Promise < any > {
return ;
}
/ * *
* Adds activity information that signifies a score out of a possible maximum
* @param { CCKScoreItem } scoreItem The score item to add to the activity .
* @return { Promise < any > }
* /
@Cordova ( )
setScoreItem ( scoreItem : CCKScoreItem ) : Promise < any > {
return ;
}
/ * *
* Activity information that signifies a quantity .
* @param { CCKQuantityItem } quantityItem The quantity item to add to the activity .
* @return { Promise < any > }
* /
@Cordova ( )
setQuantityItem ( quantityItem : CCKQuantityItem ) : Promise < any > {
return ;
}
}