name.st 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. Smalltalk createPackage: '{%= name %}'!
  2. (Smalltalk packageAt: '{%= name %}' ifAbsent: [ self error: 'Package not created: {%= name %}' ]) imports: {'amber/jquery/Wrappers-JQuery'. 'amber/web/Web'. 'silk/Silk'}!
  3. Object subclass: #{%= name %}
  4. slots: {}
  5. package: '{%= name %}'!
  6. !{%= name %} methodsFor: 'action'!
  7. alert: aString after: aNumberOfMilliseconds
  8. [ Terminal alert: aString ] valueWithTimeout: aNumberOfMilliseconds
  9. !
  10. doAmberWith
  11. | tag |
  12. tag := (HTMLCanvas onJQuery: '#output-list' asJQuery) root.
  13. tag with: [ :html | html li with: 'Amber Web #with: added me!!' ]
  14. !
  15. doConsoleLog
  16. | greeting target |
  17. greeting := 'Hello'.
  18. target := 'world'.
  19. console log: #{ #greeting -> greeting. #target -> target. #callback -> [ console log: greeting, ', ', target, '!!' ] }
  20. !
  21. doInspectStatus
  22. (self getApi: '/status')
  23. then: {#json. #inspect}
  24. catch: [ :err | Terminal alert: err ]
  25. !
  26. doJQueryAppend
  27. '#output-list' asJQuery append: '<li>jQuery append added me!!</li>'
  28. !
  29. doSilkTAG
  30. '#output-list' asSilk LI: 'Silk TAG: added me!!'
  31. ! !
  32. !{%= name %} methodsFor: 'backend'!
  33. endpoint
  34. "Return something like 'https://<char mess>.execute-api.eu-central-1.amazonaws.com/default'"
  35. ^ self error: 'Not yet implemented'
  36. !
  37. getApi: path
  38. ^ fetch value: self endpoint, path
  39. ! !
  40. !{%= name %} methodsFor: 'starting'!
  41. augmentPage
  42. '#lambda-status' asSilk on: #click bind: [ self doInspectStatus ].
  43. '#console-log' asSilk on: #click bind: [ self doConsoleLog ].
  44. '#timeout-alert' asSilk on: #click bind: [ self alert: 'REMINDER!!' after: 5000 ].
  45. '#amber-with' asJQuery click: [ self doAmberWith ].
  46. '#silk-tag' asSilk on: #click bind: [ self doSilkTAG ].
  47. '#jquery-append' asJQuery click: [ self doJQueryAppend ]
  48. ! !
  49. !{%= name %} class methodsFor: 'starting'!
  50. start
  51. self new augmentPage
  52. ! !