json 用于VSCode的Velocity Snippets。
用于VSCode的Velocity Snippets。
Velocity.json
{
"Get Item By Id": {
"prefix": "GetItem",
"body": [
"{",
" \"version\": \"2017-02-28\",",
" \"operation\": \"GetItem\",",
" \"key\": {",
" \"id\": \\$util.dynamodb.toDynamoDBJson(\\$ctx.args.id),",
" }",
"}"
],
"description": "Get Item By Id"
},
"List Items": {
"prefix": "Scan",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"Scan\",",
" ## Add 'limit' and 'nextToken' arguments to this field in your schema to implement pagination. **",
" ## \"limit\": \\$util.defaultIfNull(\\${ctx.args.limit}, 20),",
" ## \"nextToken\": \\$util.toJson(\\$util.defaultIfNullOrBlank(\\$ctx.args.nextToken, null))",
"}"
],
"description": "List Items"
},
"Put Item": {
"prefix": "PutItem",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"PutItem\",",
" \"key\" : {",
" ## If object \"id\" should come from GraphQL arguments, change to \\$util.dynamodb.toDynamoDBJson(\\$ctx.args.id)",
" \"id\": \\$util.dynamodb.toDynamoDBJson(\\$util.autoId()),",
" },",
" \"attributeValues\" : \\$util.dynamodb.toMapValuesJson(\\$ctx.args)",
"}"
],
"description": "Put Item"
},
"Put Item With S3": {
"prefix": "PutItem+S3",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"PutItem\",",
" \"key\" : {",
" \"id\" : { \"S\" : \"\\${util.autoId()}\" }",
" },",
" #set( \\$attribs = \\$util.dynamodb.toMapValues(\\$ctx.args) )",
" #if(\\$util.isNull(\\$ctx.args.file.version))",
" #set( \\$attribs.file = \\$util.dynamodb.toS3Object(\\$ctx.args.file.key, \\$ctx.args.file.bucket, \\$ctx.args.file.region))",
" #else",
" #set( \\$attribs.file = \\$util.dynamodb.toS3Object(\\$ctx.args.file.key, \\$ctx.args.file.bucket, \\$ctx.args.file.region, \\$ctx.args.file.version))",
" #end",
" \"attributeValues\" : \\$util.toJson(\\$attribs)",
"}"
],
"description": "Put Item With S3"
},
"Delete Item by ID": {
"prefix": "DeleteItem",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"DeleteItem\",",
" \"key\" : {",
" ## If your table's hash key is not named 'id', update it here. **",
" \"id\" : { \"S\" : \"\\${ctx.args.id}\" }",
" ## If your table has a sort key, add it as an item here. **",
" }",
"}"
],
"description": "Delete Item by ID"
},
"Simple Query": {
"prefix": "Query",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"Query\",",
" \"query\" : {",
" ## Provide a query expression. **",
" \"expression\": \"id = :id\",",
" \"expressionValues\" : {",
" \":id\" : \\$util.dynamodb.toDynamoDBJson(\\$ctx.args.id)",
" }",
" }",
"}"
],
"description": "Simple Query"
},
"Query with greater than expression": {
"prefix": "Query with > expression",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"Query\",",
" \"query\" : {",
" ## Provide a query expression. **",
" \"expression\": \"id = :id and createdAt > :createdAt\",",
" \"expressionValues\" : {",
" \":id\" : {",
" \"S\" : \"\\${ctx.args.id}\"",
" },",
" \":createdAt\": {",
" \"S\": \"\\${ctx.args.createdAt}\"",
" }",
" }",
" }",
"}"
],
"description": "Simple Query with greater than expression"
},
"Query with filter on index expression": {
"prefix": "Query with filter expression",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"Query\",",
" \"index\" : \"name-index\",",
" \"query\" : {",
" \"expression\": \"#name = :name\",",
" \"expressionNames\" : {",
" \"#name\" : \"name\"",
" },",
" \"expressionValues\" : {",
" \":name\" : {",
" \"S\" : \\$util.dynamodb.toDynamoDBJson(\\$ctx.args.name)",
" }",
" }",
" },",
" \"filter\" : {",
" \"expression\" : \"contains(#city, :city)\",",
" \"expressionNames\" : {",
" \"#city\" : \"city\"",
" },",
" \"expressionValues\" : {",
" \":city\" : \\$util.dynamodb.toDynamoDBJson(\\$ctx.args.city)",
" }",
" }",
"}"
],
"description": "Query with filter on index expression"
},
"Query with contains expression": {
"prefix": "Query with contains expression",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"Query\",",
" \"query\" : {",
" ## Provide a query expression. **",
" \"expression\": \"id = :id\",",
" \"expressionValues\" : {",
" \":id\" : {",
" \"S\" : \"\\${ctx.args.id}\"",
" }",
" }",
" },",
" \"filter\": {",
" \"expression\": \"contains(tags, :tag)\",",
" \"expressionValues\" : {",
" \":tag\": {",
" \"S\": \"\\${ctx.args.tag}\"",
" }",
" }",
" }",
"}"
],
"description": "Query with contains expression"
},
"Query items created today": {
"prefix": "Query items created today|date",
"body": [
"#set( \\$todayString = \\$util.time.nowISO8601().substring(0, 10) )",
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"Query\",",
" \"query\" : {",
" ## Provide a query expression. **",
" \"expression\": \"id = :id and begins_with(createdAt, :today)\",",
" \"expressionValues\" : {",
" \":id\" : {",
" \"S\" : \"\\${ctx.args.id}\"",
" },",
" \":today\": {",
" \"S\": \"\\$todayString\"",
" }",
" }",
" }",
"}"
],
"description": "Query items created today"
},
"Simple Query with pagination": {
"prefix": "Query with pagination",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"Query\",",
" \"query\" : {",
" ## Provide a query expression. **",
" \"expression\": \"id = :id\",",
" \"expressionValues\" : {",
" \":id\" : {",
" \"S\" : \"\\${ctx.args.id}\"",
" }",
" }",
" },",
" ## Add 'limit' and 'nextToken' arguments to this field in your schema to implement pagination. **",
" \"limit\": \\$util.defaultIfNull(\\${ctx.args.limit}, 20),",
" \"nextToken\": \\$util.toJson(\\$util.defaultIfNullOrBlank(\\$ctx.args.nextToken, null))",
"}"
],
"description": "Simple Query with pagination"
},
"Batch Get Items": {
"prefix": "BatchGetItems",
"body": [
"#set(\\$ids = [])",
"#foreach(\\$id in \\${ctx.args.ids})",
" #set(\\$map = {})",
" \\$util.qr(\\$map.put(\"id\", \\$util.dynamodb.toString(\\$id)))",
" \\$util.qr(\\$ids.add(\\$map))",
"#end",
"",
"{",
" \"version\" : \"2018-05-29\",",
" \"operation\" : \"BatchGetItem\",",
" \"tables\" : {",
" ## Note: \\${sampleTableName} was defined in substitutions field.",
" \"\\${sampleTableName}\": {",
" \"keys\": \\$util.toJson(\\$ids),",
" \"consistentRead\": true",
" }",
" }",
"}"
],
"description": "Batch Get Items"
},
"Batch Put Items": {
"prefix": "BatchPutItems",
"body": [
"#set(\\$postsdata = [])",
"#foreach(\\$item in \\${ctx.args.posts})",
" \\$util.qr(\\$postsdata.add(\\$util.dynamodb.toMapValues(\\$item)))",
"#end",
"",
" ## Note: \\${sampleTableName} was defined in substitutions field.",
"{",
" \"version\" : \"2018-05-29\",",
" \"operation\" : \"BatchPutItem\",",
" \"tables\" : {",
" \"\\${sampleTableName}\": \\$utils.toJson(\\$postsdata)",
" }",
"}"
],
"description": "Batch Put Items"
},
"Batch Delete Items": {
"prefix": "BatchDeleteItems",
"body": [
"#set(\\$ids = [])",
"#foreach(\\$id in \\${ctx.args.ids})",
" #set(\\$map = {})",
" \\$util.qr(\\$map.put(\"id\", \\$util.dynamodb.toString(\\$id)))",
" \\$util.qr(\\$ids.add(\\$map))",
"#end",
"",
"## Note: \\${sampleTableName} was defined in substitutions field.",
"{",
" \"version\" : \"2018-05-29\",",
" \"operation\" : \"BatchDeleteItem\",",
" \"tables\" : {",
" \"\\${sampleTableName}\": \\$util.toJson(\\$ids)",
" }",
"}"
],
"description": "Batch Delete Items"
},
"Cognito group access": {
"prefix": "Cognito Group Access Authorization",
"body": [
"#set(\\$expression = \"\")",
"#set(\\$expressionValues = {})",
"#foreach(\\$group in \\$ctx.identity.claims.get(\"cognito:groups\"))",
" #set( \\$expression = \"\\${expression} contains(groupsCanAccess, :var\\$foreach.count )\" )",
" #set( \\$val = {})",
" #set( \\$test = \\$val.put(\"S\", \\$group))",
" #set( \\$values = \\$expressionValues.put(\":var\\$foreach.count\", \\$val))",
" #if ( \\$foreach.hasNext )",
" #set( \\$expression = \"\\${expression} OR\" )",
" #end",
"#end",
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"Scan\",",
" \"filter\":{",
" \"expression\": \"\\$expression\",",
" \"expressionValues\": \\$utils.toJson(\\$expressionValues)",
" }",
"}"
],
"description": "Cognito group access"
},
"Put Item with cognito identity": {
"prefix": "PutItem with Owner Identity",
"body": [
"#set( \\$attributes = \\$util.dynamodb.toMapValues(\\$ctx.args) )",
"\\$util.qr(\\$attributes.put(\"$Identity\", \\$ctx.identity.cognitoIdentityId))",
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"PutItem\",",
" \"key\" : {",
" \"id\" : { \"S\" : \"\\${context.args.id}\" }",
" },",
" \"attributeValues\": \\$util.toJson(\\$attributes)",
"}"
],
"description": "Put Item with cognito identity"
},
"Delete Item with cognito identity": {
"prefix": "DeleteItem with Owner Identity",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"DeleteItem\",",
" \"key\" : {",
" \"id\" : { \"S\" : \"\\${context.args.id}\" }",
" },",
" \"condition\" : {",
" \"expression\" : \"contains($Owner,:expectedOwner)\",",
" \"expressionValues\" : {",
" \":expectedOwner\" : { \"S\" : \"\\${context.identity.username}\" }",
" }",
" }",
"}"
],
"description": "Delete Item with cognito identity"
},
"Put Item offline enabled": {
"prefix": "PutItem Offline",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"PutItem\",",
" \"key\": {",
" \"id\": { \"S\" : \"\\$utils.autoId()\"}",
" },",
" #set( \\$attribs = \\$util.dynamodb.toMapValues(\\$ctx.args) )",
" \\$util.qr(\\$attribs.remove(\"relayState\"))",
" #set( \\$attribs.version = { \"N\" : 1 } )",
" \"attributeValues\" : \\$util.toJson(\\$attribs)",
"}"
],
"description": "Put Item offline enabled"
},
"Conditional Update with version": {
"prefix": "UpdateItem with version",
"body": [
"{",
" \"version\" : \"2017-02-28\",",
" \"operation\" : \"UpdateItem\",",
" \"key\" : {",
" \"id\" : \\$util.dynamodb.toDynamoDBJson(\\$ctx.args.id)",
" },",
"",
" ## Set up some space to keep track of things we're updating **",
" #set( \\$expNames = {} )",
" #set( \\$expValues = {} )",
" #set( \\$expSet = {} )",
" #set( \\$expAdd = {} )",
" #set( \\$expRemove = [] )",
"",
" ## Increment \"version\" by 1 **",
" \\$!{expAdd.put(\"version\", \":one\")}",
" \\$!{expValues.put(\":one\", \\$util.dynamodb.toDynamoDB(1))}",
"",
" ## Iterate through each argument, skipping \"id\" and \"expectedVersion\" **",
" #foreach( \\$entry in \\$util.map.copyAndRemoveAllKeys(\\$ctx.args, [\"id\",\"expectedVersion\"]).entrySet() )",
" #if( \\$util.isNull(\\$entry.value) )",
" ## If the argument is set to \"null\", then remove that attribute from the item in DynamoDB **",
"",
" #set( \\$discard = \\${expRemove.add(\"#\\${entry.key}\")} )",
" \\$!{expNames.put(\"#\\${entry.key}\", \"\\${entry.key}\")}",
" #else",
" ## Otherwise set (or update) the attribute on the item in DynamoDB **",
"",
" \\$!{expSet.put(\"#\\${entry.key}\", \":\\${entry.key}\")}",
" \\$!{expNames.put(\"#\\${entry.key}\", \"\\${entry.key}\")}",
" \\$!{expValues.put(\":\\${entry.key}\", \\$util.dynamodb.toDynamoDB(\\$entry.value))}",
" #end",
" #end",
"",
" ## Start building the update expression, starting with attributes we're going to SET **",
" #set( \\$expression = \"\" )",
" #if( !\\${expSet.isEmpty()} )",
" #set( \\$expression = \"SET\" )",
" #foreach( \\$entry in \\$expSet.entrySet() )",
" #set( \\$expression = \"\\${expression} \\${entry.key} = \\${entry.value}\" )",
" #if ( \\$foreach.hasNext )",
" #set( \\$expression = \"\\${expression},\" )",
" #end",
" #end",
" #end",
"",
" ## Continue building the update expression, adding attributes we're going to ADD **",
" #if( !\\${expAdd.isEmpty()} )",
" #set( \\$expression = \"\\${expression} ADD\" )",
" #foreach( \\$entry in \\$expAdd.entrySet() )",
" #set( \\$expression = \"\\${expression} \\${entry.key} \\${entry.value}\" )",
" #if ( \\$foreach.hasNext )",
" #set( \\$expression = \"\\${expression},\" )",
" #end",
" #end",
" #end",
"",
" ## Continue building the update expression, adding attributes we're going to REMOVE **",
" #if( !\\${expRemove.isEmpty()} )",
" #set( \\$expression = \"\\${expression} REMOVE\" )",
"",
" #foreach( \\$entry in \\$expRemove )",
" #set( \\$expression = \"\\${expression} \\${entry}\" )",
" #if ( \\$foreach.hasNext )",
" #set( \\$expression = \"\\${expression},\" )",
" #end",
" #end",
" #end",
"",
" ## Finally, write the update expression into the document, along with any expressionNames and expressionValues **",
" \"update\" : {",
" \"expression\" : \"\\${expression}\",",
" #if( !\\${expNames.isEmpty()} )",
" \"expressionNames\" : \\$utils.toJson(\\$expNames),",
" #end",
" #if( !\\${expValues.isEmpty()} )",
" \"expressionValues\" : \\$utils.toJson(\\$expValues),",
" #end",
" },",
"",
" \"condition\" : {",
" \"expression\" : \"version = :expectedVersion\",",
" \"expressionValues\" : {",
" \":expectedVersion\" : \\$util.dynamodb.toDynamoDBJson(\\$ctx.args.expectedVersion)",
" }",
" }",
"}"
],
"description": "Conditional Update with version"
},
"Return single item": {
"prefix": "Return single item",
"body": [
"## Pass back the result from DynamoDB. **",
"\\$util.toJson(\\$ctx.result)"
],
"description": "return single item"
},
"Return a list of results": {
"prefix": "Return list",
"body": ["\\$util.toJson(\\$ctx.result.items)"],
"description": "Return a list of results"
},
"Return paginated results": {
"prefix": "Return paginated results",
"body": [
"{",
" \"items\": \\$util.toJson(\\$ctx.result.items),",
" \"nextToken\": \\$util.toJson(\\$util.defaultIfNullOrBlank(\\$context.result.nextToken, null))",
"}"
],
"description": "Return paginated results"
},
"Return batch response": {
"prefix": "Return Batch Response",
"body": [
"## Batch results are available in $context.result.data as name of the table (TABLENAME below)",
"## Read more: https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html",
"",
"\\$util.toJson(\\$ctx.result.data.${1:TABLENAME})"
],
"description": "Return batch response"
},
"Return batch response with error handling": {
"prefix": "Return Batch Response + Error Handling",
"body": [
"## Batch results are available in \\$context.result.data as name of the table (TABLENAME below)",
"## If there was an error with invocation there may be partial results in \\$ctx.error object",
"## You can append an error for that field in GraphQL response along with successful data",
"## Read more: https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html",
"",
"#if(\\$ctx.error)",
" \\$utils.appendError(\\$ctx.error.message, \\$ctx.error.message)",
"#end",
"\\$utils.toJson(\\$ctx.result.data)"
],
"description": "Return batch response with error handling"
},
"Return only my owned records": {
"prefix": "Return Owner Records",
"body": [
"#set(\\$myResults = [])",
"#foreach(\\$item in \\$ctx.result.items)",
" ## For Cognito User Pools use \\$ctx.identity.username instead",
" #if(\\$item.Owner == \\$ctx.identity.cognitoIdentityId)",
" #set(\\$added = \\$myResults.add(\\$item))",
" #end",
"#end",
"\\$utils.toJson(\\$myResults)"
],
"description": "Return only own records"
},
"Return a single record if public": {
"prefix": "Return Single Record If Public",
"body": [
"#if(\\$ctx.result.public == 'yes')",
" \\$utils.toJson(\\$ctx.result)",
"#else",
" \\$utils.unauthorized()",
"#end"
],
"description": "Return a single record if public"
},
"Return record if viewable by my groups": {
"prefix": "Return Record If Viewable By My Groups",
"body": [
"#set(\\$permissions = \\$ctx.result.GroupsCanAccess)",
"#set(\\$claimPermissions = \\$ctx.identity.claims.get(\"cognito:groups\"))",
"",
"#foreach(\\$per in \\$permissions)",
" #foreach(\\$cgroups in \\$claimPermissions)",
" #if(\\$cgroups == \\$per)",
" #set(\\$hasPermission = true)",
" #end",
" #end",
"#end",
"",
"#if(\\$hasPermission)",
" \\$utils.toJson(\\$ctx.result)",
"#else",
" \\$utils.unauthorized()",
"#end"
],
"description": "Return record if viewable by my groups"
},
"Return a list of public records": {
"prefix": "Return A List Of Public Records",
"body": [
"#set(\\$publicRecords = [])",
"#foreach(\\$item in \\$ctx.result.items)",
" #if(\\$item.public == 'yes')",
" #set(\\$added = \\$publicRecords.add(\\$item))",
" #end",
"#end",
"\\$utils.toJson(\\$publicRecords)"
],
"description": "Return a list of public records"
},
"Return Offline enabled response": {
"prefix": "Return Offline Enabled Response",
"body": [
"\\$util.qr(\\$context.result.put(\"relayState\", \"\\$context.arguments.relayState\"))",
"\\$util.toJson(\\$context.result)"
],
"description": "Return Offline enabled response"
}
}
json LeanSwift演示AR应用程序配置(dev-config.json)版本:7.3.0
LeanSwift DEMO环境AR App配置<br/>版本:7.3.0
dev-config.json
{
"name": "AccountsReceivable",
"description": "AccountsReceivableDesc",
"version": "7.3.0-BUILD20190702",
"environment": "DEMO",
"inforIONAPI": {
"URL": "https://nicaragua.leanswift.com/InforIntSTS",
"grant_type": "password",
"username": "infor#TZCF1HLWnLH2SvKU36Hox64ji2cFYBT-8PPFWkXFUxMyyFM0AXEjRLgQAlL7My_mSaHPRrP8W34C_TFT4pbbdw",
"password": "lLoVh7x70xxnfj3_ZpyNI2-PhKV_H75Z4GAYoCOOlwDznj89AKkjdB-kCl5y3g_vZ4V_FFGzHbWsp2v7-3C9Vg",
"client_id": "infor~Db3_AEn3yLdfBGSF7fvVDArngEriNXi5GkfmcoG16gU",
"client_secret": "xxeWt32DIPRJGd3Ap2c1BkVsL20SqhYId7IGLkSOj5siG4qyJjPXtLQ_RGhZeTOPTnCPvqqph39ghjLDuF5mqg",
"access_token_url": "connect/token"
},
"inforIDMAPI": {
"URL": "https://nicaragua.leanswift.com:7443/infor/IDM/api"
},
"inforM3API": {
"URL": "https://<HostName>:7443/infor/M3/M3/m3api-rest/v2/execute"
},
"companyId": "0000000000000001",
"apiKey": "c60d08c89e35cc9d",
"defaultLanguage": "en-US",
"defaultThemeId": "1",
"defaultTextureId": "1",
"faviconURL": "img/favicon.png",
"appLogoURL": "img/accounts-receivable.png",
"showThemeSelection": "true",
"showWallpaperSelection": "true",
"showLanguageSelection": "true",
"excludeThemes": [],
"excludeWallpapers": [],
"excludeLanguages": [],
"excludeModules": [],
"appConfig": {
"searchQuery": {},
"ticklerNotesByInvoice": true,
"globalDateFormat": "MM/dd/yy",
"invoiceIDMEntity1": "OIS199PF",
"invoiceIDMAttribute1": "M3EXIN",
"invoiceM3Attribute1": "ESCINO",
"labelForInvoiceIDM1": "Invoice",
"enableInvoiceIDM1": true,
"invoiceIDMEntity2": "ARS169PF",
"invoiceIDMAttribute2": "M3EXIN",
"invoiceM3Attribute2": "ESCINO",
"labelForInvoiceIDM2": "Interest Inv",
"enableInvoiceIDM2": true,
"netInvoices": "true",
"nettingCode": "ARN",
"displayUserDefinedField0": "true",
"labelForUserDefinedField0": null,
"displayUserDefinedField1": "true",
"labelForUserDefinedField1": null,
"displayUserDefinedField2": "true",
"labelForUserDefinedField2": null,
"displayUserDefinedField3": "true",
"labelForUserDefinedField3": null,
"displayUserDefinedField4": "true",
"labelForUserDefinedField4": null,
"displayUserDefinedField5": "true",
"labelForUserDefinedField5": null,
"displayUserDefinedField6": "true",
"labelForUserDefinedField6": null,
"displayUserDefinedField7": "true",
"labelForUserDefinedField7": null,
"displayUserDefinedField8": "true",
"labelForUserDefinedField8": null,
"displayUserDefinedField9": "true",
"labelForUserDefinedField9": null,
"invoiceCheckNumberOffsetFromARInfo": "0",
"enableM3Authority": false,
"allowSaveData": true,
"allowCreditChange": true,
"allowCreditRelease": true,
"allowTicklerNotes": true,
"customerSearchIESQuery": "SearchFields:CUNO;CUNM;PHNO;SMCD;PYNO",
"useCustomAPIForCreditReleaseCOStop": true,
"useCustomAPIToRetriveTicklerNotes": true,
"useCustomAPIToUpdateTicklerNotes": true
}
}
json Master Halco PROD - AR app配置版本:7.3.0
Master Halco PROD环境AR App配置版本:7.3.0
dev-config.json
{
"name": "AccountsReceivable",
"description": "AccountsReceivableDesc",
"version": "7.3.0-BUILD20190702",
"environment": "PROD",
"inforIONAPI": {
"URL": "https://mhprod.cloud.infor.com/InforIntSTS",
"grant_type": "password",
"username": "infor#5KIX-xkwC9TPnI561tR-QTB7TInWW9tQDQq2PCFPzrmt_Yck3fYyEe7HldjaealCP8u-_qR1HVco0qXp42_tyg",
"password": "RhornadkP35NBP4TCKd0e-ZEjH6IFBE2GEvXFFmfGVoHST0B0adzNQsq8tHm1nNsZhHPd8u-j35p3WhMqK9i4Q",
"client_id": "infor~08Pg34_0ymHeXWWMOpwLne_1JRLTPzzRGybXs5HodAQ",
"client_secret": "3q8eFVUtHgyxuIvCJI996EGt8NzP99yyutO6bvw4t5HwzX2093dd2DkKs15cLfz6DIvZ_fV4ri2Ymnn13Yvz9A",
"access_token_url": "connect/token"
},
"inforIDMAPI": {
"URL": "https://mhprod.cloud.infor.com:7443/infor/IDM/api"
},
"inforM3API": {
"URL": "https://<HostName>:7443/infor/M3/M3/m3api-rest/v2/execute"
},
"companyId": "0000000000000137",
"apiKey": "c60d08c89e35cc9d",
"defaultLanguage": "en-US",
"defaultThemeId": "1",
"defaultTextureId": "1",
"faviconURL": "img/favicon.png",
"appLogoURL": "img/accounts-receivable.png",
"showThemeSelection": "true",
"showWallpaperSelection": "true",
"showLanguageSelection": "true",
"excludeThemes": [],
"excludeWallpapers": [],
"excludeLanguages": [],
"excludeModules": [],
"appConfig": {
"searchQuery": {},
"ticklerNotesByInvoice": true,
"globalDateFormat": "MM/dd/yy",
"invoiceIDMEntity1": "OIS199PF",
"invoiceIDMAttribute1": "M3EXIN",
"invoiceM3Attribute1": "ESCINO",
"labelForInvoiceIDM1": "Invoice",
"enableInvoiceIDM1": true,
"invoiceIDMEntity2": "ARS169PF",
"invoiceIDMAttribute2": "M3EXIN",
"invoiceM3Attribute2": "ESCINO",
"labelForInvoiceIDM2": "Interest Inv",
"enableInvoiceIDM2": true,
"netInvoices": "true",
"nettingCode": "ARN",
"displayUserDefinedField0": "true",
"labelForUserDefinedField0": null,
"displayUserDefinedField1": "true",
"labelForUserDefinedField1": null,
"displayUserDefinedField2": "true",
"labelForUserDefinedField2": null,
"displayUserDefinedField3": "true",
"labelForUserDefinedField3": null,
"displayUserDefinedField4": "true",
"labelForUserDefinedField4": null,
"displayUserDefinedField5": "true",
"labelForUserDefinedField5": null,
"displayUserDefinedField6": "true",
"labelForUserDefinedField6": null,
"displayUserDefinedField7": "true",
"labelForUserDefinedField7": null,
"displayUserDefinedField8": "true",
"labelForUserDefinedField8": null,
"displayUserDefinedField9": "true",
"labelForUserDefinedField9": null,
"invoiceCheckNumberOffsetFromARInfo": "0",
"enableM3Authority": false,
"allowSaveData": true,
"allowCreditChange": true,
"allowCreditRelease": true,
"allowTicklerNotes": true,
"customerSearchIESQuery": "SearchFields:CUNO;CUNM;PHNO;SMCD;PYNO;CUST",
"useCustomAPIForCreditReleaseCOStop": true,
"useCustomAPIToRetriveTicklerNotes": true,
"useCustomAPIToUpdateTicklerNotes": true
}
}
json nodemon的VSCode调试设置
launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "nodemon",
"runtimeExecutable": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
"program": "${workspaceFolder}/app.js",
"restart": true,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}]
}
json vscode-个人的一些设置
vscode-个人的一些设置
vscode-.json
{
"workbench.colorTheme": "One Dark Pro",
"editor.fontSize": 16,
"workbench.startupEditor": "newUntitledFile",
"window.zoomLevel": 0,
"explorer.confirmDelete": false,
"git.ignoreMissingGitWarning": true,
"python.pythonPath": "/Users/mf/PyEnvs/base/bin/python",
"python.venvPath": "~/PyEnvs",
"git.enableSmartCommit": true,
"explorer.confirmDragAndDrop": false,
"[json]": {
"editor.defaultFormatter": "HookyQR.beautify"
},
"workbench.iconTheme": "vscode-icons-mac",
"editor.fontFamily": "Fira Code",
"editor.fontLigatures": true
}
json 个人的vscode的代码片段
个人的vscode的代码片段
vscode-coder.json
{
"print to info": {
"prefix": "info",
"body": [
"# __author__: Mai feng",
"# __file_name__: $TM_FILENAME",
"# __time__: $CURRENT_YEAR:$CURRENT_MONTH:$CURRENT_DATE:$CURRENT_HOUR:$CURRENT_MINUTE",
],
"description": "info output to console"
},
"print to note": {
"prefix": "note",
"body": [
"'''$1",
"'''"
],
"description": "note output to console"
}
}
json babel,sass,npm-run-all
babel,sass,npm-run-all
package.json
{
"devDependencies": {
"babel-cli": "^6.10.1",
"babel-preset-es2015": "^6.9.0",
"babel-preset-stage-0": "^6.5.0",
"node-sass": "^3.8.0",
"npm-run-all": "^2.2.2"
},
"babel": {
"presets": [
"es2015",
"stage-0"
]
},
"scripts": {
"dev": "npm-run-all -s sass:build -p babel sass:watch",
"babel": "babel -w src/js -d dist/js",
"sass:build": "node-sass src/css -o dist/css",
"sass:watch": "node-sass -w src/css -o dist/css"
}
}
json 频道菜单h5帧演示
频道菜单h5帧演示
menu_choice_frame_demo.json
"585":{"appId":"","httpMethod":"GET","uriMenuType":"CORDOVA","code":"BUPM-PHONE-CUSTOMER-POTENTIAL","inactiveTime":"","uri":"/followup/pages/module_newPotentialCustomerBf/index.html?menuCode=BUPM-PHONE-CUSTOMER-POTENTIAL&pMenuCode=BUPM-PHONE-CUSTOMER","id":585,"parentId":275,"description":"我的潜在顾客","name":"我的潜在顾客","noAuthAttr":{},"active":true,"authAttr":{"dealerType":["11","21","22","23","24"]},"attributes":{"toolbarItem":false,"iconUri":"","helpUri":"{\"navigationBar\":1}","ordered":585,"openMode":"normal"},"effectiveTime":"1493019378000","group":false}
json eigoKits
eigoKits
eigoTips.json
{
"solve": "work through",
"like": "a fan of/be into",
"talk about": "talk through",
"contact": "get hold of",
"finally": "end up doing",
"exercise": "work out",
"discuss": "go through/over",
"read": "go through/over",
"refuse": "turn down",
"support": "go for/get behind",
"fire": "let...go",
"get ready": "gear up",
"agreement": "buy in",
"accept": "approve of",
"agree": "approve of",
"arrange": "get in",
"I'm fine": "I'm good/great",
"No.": "I don't think so./I'm good.",
"currently": "at this point",
"at that time": "at that point",
"then": "at that point",
"at some time": "at some point",
"seldom": "rarely",
"so far": "thus far/up to date",
"in the future": "down the road",
"from now on": "going/moving forward",
"related to": "pertaining to",
"doing": "in the middle of doing",
"while": "whereas",
"make sense": "add up",
"make progress": "get traction",
"colleagues": "coworker",
"in summary": "in a nutshell",
"employees": "workforce",
"go to": "head to",
"don't understand": "over my head",
"under": "underneath",
"table": "matrix",
"Excel": "spreadsheet",
"hope": "promise",
"I think": "I guess",
"come up with": "figure out",
"futhermore": "on top of that",
"face": "tackle",
"talk": "speak",
"method": "approach",
"way": "approach",
"go on": "move on",
"appear like": "come across like",
"all people": "across the board",
"That's all": "All right",
"OK": "sounds good",
"if so": "if that's the case",
"your decision": "up to you/your call/at your discretion",
"discuss with you": "run by you/bounce off you"
}
eigoTipsList.json
[
{
"phrase":"solve",
"synonym":"work through",
"desc":"We can work through the problem if we have time",
"type":"10"
},
{
"phrase":"like",
"synonym":"a fan of/be into",
"desc":"I'm a fan of pizza",
"type":"10"
},
{
"phrase":"talk about",
"synonym":"talk through",
"desc":"talk through 包含讨论的意思",
"type":"10"
},
{
"phrase":"contact",
"synonym":"get hold of",
"desc":"I couldn't get hold of Mike",
"type":"10"
},
{
"phrase":"finally",
"synonym":"end up doing",
"desc":"He ended up marrying his high school sweetheart",
"type":"10"
},
{
"phrase":"exercise",
"synonym":"work out",
"desc":"I work out twice a week at a gym",
"type":"10"
},
{
"phrase":"discuss",
"synonym":"go through/over",
"desc":"We'll need to go through this issue in the meeting",
"type":"10"
},
{
"phrase":"read",
"synonym":"go through/over",
"desc":"We'll need to go through this issue in the meeting",
"type":"10"
},
{
"phrase":"refuse",
"synonym":"turn down",
"desc":"",
"type":"10"
},
{
"phrase":"support",
"synonym":"go for/get behind",
"desc":"The proposal may succeed if more people get behind it",
"type":"10"
},
{
"phrase":"fire",
"synonym":"let...go",
"desc":"委婉说法",
"type":"10"
},
{
"phrase":"get ready",
"synonym":"gear up",
"desc":"We are geared up for the challenge",
"type":"10"
},
{
"phrase":"agreement",
"synonym":"buy in",
"desc":"通常用法是 get your buy in,就是get your agreement的意思",
"type":"10"
},
{
"phrase":"accept",
"synonym":"approve of",
"desc":"I don't approve of the proposal",
"type":"10"
},
{
"phrase":"agree",
"synonym":"approve of",
"desc":"I don't approve of the proposal",
"type":"10"
},
{
"phrase":"arrange",
"synonym":"set up",
"desc":"安排会议或接待:set up a meeting/set him in the meeting room",
"type":"10"
},
{
"phrase":"arrive",
"synonym":"get in",
"desc":"一般指办公室或家里:When you get in tomorrow morning, please come to my office",
"type":"10"
},
{
"phrase":"I'm fine",
"synonym":"I'm good/great",
"desc":"回答How are you",
"type":"10"
},
{
"phrase":"No.",
"synonym":"I don't think so./I'm good./I'm afraid not",
"desc":"委婉表达No,回答 Do you have any other question?",
"type":"10"
},
{
"phrase":"here/out",
"synonym":"in town/out of town",
"desc":"How long are you in town for?",
"type":"10"
},
{
"phrase":"currently",
"synonym":"at this point",
"desc":"At this point, we are the best ranked football team in the country.",
"type":"10"
},
{
"phrase":"at that time",
"synonym":"at that point",
"desc":"At that point I didn't realize she was crying",
"type":"10"
},
{
"phrase":"then",
"synonym":"at that point",
"desc":"At that point I didn't realize she was crying",
"type":"10"
},
{
"phrase":"at some time",
"synonym":"at some point",
"desc":"Let's talk about it at some point",
"type":"10"
},
{
"phrase":"seldom",
"synonym":"rarely",
"desc":"用rarely更多",
"type":"10"
},
{
"phrase":"so far",
"synonym":"thus far/up to date",
"desc":"",
"type":"10"
},
{
"phrase":"in the future",
"synonym":"down the road",
"desc":"There will be a lot of challenges down the road",
"type":"10"
},
{
"phrase":"from now on",
"synonym":"going/moving forward",
"desc":"Going forward, we'll pay more attention to it",
"type":"10"
},
{
"phrase":"related to",
"synonym":"pertaining to",
"desc":"Anything pertaining to my project, please let me know",
"type":"10"
},
{
"phrase":"doing",
"synonym":"in the middle of doing",
"desc":"I'm in the middle of a meeting=I'm having a meeting, when my boss called",
"type":"10"
},
{
"phrase":"while",
"synonym":"whereas",
"desc":"You eat a huge plate of food for",
"type":"10"
},
{
"phrase":"make sense",
"synonym":"add up",
"desc":"make sense很普遍,add up意思相同",
"type":"10"
},
{
"phrase":"make progress",
"synonym":"get traction",
"desc":"We are getting traction on this issue",
"type":"10"
},
{
"phrase":"colleagues",
"synonym":"coworker",
"desc":"美国用coworker较多",
"type":"10"
},
{
"phrase":"in summary",
"synonym":"in a nutshell",
"desc":"",
"type":"10"
},
{
"phrase":"employees",
"synonym":"workforce",
"desc":"The office's entire workforce is devoted to a single project right now",
"type":"10"
},
{
"phrase":"go to",
"synonym":"head to",
"desc":"headed/heading 都行;head to 某个具体位置;head for 某个方向;I'm heading/headed to/for the bus station 都行",
"type":"10"
},
{
"phrase":"don't understand",
"synonym":"over my head",
"desc":"It's over my head",
"type":"10"
},
{
"phrase":"under",
"synonym":"underneath",
"desc":"underneath 比 under更常见",
"type":"10"
},
{
"phrase":"table",
"synonym":"matrix",
"desc":"电子表格中的table可以用matrix标识",
"type":"10"
},
{
"phrase":"Excel",
"synonym":"spreadsheet",
"desc":"excel中每张表叫spreadsheet",
"type":"10"
},
{
"phrase":"hope",
"synonym":"promise",
"desc":"I see no promise in this project",
"type":"10"
},
{
"phrase":"I think",
"synonym":"I guess",
"desc":"用I guess较多,委婉。I guess we need to go now",
"type":"10"
},
{
"phrase":"come up with",
"synonym":"figure out",
"desc":"figure out a solution",
"type":"10"
},
{
"phrase":"futhermore",
"synonym":"on top of that",
"desc":"We missed the bus, and on top of that it started raining",
"type":"10"
},
{
"phrase":"face",
"synonym":"tackle",
"desc":"We have a lot of issues to tackle",
"type":"10"
},
{
"phrase":"talk",
"synonym":"speak",
"desc":"用speak似乎比talk多,I spoke to Kevin in this morning and he agreed",
"type":"10"
},
{
"phrase":"method",
"synonym":"approach",
"desc":"This is the best approach to solve the problem",
"type":"10"
},
{
"phrase":"way",
"synonym":"approach",
"desc":"This is the best approach to solve the problem",
"type":"10"
},
{
"phrase":"go on",
"synonym":"move on",
"desc":"let's move on,表示上一件事结束了,准备继续下一个",
"type":"10"
},
{
"phrase":"appear like",
"synonym":"come across like",
"desc":"You always come across like a madman to people./She comes across like the Queen of the Nile to most people who meet her.",
"type":"10"
},
{
"phrase":"all people",
"synonym":"across the board",
"desc":"We got a pay increase across the board",
"type":"10"
},
{
"phrase":"That's all",
"synonym":"All right",
"desc":"打电话结束时说 All right",
"type":"10"
},
{
"phrase":"OK",
"synonym":"sounds good",
"desc":"能够用OK都可以用sounds good",
"type":"10"
},
{
"phrase":"if so",
"synonym":"if that's the case",
"desc":"",
"type":"10"
},
{
"phrase":"your decision",
"synonym":"up to you/your call/at your discretion",
"desc":"It's up to you./It's your call./It's at your discretion.",
"type":"10"
},
{
"phrase":"discuss with you",
"synonym":"run by you/bounce off you",
"desc":"I have an idea to run by you./I have an idea to bounce off you.",
"type":"10"
}
]
json [智利] - 示例de busca de placas
[智利] - 示例de busca de placas
plate-search.json
{
"payload": {
"provider": null,
"vin": null,
"plate": "HTKZ88",
"assembly": "2016",
"year": "2016",
"engine": "1.2",
"doors": "5",
"make": {
"id": "2079",
"name": "PEUGEOT"
},
"model": {
"id": "72161",
"name": "208"
},
"version": null,
"color": null,
"fuel": null,
"kind": null,
"bodyType": {
"id": "3",
"name": "Hatchback"
},
"origin": {
"id": "2",
"name": "Importado"
},
"original": null
},
"status": true,
"messages": [],
"messagesLite": [],
"meta": {
"requestTime": 0.80060195922852,
"memoryPeak": "2 mb",
"memoryUsage": "1012.81 kb"
}
}