SlideShare a Scribd company logo
View Components in Rails



                Harun Pathan
                @harunpathan
Component
render_component
render_component



     Deprecated
View Directory Structure
View Directory Structure
But what happens when you have
unrelated sections on your main
              view




                                  5
7
What if
CMS is
used?




          10
What if
CMS is
used?

          How do
          we Mash
            Up?

                    10
How do we handle this?
How do we handle this?



Consider only one page with one
       unrelated section
How do we handle this?
How do we handle this?
How do we handle this?
How do we handle this?

What if some unrelated sections
  are used on all the pages?
How do we handle this?

What if some unrelated sections
  are used on all the pages?



What if there are many unrelated
            sections?
What happens to Views?
What happens to Views?

 Partials
What happens to Views?

 Partials
What happens to Views?

 Partials

 Some more partials
What happens to Views?

 Partials

 Some more partials
What happens to Views?

 Partials

 Some more partials

 And some more partials and so on…
Options
Merb Parts

   Rails Parts


Cells and Apotomo
Cells
Cells
Cells
Cells
Cells
Generators
Cells
Generators
Cells
Generators
Caching
Caching
Caching




Expiration in Sweepers
Cells

 Nested Cells
Cells

 Nested Cells
Cells

 Nested Cells

 View inheritance
Cells

 Nested Cells

 View inheritance
Cells

 Nested Cells

 View inheritance

 No doubleRenderError
Cells

 Nested Cells

 View inheritance

 No doubleRenderError
Hold on… there is more
Hold on… there is more


      APOTOMO
Reusable
Persistent


              APOTOMO

                            Events
Independent



                                     29
 Dashboards

 Image galleries

 Auto-Completion boxes

 AddressBooks

 TabPanels

 Social Components like Ratings/Comments
Apotomo
Apotomo
Apotomo
Apotomo
Apotomo
Apotomo
Apotomo




git://github.com/hpathan/apotomo-examples.git
Apotomo




git://github.com/hpathan/apotomo-examples.git
Apotomo




git://github.com/hpathan/apotomo-examples.git
Apotomo




git://github.com/hpathan/apotomo-examples.git
Apotomo




git://github.com/hpathan/apotomo-examples.git
Apotomo
    Index.html.erb




git://github.com/hpathan/apotomo-examples.git
Apotomo - Events
Example

    => Create a new note and Update
    listing and counter

    => Filter notes on typing


git://github.com/hpathan/apotomo-examples.git
Apotomo - Events




git://github.com/hpathan/apotomo-examples.git
Apotomo - Events




git://github.com/hpathan/apotomo-examples.git
Apotomo - Events




git://github.com/hpathan/apotomo-examples.git
Apotomo - Events




git://github.com/hpathan/apotomo-examples.git
Apotomo – Events




git://github.com/hpathan/apotomo-examples.git
Apotomo – Events




git://github.com/hpathan/apotomo-examples.git
Apotomo – Events




git://github.com/hpathan/apotomo-examples.git
Apotomo – Events




git://github.com/hpathan/apotomo-examples.git
Apotomo – Events




git://github.com/hpathan/apotomo-examples.git
Apotomo – Events




git://github.com/hpathan/apotomo-examples.git
Apotomo – Events




git://github.com/hpathan/apotomo-examples.git
Apotomo – Events




git://github.com/hpathan/apotomo-examples.git
Apotomo – Events




git://github.com/hpathan/apotomo-examples.git
Apotomo – Events & Widget
Apotomo – Events & Widget
                           Root




            Widget1               Widget2




Widget1.1             Widget1.2   Widget2.1
Apotomo – Events & Widget
                           Root




            Widget1               Widget2




Widget1.1             Widget1.2   Widget2.1
Apotomo – Events & Widget
                           Root




            Widget1               Widget2




Widget1.1             Widget1.2   Widget2.1
Apotomo – Events & Widget
                           Root




            Widget1               Widget2




Widget1.1             Widget1.2   Widget2.1
Thank You

More Related Content

Similar to Reusable View Components in Rails

Puppet at GitHub - PuppetConf 2013
Puppet at GitHub - PuppetConf 2013Puppet at GitHub - PuppetConf 2013
Puppet at GitHub - PuppetConf 2013
Puppet
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot public
SeongJae Park
 
Reusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de ZopeReusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de Zope
menttes
 
java.util.concurrent for Distributed Coordination, GeeCON Krakow 2019
java.util.concurrent for Distributed Coordination, GeeCON Krakow 2019java.util.concurrent for Distributed Coordination, GeeCON Krakow 2019
java.util.concurrent for Distributed Coordination, GeeCON Krakow 2019
Ensar Basri Kahveci
 
Using spl tools in your code
Using spl tools in your codeUsing spl tools in your code
Using spl tools in your code
Elizabeth Smith
 
Git of Parts
Git of PartsGit of Parts
Git of Parts
Rudy Jahchan
 
Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017
Lemi Orhan Ergin
 
Search Engine Spiders
Search Engine SpidersSearch Engine Spiders
Search Engine Spiders
CJ Jenkins
 
Cucaruba!
Cucaruba!Cucaruba!
Cucaruba!
Matt Yoho
 
MongoDB & Machine Learning
MongoDB & Machine LearningMongoDB & Machine Learning
MongoDB & Machine Learning
Tom Maiaroto
 
Debugging Your Plone Site
Debugging Your Plone SiteDebugging Your Plone Site
Debugging Your Plone Site
cdw9
 
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Lemi Orhan Ergin
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
John Anderson
 
Rules: Duct Tape for Drupal
Rules: Duct Tape for DrupalRules: Duct Tape for Drupal
Rules: Duct Tape for Drupal
Ryan Price
 
Robotlegs AS3 from Flash and the City 2010
Robotlegs AS3 from Flash and the City 2010Robotlegs AS3 from Flash and the City 2010
Robotlegs AS3 from Flash and the City 2010
Joel Hooks
 
Puppet Camp Atlanta 2014: r10k Puppet Workflow
Puppet Camp Atlanta 2014: r10k Puppet WorkflowPuppet Camp Atlanta 2014: r10k Puppet Workflow
Puppet Camp Atlanta 2014: r10k Puppet WorkflowPuppet
 
오픈소스를 여행하는 히치하이커를 위한 안내서 - 자막
오픈소스를 여행하는 히치하이커를 위한 안내서 - 자막오픈소스를 여행하는 히치하이커를 위한 안내서 - 자막
오픈소스를 여행하는 히치하이커를 위한 안내서 - 자막
선협 이
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
Sven Peters
 

Similar to Reusable View Components in Rails (20)

Puppet at GitHub - PuppetConf 2013
Puppet at GitHub - PuppetConf 2013Puppet at GitHub - PuppetConf 2013
Puppet at GitHub - PuppetConf 2013
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot public
 
Reusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de ZopeReusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de Zope
 
java.util.concurrent for Distributed Coordination, GeeCON Krakow 2019
java.util.concurrent for Distributed Coordination, GeeCON Krakow 2019java.util.concurrent for Distributed Coordination, GeeCON Krakow 2019
java.util.concurrent for Distributed Coordination, GeeCON Krakow 2019
 
Using spl tools in your code
Using spl tools in your codeUsing spl tools in your code
Using spl tools in your code
 
Introduce Django
Introduce DjangoIntroduce Django
Introduce Django
 
Git of Parts
Git of PartsGit of Parts
Git of Parts
 
Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017
 
Search Engine Spiders
Search Engine SpidersSearch Engine Spiders
Search Engine Spiders
 
How to use git without rage
How to use git without rageHow to use git without rage
How to use git without rage
 
Cucaruba!
Cucaruba!Cucaruba!
Cucaruba!
 
MongoDB & Machine Learning
MongoDB & Machine LearningMongoDB & Machine Learning
MongoDB & Machine Learning
 
Debugging Your Plone Site
Debugging Your Plone SiteDebugging Your Plone Site
Debugging Your Plone Site
 
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
 
Rules: Duct Tape for Drupal
Rules: Duct Tape for DrupalRules: Duct Tape for Drupal
Rules: Duct Tape for Drupal
 
Robotlegs AS3 from Flash and the City 2010
Robotlegs AS3 from Flash and the City 2010Robotlegs AS3 from Flash and the City 2010
Robotlegs AS3 from Flash and the City 2010
 
Puppet Camp Atlanta 2014: r10k Puppet Workflow
Puppet Camp Atlanta 2014: r10k Puppet WorkflowPuppet Camp Atlanta 2014: r10k Puppet Workflow
Puppet Camp Atlanta 2014: r10k Puppet Workflow
 
오픈소스를 여행하는 히치하이커를 위한 안내서 - 자막
오픈소스를 여행하는 히치하이커를 위한 안내서 - 자막오픈소스를 여행하는 히치하이커를 위한 안내서 - 자막
오픈소스를 여행하는 히치하이커를 위한 안내서 - 자막
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 

Recently uploaded

Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
UiPathCommunity
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 

Recently uploaded (20)

Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 

Reusable View Components in Rails

Editor's Notes

  1. \n
  2. For more details C2.com on component based development\n
  3. Talk about MVC after talking about render_component\n
  4. We all like views, we should take good care of them\n
  5. \n
  6. We all like views, we should take good care of them\n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. - Cells can be nested\n Cells can have as many render as possible there would be no double render_error\n
  34. Caching: No fragment cache, strictly view caching\n\nTest:UNIT\n\nTwo types of testing …. Unit testing both ways Cells:TestCase Or ActionControler::TestCase\n\nTest your cells in isolation\n
  35. Caching: No fragment cache, strictly view caching\n\nTest:UNIT\n\nTwo types of testing …. Unit testing both ways Cells:TestCase Or ActionControler::TestCase\n\nTest your cells in isolation\n
  36. Caching: No fragment cache, strictly view caching\n\nTest:UNIT\n\nTwo types of testing …. Unit testing both ways Cells:TestCase Or ActionControler::TestCase\n\nTest your cells in isolation\n
  37. Caching: No fragment cache, strictly view caching\n\nTest:UNIT\n\nTwo types of testing …. Unit testing both ways Cells:TestCase Or ActionControler::TestCase\n\nTest your cells in isolation\n
  38. Caching: No fragment cache, strictly view caching\n\nTest:UNIT\n\nTwo types of testing …. Unit testing both ways Cells:TestCase Or ActionControler::TestCase\n\nTest your cells in isolation\n
  39. Caching: No fragment cache, strictly view caching\n\nTest:UNIT\n\nTwo types of testing …. Unit testing both ways Cells:TestCase Or ActionControler::TestCase\n\nTest your cells in isolation\n
  40. Caching: No fragment cache, strictly view caching\n\nTest:UNIT\n\nTwo types of testing …. Unit testing both ways Cells:TestCase Or ActionControler::TestCase\n\nTest your cells in isolation\n
  41. Caching: No fragment cache, strictly view caching\n\nTest:UNIT\n\nTwo types of testing …. Unit testing both ways Cells:TestCase Or ActionControler::TestCase\n\nTest your cells in isolation\n
  42. Apotomo is based on cells\n
  43. \n
  44. Apotomo is based on cells\n
  45. Apotomo is based on cells\n
  46. Apotomo is based on cells\n
  47. Apotomo is based on cells\n
  48. Apotomo is based on cells\n
  49. Apotomo is based on cells\n
  50. Apotomo is based on cells\n
  51. Apotomo is based on cells\n
  52. Apotomo is based on cells\n
  53. Apotomo is based on cells\n
  54. Apotomo is based on cells\n
  55. Apotomo is based on cells\n
  56. Apotomo is based on cells\n
  57. Apotomo is based on cells\n
  58. Apotomo is based on cells\n
  59. Apotomo is based on cells\n
  60. Apotomo is based on cells\n
  61. Apotomo is based on cells\n
  62. Apotomo is based on cells\n
  63. Apotomo is based on cells\n
  64. Apotomo is based on cells\n
  65. Apotomo is based on cells\n
  66. Apotomo is based on cells\n
  67. Apotomo is based on cells\n
  68. Apotomo is based on cells\n
  69. Apotomo is based on cells\n
  70. Apotomo is based on cells\n
  71. Apotomo is based on cells\n
  72. Apotomo is based on cells\n