<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: oreoyona</title>
    <description>The latest articles on DEV Community by oreoyona (@oreoyona).</description>
    <link>https://dev.to/oreoyona</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F629754%2Fc277b71f-dcf9-40bd-8430-aff2bedd6e3b.jpeg</url>
      <title>DEV Community: oreoyona</title>
      <link>https://dev.to/oreoyona</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oreoyona"/>
    <language>en</language>
    <item>
      <title>Let's finally build our app</title>
      <dc:creator>oreoyona</dc:creator>
      <pubDate>Sun, 05 Mar 2023 14:55:53 +0000</pubDate>
      <link>https://dev.to/oreoyona/lets-finally-build-our-app-la0</link>
      <guid>https://dev.to/oreoyona/lets-finally-build-our-app-la0</guid>
      <description>&lt;p&gt;Our job today will be to set up the layout of the ultimate clinical app we decided to build some days ago. We will write the helper functions and some CSS rules.&lt;/p&gt;

&lt;p&gt;Last week, we wrote a lot of angular files and the time has come for us to focus on the UI.&lt;/p&gt;

&lt;p&gt;At the end of this article, we should have an app looking like the image below &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe6lexu6ely7zu57c9617.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe6lexu6ely7zu57c9617.png" alt="mockup of our app" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Today's article will be very technical. Just grab your computer and code. You can find the entire code on &lt;a href="https://github.com/oreoyona/clinic-calculator/tree/master" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Open your home.component.html
&lt;/h2&gt;

&lt;p&gt;The screen of our application needs to take up all the available space and be divided into two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;a part showing principally the operations(for example the numbers, the current mode selected by the user).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;another part where to place our buttons.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's then write our grid layouts.&lt;/p&gt;

&lt;p&gt;We will use the first as the container, representing our app's screen.&lt;/p&gt;

&lt;p&gt;The two others will serve respectively as the container of the operation's screen and the container of the buttons' screen.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;GridLayout rows="300, *" columns="*" class="container" height 
="100%" backgroundColor="#303030"&amp;gt; 

    &amp;lt;GridLayout  row="0" col="0" backgroundColor="#303030" columns="20,*" rows="40, *,*,*,*"&amp;gt; 
    &amp;lt;/GridLayout&amp;gt;


 &amp;lt;GridLayout row="1" col="0" backgroundColor="#303030" columns="*,10,*,10,*,10,*" rows="*,*,*,*,*"&amp;gt;

    &amp;lt;/GridLayout&amp;gt;

&amp;lt;/GridLayout&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Time to add the buttons and the screens.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;GridLayout columns="*" rows="300, *" height="100%" *ngIf="currentMode != modes.fg &amp;amp;&amp;amp; currentMode != modes.apgar"&amp;gt;

    &amp;lt;GridLayout row="0" col="0" backgroundColor={{colors.gray}} columns="20,*" rows="40, *,*,*,*"
        *ngIf="currentMode == modes.pam"&amp;gt;
        &amp;lt;TextView editable="false" col="1" row="1" class="uxText" color="aquamarine"&amp;gt;
            __{{currentMode}}__
        &amp;lt;/TextView&amp;gt;
        &amp;lt;FlexBoxLayout col="1" , row="2"&amp;gt;
            &amp;lt;TextView editable="false" col="0" row="1" *ngIf="pamArray[0]" class="uxText"&amp;gt;
                PAS: {{pamArray[0]}}
            &amp;lt;/TextView&amp;gt;
            &amp;lt;TextView editable="false" col="0" row="2" *ngIf="pamArray[1]" class="uxText"&amp;gt;
                PAD: {{pamArray[1]}}
            &amp;lt;/TextView&amp;gt;

            &amp;lt;TextView editable="false" col="0" row="2" *ngIf="!pamArray[0] &amp;amp;&amp;amp; !reponse" class="uxText"&amp;gt;
                Valeur systole
            &amp;lt;/TextView&amp;gt;
            &amp;lt;TextView editable="false" col="0" row="2" *ngIf="pamArray[0] &amp;amp;&amp;amp; !pamArray[1]" class="uxText"&amp;gt;
                Valeur diastole
            &amp;lt;/TextView&amp;gt;
        &amp;lt;/FlexBoxLayout&amp;gt;


        &amp;lt;TextView editable="false" col="1" row="3" class="operation" fontSize="32rem"&amp;gt;
            {{screen}}
        &amp;lt;/TextView&amp;gt;

        &amp;lt;TextView editable="false" col="1" row="4" class="operation"&amp;gt;
            {{reponse}}
        &amp;lt;/TextView&amp;gt;

    &amp;lt;/GridLayout&amp;gt;
&amp;lt;GridLayout row="0" col="0" backgroundColor={{colors.gray}} columns="20,*" rows="40, *,*,*,*"
        *ngIf="currentMode == modes.imc"&amp;gt;

        &amp;lt;TextView editable="false" col="1" row="1" class="uxText" color="aquamarine"&amp;gt;
            __{{currentMode}}__
        &amp;lt;/TextView&amp;gt;

        &amp;lt;TextView editable="false" col="1" row="3" class="operation"&amp;gt;
            {{screen}}
        &amp;lt;/TextView&amp;gt;


        &amp;lt;FlexBoxLayout col="1" , row="2"&amp;gt;
            &amp;lt;TextView editable="false" col="0" row="1" class="active" *ngIf="imcArray[0]"&amp;gt;
                Taille: {{imcArray[0]}}
            &amp;lt;/TextView&amp;gt;
            &amp;lt;TextView editable="false" col="0" row="2" class="active" *ngIf="imcArray[1]"&amp;gt;
                Poids: {{imcArray[1]}}
            &amp;lt;/TextView&amp;gt;

            &amp;lt;TextView editable="false" col="0" row="2" *ngIf="!imcArray[0] &amp;amp;&amp;amp; !reponse" class="uxText"&amp;gt;
                Valeur taille(cm)
            &amp;lt;/TextView&amp;gt;
            &amp;lt;TextView editable="false" col="0" row="2" *ngIf="imcArray[0] &amp;amp;&amp;amp; !imcArray[1]" class="uxText"&amp;gt;
                Valeur poids(kg)
            &amp;lt;/TextView&amp;gt;
        &amp;lt;/FlexBoxLayout&amp;gt;


        &amp;lt;TextView editable="false" col="1" row="4" class="operation "&amp;gt;
            {{reponse}}
        &amp;lt;/TextView&amp;gt;

    &amp;lt;/GridLayout&amp;gt;




    &amp;lt;GridLayout row="1" col="0" backgroundColor="#303030" columns="*,10,*,10,*,10,*" rows="*,*,*,*,*" paddingBottom="25"
        borderTopLeftRadius="20" borderTopRightRadius="20"&amp;gt;
        &amp;lt;Button row="0" col="0" text={{currentMode}}  #ac fontSize="16px" disabled&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="0" col="2" text="AC" fontSize="20" #back (tap)="bck()"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="0" col="4" text="&amp;gt;" class="nextBtn" #pour (tap)="next()" backgroundColor="#001A11" color="aquamarine"
            fontSize="32"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="0" col="6" text={{modes.pam}} class="op" #div (tap)="changeMode(div)"&amp;gt;&amp;lt;/Button&amp;gt;

        &amp;lt;Button row="1" col="0" text="7" class="btn" #sept (tap)="getAnim(sept)"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="1" col="2" text="8" class="btn" #huit (tap)="getAnim(huit)"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="1" col="4" text="9" class="btn" #neuf (tap)="getAnim(neuf)"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="1" col="6" text="{{modes.apgar}}" class="op" #fois [nsRouterLink]="['/apgar']"&amp;gt;&amp;lt;/Button&amp;gt;


        &amp;lt;Button row="2" col="0" text="4" class="btn" #quatre (tap)="getAnim(quatre)"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="2" col="2" text="5" class="btn" #cinq (tap)="getAnim(cinq)"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="2" col="4" text="6" class="btn" #six (tap)="getAnim(six)"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="2" col="6" text={{modes.imc}} class="op" #mois (tap)="changeMode(mois)"&amp;gt;&amp;lt;/Button&amp;gt;


        &amp;lt;Button row="3" col="0" text="1" class="btn" #un (tap)="getAnim(un)"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="3" col="2" text="2" class="btn" #deux (tap)="getAnim(deux)"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="3" col="4" text="3" class="btn" #trois (tap)="getAnim(trois)"&amp;gt;&amp;lt;/Button&amp;gt;


        &amp;lt;Button row="4" col="0" text="C" class="btn" #ext (tap)="reset()"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="4" col="2" text="0" class="btn" #zero (tap)="getAnim(zero)"&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="4" col="4" text="." class="btn" #point (tap)="getAnim(point)" value="."&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;Button row="4" col="6" text="=" class="opBtm" #egal (tap)="next()"&amp;gt;&amp;lt;/Button&amp;gt;
    &amp;lt;/GridLayout&amp;gt;
&amp;lt;/GridLayout&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  We need to update our component
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Component, OnInit } from '@angular/core'
import { Button, Color } from '@nativescript/core';
import { Page } from '@nativescript/core/ui/page';
import { checkState, clear, compute, back, scaleAnim} from '../common/functions'
@Component({
  selector: 'Home',
  templateUrl: './home.component.html',
  styleUrls: ["./home.component.css"],
})
export class HomeComponent implements OnInit {
  //members of the class
  screen = "";
  reponse = "";
  pam = true;
  apgar = false;
  fg = false;
  imc = false;

  modes = {
    imc: "IMC",
    fg: "FG",
    apgar: "AP",
    pam: "PAM"
  }
  currentMode = this.modes.pam;
  images = {
    back: "~/assets/back.svg"
  }

  pamArray = [];
  imcArray = [];
  colors = {
    gray: new Color("#383838")
  }

  //end Members of the class definition

  /************************************* Methods ******************************************/


  /**
   * getAnim - saves the buttons typed to the screen
   * @param btn : Button clicked by the user
   */
  getAnim = (btn: Button) =&amp;gt; {
    scaleAnim(btn);
    if(checkState(this.reponse)){
      this.reponse = clear(this.reponse);
      this.pamArray = [];
      this.imcArray = [];
    }
    this.screen += btn.text;
  }
  /**
   * reset - resets the screen and all the variables
   */

  reset = ()=&amp;gt;{
    this.reponse = clear(this.reponse);
    this.pamArray = [];
    this.imcArray = [];
    this.screen = clear(this.screen);
  }

  /**
   * changeMode - changes the mode of the calculator
   * and updates the screen accordingly
   * @param btn : Button clicked by the user
   */
  changeMode(btn: Button) {
    const mode = btn.text;
    if (mode != this.currentMode) {
      this.screen = clear(this.screen);
      this.reponse = clear(this.reponse);
      this.imcArray = [];
      this.pamArray = [];
    };
    this.currentMode = mode;

  }

  /**
   * bck - invokes the back function
   * to delete the latest entered char in the screen
   */
  bck(){
    this.screen = back(this.screen);
  }

  /**
   * next - saves variables and do the computations
   * according to the selected mode
   */
  next() {
    //checks that the current mode is indeed "PAM"
    if (this.currentMode == this.modes.pam) {
      //computations for the "PAM" mode.
      if (!this.screen &amp;amp;&amp;amp; !this.pamArray[0]){}
      if (this.pamArray[0] &amp;amp;&amp;amp; this.pamArray[1]) {
        this.reponse = String(compute("PAM", this.pamArray));
        this.pamArray = [];
        this.screen = clear(this.screen);
      }
      this.pamArray.push(Number(this.screen));
      this.screen = clear(this.screen);
    }
else if(this.currentMode == this.modes.imc){
      //computationa for the "IMC" mode.
      if (!this.screen &amp;amp;&amp;amp; !this.imcArray[0]){}
      if (this.imcArray[0] &amp;amp;&amp;amp; this.imcArray[1]) {
        this.reponse = String(compute("IMC", this.imcArray));
        this.imcArray = [];
        this.screen = clear(this.screen);
      }
      this.imcArray.push(Number(this.screen));
      this.screen = clear(this.screen);
    }

  }

  constructor(private page: Page) {
    this.page.actionBarHidden = true;

  }

  ngOnInit(): void {


  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Let's create the helper functions
&lt;/h3&gt;

&lt;p&gt;Our calculator needs to compute a lot of stuff. Let's create a folder named &lt;em&gt;common&lt;/em&gt; and a file, that we will name &lt;em&gt;functions&lt;/em&gt; in which we will place every single helper function necessary to our app.&lt;/p&gt;

&lt;p&gt;I commented the code so, it should be easy to understand it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export function back(screen: string){
import { ElementRef, ViewChild } from "@angular/core";
import { Button } from "@nativescript/core";
export const formulas = {
    pam: "[(PAS + (2 x PAD) )/3]",
    imc: "[Poids(Kg)/Taille^2(m)]"
}
/**
 * clear - functions to clear the screen
 * @param screen : the screen to be cleared
 */
export function clear(screen: string){
    screen = "";
    return screen;
}
/**
 * 
 * @param mode the mode chosen by the user
 * @param dest the place of the screen where 
 * the mode should be displayed
 */
export function changeMode(mode: string, dest: string){
    dest = mode;
}

/**
 * 
 * @param pas systolic arterial pressure
 * @param pad diastolic arterial pressure
 * @returns mean arterial pressure
 */
export function pam(pas: number, pad: number){
    return (2*(pad) + pas)/3
}


/**
 * imc - computes the IMC
 * @param taille: length in cm
 * @param poids: weight in Kg
 * @returns the IMC
 */
export function imc(taille: number, poids: number){
    taille = converter(taille);
    const tailleCarre = Math.pow(taille, 2);
    return poids/tailleCarre;

}
/**
 * compute - finds the right formula and computes according to
 * the mode
 * @param mode the mode chosen by the user
 * @param store the array where are stored variables
 * @returns the desired computation
 */
export function compute(mode: string, store: string[]){
    switch (mode) {
        case "PAM":
            return pam(Number(store[0]), Number(store[1]))
        case "IMC":
            return imc(Number(store[0]), Number(store[1]))
    }
}
/**
 * pusher - stores the first param in an array
 * @param screen the screen containing the first param
 * @param store the array where to store thr first param
 */
export function pusher(screen: string, store: Array&amp;lt;string&amp;gt;){
    store.push(screen);
    clear(screen);
}
/**
 * scaleAnim - animates the btn to scale 0.5 times
 * from its original state
 * @param btn : the button to be animated
 */
export function scaleAnim(btn: Button){
    btn.animate({
        scale:{x:1.5, y:1.5},
        duration: 1,
        curve: "easeOut",
        iterations: 1,
    }).then(()=&amp;gt;{
        btn.animate({
            scale: {x:1, y:1}
        })
    })
}
/**
 * checkState - checks the state of the screen
 * @param screen : the screen to be checked
 * @returns true if the screen is not empty
 * false otherwise
 */
export function checkState(screen: string){
    return screen?true:false;
}

/**
 * getFormula - returns the formula of the selected mode 
 * @param mode : the formula to be ruturned
 */
export function getFormula(mode: string){
    switch (mode) {
        case "PAM" || "pam":
            return formulas.pam;
        default:
            break;
    }
}
/**
 * back - delete the latest entered value in the screen
 * @param screen the screen to be sliced
 * @returns a new string
 */
export function back(screen: string){
    if (screen){
        const len = screen.length - 1;
        return screen.slice(0, len);
}
    else{
        return screen;
}
}
/**
 * converter - converts the length from cm to m
 * @params len: the length in cm
 * @returns len in m
 */
export function converter(len: number){
    return len/100;
}

/**
 * choose - helps make a choice on 3 radio btns 
 * @param vcActive : the active viewChild
 * @param vc1 : an ElementRef to reset
 * @param vc2 : an ElementRef to reset
 * @param btn : the button used to toggle the change
 */
export async function choose(vcActive: ElementRef, vc1: ElementRef, vc2: ElementRef, btn?: Button){
    vcActive.nativeElement.toggle();
    vc1.nativeElement.checked = false;
    vc2.nativeElement.checked = false;
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Let's add some style to our app
&lt;/h2&gt;

&lt;p&gt;Open the home.component.css file and write those rules&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.op{
    color: aquamarine;
    background-color: transparent;
    font-size: 16em;
    margin-top: 8px;
    margin-bottom: 8px;
    z-index: 0;
  }
  .opBtm{
    border-radius:50%;
    background-color: gray;
    font-size: 25px;
    margin-bottom: 30px;
    z-index: 0;

  }
  .opBtm{
    box-shadow:  0 0 30px gray;
  }


  .uxText{
    color: white;
    font-style: italic;  
}
  .btn{
    color: #ccc;
    background-color: transparent;
    font-size: 35em;
    margin-top: 8px;
    margin-bottom: 8px;
    z-index: 0;

  }

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Add the icon fonts
&lt;/h2&gt;

&lt;p&gt;I love Angular material so I'll use Google material icons.&lt;/p&gt;

&lt;p&gt;In the source of your app, create a folder and name it &lt;em&gt;fonts&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/material-icons/material-icons-font/tree/master/font" rel="noopener noreferrer"&gt;Download the fonts here&lt;/a&gt; and place them in the &lt;em&gt;fonts&lt;/em&gt; folder.&lt;/p&gt;

&lt;p&gt;In your CSS file, write these rules&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.m-icon-outlined{
     font-family: "MaterialIcons-Outlined";
     font-weight: 400;
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep in mind that the font family name must match the name of the font in your fonts folder. &lt;a href="https://fonts.google.com/icons?selected=Material+Icons" rel="noopener noreferrer"&gt;Click here to find the code of an icon. &lt;/a&gt;We will use that code just like it is recommended &lt;a href="https://v7.docs.nativescript.org/ui/components/icon-fonts" rel="noopener noreferrer"&gt;here&lt;/a&gt;, by the NativeScript Docs&lt;/p&gt;

&lt;h3&gt;
  
  
  Test your app, run:
&lt;/h3&gt;



&lt;p&gt;&lt;code&gt;ns run android&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Please refer to my GitHub if you have some problems running your app. &lt;/p&gt;

&lt;p&gt;Ps: We will release our app next time so stay tuned...&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Let's build the ultimate clinical calculator Android App with NativeScript</title>
      <dc:creator>oreoyona</dc:creator>
      <pubDate>Sun, 26 Feb 2023 19:25:43 +0000</pubDate>
      <link>https://dev.to/oreoyona/lets-build-the-ultimate-clinical-calculator-android-app-with-nativescript-44g8</link>
      <guid>https://dev.to/oreoyona/lets-build-the-ultimate-clinical-calculator-android-app-with-nativescript-44g8</guid>
      <description>&lt;h2&gt;
  
  
  Part 1. Introduction
&lt;/h2&gt;

&lt;p&gt;Introducing the ultimate clinical parameter calculator app designed to make the lives of medics and paramedics easier!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3cfqjc24xf96ks375cl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3cfqjc24xf96ks375cl.png" alt="Temporary mock-up of our clinical calculator" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This &lt;em&gt;cutting-edge app&lt;/em&gt; has been meticulously crafted with the latest and safest technologies on the market to provide fast and reliable calculations for mean arterial pressure, Apgar score, and BMI.&lt;/p&gt;

&lt;p&gt;With its intuitive interface and sleek design, the app allows you to effortlessly calculate critical clinical parameters in mere seconds. The results are presented clearly and concisely, enabling you to make informed decisions quickly and confidently.&lt;/p&gt;

&lt;p&gt;But this app isn't just about functionality - it's also about style. The designers have gone above and beyond to create an interface that is not only aesthetically pleasing but also easy to navigate. The app's color scheme and typography have been carefully selected to create a sense of calm and professionalism, reflecting the high standards of the medical profession.&lt;/p&gt;

&lt;p&gt;Whether you're a seasoned healthcare professional or a student just starting, this app is an invaluable tool that will help you deliver the best possible care to your patients.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  &lt;em&gt;Prerequisites&lt;/em&gt;: you have to know Angular.
&lt;/h4&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The long list of our app features
&lt;/h2&gt;

&lt;p&gt;Since we want our clinical calculator, to be that good and complete, here is the list of features it needs to support&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The basic modes&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;BMI mode to calculate the body mass index&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apgar mode to calculate the Apgar score in New Borns&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PAM mode to calculate the  mean arterial pressure &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The advanced modes&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;NIHSS mode for quantifying stroke severity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Glasgow score to evaluate conscientiousness&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Glomerular filtration rate for assessing the patient's kidneys&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Considering the complexities of our app, we must design it to make the navigation easily understandable&lt;/p&gt;

&lt;h2&gt;
  
  
  The temporary mockups
&lt;/h2&gt;

&lt;p&gt;Our app should, for basic modes, should look like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apgar mode&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5vuvdsgg286w3ub8yboc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5vuvdsgg286w3ub8yboc.png" alt="Apgar mode" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BMI(IMC in french)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faehzt6550gmplmmr5xfj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faehzt6550gmplmmr5xfj.png" alt="BMI" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mean arterial pressure, abbreviated PAM in french&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frzf2avzhr2h78iboxjlg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frzf2avzhr2h78iboxjlg.png" alt="PAM mode" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The first steps
&lt;/h2&gt;

&lt;p&gt;Make sure you have installed everything that is required to run a NativeScript app by reading &lt;a href="https://dev.to/oreoyona/introduction-to-nativescript-2ana"&gt;this introductory article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In your terminal, start a new NativeScript project by running:&lt;br&gt;
&lt;code&gt;ns create calculator --angular&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Let's choose a blank template, we will be building our app from scratch.&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;&lt;strong&gt;src &amp;gt; app&lt;/strong&gt;&lt;/em&gt;, our app.module.ts should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'
import { NativeScriptModule } from '@nativescript/angular'
import { AppRoutingModule } from './app-routing.module'
import { AppComponent } from './app.component';

@NgModule({
  bootstrap: [AppComponent],
  imports: [NativeScriptModule, AppRoutingModule],
  declarations: [AppComponent],
  schemas: [NO_ERRORS_SCHEMA],

})
export class AppModule {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Let's create a home module
&lt;/h2&gt;

&lt;p&gt;Create a new folder and call it home. In it, let's create the files below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;_&lt;br&gt;
-home-routing.module.ts &lt;br&gt;
-home.component.css &lt;br&gt;
-home.component.html &lt;br&gt;
-home.component.ts &lt;br&gt;
-home.module.ts &lt;br&gt;
_&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Let's write the home.module.ts file
&lt;/h3&gt;

&lt;p&gt;This file will define our home page as a feature module.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'
import { NativeScriptCommonModule } from '@nativescript/angular'

import { HomeRoutingModule } from './home-routing.module'
import { HomeComponent } from './home.component'


@NgModule({
  imports: [NativeScriptCommonModule, HomeRoutingModule],
  declarations: [HomeComponent],
  schemas: [NO_ERRORS_SCHEMA],
})
export class HomeModule {}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Let's write the home.component.ts file
&lt;/h3&gt;

&lt;p&gt;This file will create a component from which we will create the logic supporting the layout that we will soon write in the home.component.html file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Component, OnInit } from '@angular/core'

@Component({
  selector: 'Home',
  templateUrl: './home.component.html',
  styleUrls: ["./home.component.css"],
})
export class HomeComponent implements OnInit {
constructor() {
  }

  ngOnInit(): void {

  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Let's write the home-routing.module.ts
&lt;/h3&gt;

&lt;p&gt;This file will manage the routes to our home component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { NgModule } from '@angular/core'
import { Routes } from '@angular/router'
import { NativeScriptRouterModule } from '@nativescript/angular'

import { HomeComponent } from './home.component'
const routes: Routes = [
  { path: '', component: HomeComponent }
]

@NgModule({
  imports: [NativeScriptRouterModule.forChild(routes)],
  exports: [NativeScriptRouterModule],
})
export class HomeRoutingModule {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Let's now update the app-routing.module.ts file
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { NgModule } from '@angular/core'
import { Routes } from '@angular/router'
import { NativeScriptRouterModule} from '@nativescript/angular';

const routes: Routes = [
  {
    path: '',
    loadChildren: () =&amp;gt; import('~/app/home/home.module').then((m) =&amp;gt; m.HomeModule),
  }

@NgModule({
  imports: [NativeScriptRouterModule.forRoot(routes)],
  exports: [NativeScriptRouterModule],
})
export class AppRoutingModule {}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Time to build the layout of our Home page.
&lt;/h2&gt;

&lt;p&gt;I do not know if that's the case for you but, the first thing I write in a template file is normally a section. I do so to give it a class and then write some CSS. This is how I build virtually every layout in HTML.&lt;/p&gt;

&lt;p&gt;I had this in mind when I started with NativeScript. I tried some layouts components proposed by NativeScript but nothing could equal, for my needs at least, the flexibility and the power of the &lt;a href="https://docs.nativescript.org/ui-and-styling.html#gridlayout" rel="noopener noreferrer"&gt;GridLayout&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding nativescript's GridLayout
&lt;/h3&gt;

&lt;p&gt;A GridLayout is organized in columns(vertical) and rows(horizontal).&lt;/p&gt;

&lt;p&gt;In our home.component.html file, we write:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;GridLayout&amp;gt;&amp;lt;/GridLayout&amp;gt;&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;This code however is not sufficient and does pretty much nothing we need to specify the kind of grid we want. But before doing that let's first visualize&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft8v6abjdvbqsy3tytu8k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft8v6abjdvbqsy3tytu8k.png" alt="A grid" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the image above, we have 5 columns starting from column 0(far left) to column 4(far right).&lt;/p&gt;

&lt;p&gt;We also have 5 rows starting from row 0(top) to row 4(deepest down).&lt;/p&gt;

&lt;p&gt;It's important to keep this model in mind: columns and rows are index based. So the first row and column should be referenced by 0. &lt;/p&gt;

&lt;p&gt;Let's say we have 5 buttons, how could we place them on our grid?&lt;/p&gt;

&lt;p&gt;In our template, we will pass some parameters to our GridLayout element.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;GridLayout columns="*, *, *, *, *" rows="*, *, *, *, *"&amp;gt;&amp;lt;/GridLayout&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This code gives our grid, 5 columns, and rows.&lt;/p&gt;

&lt;p&gt;The * means that the column or the row needs to take up all the available space. So with 5 *, we only tell Nativescipt to divide the entire available space of the screen, both horizontally(for rows) and vertically(for columns) in 5 equal parts.&lt;/p&gt;

&lt;p&gt;Let's now add our 5 buttons&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;GridLayout columns="*, *, *, *, *" rows="*, *, *, *, *"&amp;gt; 
    &amp;lt;Button text="button 1"&amp;gt;&amp;lt;/Button&amp;gt; 
    &amp;lt;Button text="button 2"&amp;gt;&amp;lt;/Button&amp;gt;
    &amp;lt;Button text="button 3"&amp;gt;&amp;lt;/Button&amp;gt;
   &amp;lt;Button text="button 4"&amp;gt;&amp;lt;/Button&amp;gt;
    &amp;lt;Button text="button 5"&amp;gt;&amp;lt;/Button&amp;gt;

&amp;lt;/GridLayout&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To specify where these 5 buttons need to be placed in our grid, we will give them a col(column)and a row(without the a) to occupy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;GridLayout columns="*, *, *, *, *" rows="*, *, *, *, *"&amp;gt; 
    &amp;lt;Button text="button 1"col="0" row="0"&amp;gt;&amp;lt;/Button&amp;gt; 
    &amp;lt;Button text="button 2"col="1" row="1"&amp;gt;&amp;lt;/Button&amp;gt;
    &amp;lt;Button text="button 3"col="2" row="2" &amp;gt;&amp;lt;/Button&amp;gt;
   &amp;lt;Button text="button 4"col="3" row="3"&amp;gt;&amp;lt;/Button&amp;gt;
    &amp;lt;Button text="button 5"col="4" row="4" &amp;gt;&amp;lt;/Button&amp;gt;

&amp;lt;/GridLayout&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Can you guess how this code will translate on our screen?&lt;br&gt;
Well don't guess, see it by yourself:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ns run android&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Now that we know how a GridLayout works, we will design our app according to the model of our mockup and it'll be fun.&lt;/p&gt;

&lt;p&gt;See you next time...&lt;/p&gt;

&lt;p&gt;Ps: let me know if you face some problems or have some corrections to make. We all are learners.&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>resume</category>
    </item>
    <item>
      <title>Rive animation is coming to NativeScript</title>
      <dc:creator>oreoyona</dc:creator>
      <pubDate>Fri, 24 Feb 2023 21:38:27 +0000</pubDate>
      <link>https://dev.to/oreoyona/rive-animation-is-coming-to-nativescript-4ijn</link>
      <guid>https://dev.to/oreoyona/rive-animation-is-coming-to-nativescript-4ijn</guid>
      <description>&lt;p&gt;How do you build rapidly animated icons for your navigation bar? In NativeScript, we can achieve this with CSS and JavaScript through the animate function but the quality of the icon might not be that great for multiple reasons.&lt;/p&gt;

&lt;p&gt;This is why we had to have Lotties.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18p6ddvlw5c2v49ua87t.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18p6ddvlw5c2v49ua87t.gif" alt="beating heart gif" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;According to Lottie's official documentation, a Lottie is a JSON-based animation file format that allows you to ship animations on any platform as easily as shipping static assets(like an image) They are small files that work on any device and can scale up or down without pixelation(they are like SVGs. They don't lose quality when the width and/or the height of the screen changes.&lt;/p&gt;

&lt;p&gt;The beating heart gif above is a Lottie animation.&lt;/p&gt;

&lt;p&gt;But this format although extremely useful has some drawbacks.&lt;/p&gt;

&lt;p&gt;Rive is playing in Lotties'playground and offers some serious advantages like a smaller size among others.&lt;/p&gt;

&lt;p&gt;You can learn more about the differences between Lottie and Rive &lt;a href="https://rive.app/blog/rive-as-a-lottie-alternative" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bootcamp.uxdesign.cc/rive-or-lottie-4caf25bb2210" rel="noopener noreferrer"&gt;Sidharth Khurana&lt;/a&gt; also wrote an eloquent comparative of these 2 animation formats&lt;/p&gt;

&lt;h1&gt;
  
  
  Rive in NativeScript
&lt;/h1&gt;

&lt;p&gt;NativeScript will be joining other popular frameworks like Flutter and React Native to fully support Rive animation and we can only be grateful for that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbpjr3pgme7rlsius22nf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbpjr3pgme7rlsius22nf.gif" alt="A lottie animation, yes another one" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Without a doubt, UI and UX tooling in NativeScript will be enhanced which will make the development process much more enjoyable and the migration of those who were already using Rive with other frameworks, easier.&lt;/p&gt;

&lt;p&gt;I can't wait to test it... Stay tuned for upcoming articles.&lt;/p&gt;

&lt;p&gt;PS: we will be building a clinic calculator this Sunday.&lt;/p&gt;

</description>
      <category>gaming</category>
      <category>ai</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Introduction to NativeScript</title>
      <dc:creator>oreoyona</dc:creator>
      <pubDate>Sun, 19 Feb 2023 16:14:34 +0000</pubDate>
      <link>https://dev.to/oreoyona/introduction-to-nativescript-2ana</link>
      <guid>https://dev.to/oreoyona/introduction-to-nativescript-2ana</guid>
      <description>&lt;p&gt;I have never quite been interested in building native apps but my recent realization of the web's limits changed my mind.&lt;/p&gt;

&lt;p&gt;I tried firstly Ionic, a great framework for building hybrid applications. I had a great time playing with ionic components, they are awesome. (you can learn more about the Ionic framework by &lt;a href="https://ionicframework.com/"&gt;visiting the official documentation&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Don't get me wrong, you can build great hybrid apps with ionic but the problem is that Ionic uses some sort of a bridge between the native experience and your application. &lt;br&gt;
In fact, apps built with this framework, although fantastic, are run in a web view because they're still web apps.&lt;/p&gt;

&lt;p&gt;And what I wanted was a native app, something that could give me the flexibility of Ionic and the performance of a native app, built with Java/Kotlin and this is how I encountered NativeScript.&lt;/p&gt;

&lt;p&gt;It's giving the possibility of using JS(Angular in my case) without compromising too much on the real experience of a native application.&lt;/p&gt;

&lt;p&gt;You can learn more about the differences between Ionic, Flutter, Reactive Native, and NativeScript &lt;a href="https://youtu.be/vl12yhSh_Pg"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://echoinnovateit.com/flutter-vs-nativescript/"&gt;Echo&lt;/a&gt; also wrote a deep dive into the main differences between Flutter and NativeScript, 2 popular frameworks for cross-platform application development, performance-wise.&lt;/p&gt;

&lt;p&gt;If you are using Angular and don't want to learn Dart or React, NativeScript is almost the default choice, for, its support for angular is outstanding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing the NativeScript CLI and setting environment variables.
&lt;/h2&gt;

&lt;p&gt;The official documentation of NativeScript offers a great tutorial for installing and setting environment variables on UNIX OS and Windows. You can check it out &lt;a href="https://docs.nativescript.org/environment-setup.html#windows-android"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Please, take the time to read the official documentation before proceeding further with this article.&lt;/p&gt;

&lt;p&gt;I had, however, the hardest time setting the JAVA_HOME environment variable. I recommend you install the required packages(⚠️&lt;em&gt;&lt;strong&gt;JDK 11 by Adoptium&lt;/strong&gt;&lt;/em&gt;) with Choco if you are on Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create your first native app with NativeScript
&lt;/h2&gt;

&lt;p&gt;The NativeScript CLI already installed on your computer, run the following command in your terminal &lt;br&gt;
&lt;code&gt;ns create myFirstApp --angular&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;myFirstApp&lt;/em&gt;&lt;/strong&gt; is the name of your application, you can use a name that is most convenient for you.&lt;/p&gt;

&lt;p&gt;This command will create an angular-supported project for your app. You will probably be asked to choose a template, to begin with. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Templates are like Angular Material Schematics.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you installed correctly everything that is mentioned in the official documentation provided by the NativeScript, you should be able to test your application on Android using an Emulator or a physical device.&lt;/p&gt;

&lt;p&gt;I tested my app on my android device by enabling debugging mode in the developer's options. (the mentioned options can be found in your phone parameters after clicking 7 times on the build number on the "About the phone" page).&lt;/p&gt;

&lt;p&gt;The link to the official documentation also offers how you can run your NativeScript application on your mobile device.&lt;/p&gt;

&lt;p&gt;As a medical student, I believe in the importance of technology in changing and shaping the health of our communities, we will be building next time a clinic calculator using solely Angular and NativeScript.&lt;/p&gt;

&lt;p&gt;It should be able to calculate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The mean arterial pressure &lt;/li&gt;
&lt;li&gt;The Apgar score &lt;/li&gt;
&lt;li&gt;The BMI &lt;/li&gt;
&lt;li&gt;The glomerular filtration score.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And of course, the design needs to be on point. We will be testing NativeScript capabilities in this particular area and I know it'll be fun so, see you next time.&lt;/p&gt;

&lt;p&gt;PS: In the meantime, please take some time to learn about &lt;strong&gt;&lt;em&gt;layouts&lt;/em&gt;&lt;/strong&gt; in NativeScript utilizing the resources below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://v7.docs.nativescript.org/angular/ui/layouts/layouts"&gt;The Official Documentation&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;These wonderful videos by Codedamn, &lt;a href="https://youtube.com/playlist?list=PLYxzS__5yYQnbduR0rpntEcXIhftdz15n"&gt;from video 10 to video 13&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nativescript</category>
      <category>angular</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>The DOM</title>
      <dc:creator>oreoyona</dc:creator>
      <pubDate>Fri, 11 Jun 2021 19:03:43 +0000</pubDate>
      <link>https://dev.to/oreoyona/day-1-the-dom-51j</link>
      <guid>https://dev.to/oreoyona/day-1-the-dom-51j</guid>
      <description>&lt;p&gt;The Document Model Object(DOM) is an inevitable notion in Web programming. &lt;/p&gt;

&lt;p&gt;This concept as important as it is, remained too abstract for me until I apprehend it in a certain way.&lt;/p&gt;

&lt;p&gt;The definition which is given to us by the documentation may be at first a little intimidating (and that's an euphemism ).&lt;/p&gt;

&lt;p&gt;Here is the definition of the DOM by MDN Docs:&lt;/p&gt;

&lt;p&gt;« The DOM represents a document with a logical tree. Each branch of the tree ends in a node, and each node contains objects. DOM methods allow programmatic access to the tree. With them, you can change the document's structure, style, or content. »&lt;/p&gt;

&lt;p&gt;Well, you maybe have understand this definition but do you really have a clear idea of what exactly the DOM is ? Cause I don't.&lt;/p&gt;

&lt;p&gt;So here is how I now understand it:&lt;/p&gt;

&lt;p&gt;We have the html code below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42qi5x7w32bgzk0mqd21.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42qi5x7w32bgzk0mqd21.jpg" alt="100 days to learn JavaScript"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What if we want to add some conditions or 'reactions' to our form ? for example show a message notifying the user that his or her form has been sent ? &lt;/p&gt;

&lt;p&gt;How can we do it with JavaScript ? We'll code it of course but the code we will write need to actually access the element we want to modify on the web page right ?&lt;/p&gt;

&lt;p&gt;When we visit a website via Chrome or Safari or whatever you want, the browser loads the page (an HTML document) in memory and create a model of it to interpret and render to us.&lt;/p&gt;

&lt;p&gt;The set of rules which specifies how the browser must model the web page is the DOM.&lt;/p&gt;

&lt;p&gt;These rules are independents of HTML or JavaScript.&lt;/p&gt;

&lt;p&gt;To be clear, the DOM is an interface that gives us the  possibility to modify a web page with our scripts.&lt;/p&gt;

&lt;p&gt;The browser structures the web page using a certain logic provided by the DOM,  The DOM tree. &lt;/p&gt;

&lt;p&gt;This structure organizes the webpage in parents elements and children that we call nodes just like a tree.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjw3jsrf2y5se2kyzor6y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjw3jsrf2y5se2kyzor6y.png" alt="100 days to learn JavaScript"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These elements are objects and have properties. I mean that they have some qualities that will give us the possibility to modify/manipulate them with our scripts.&lt;br&gt;
Here is again, the definition provided by MDN Docs:&lt;/p&gt;

&lt;p&gt;«The DOM represents a document with a logical tree. Each branch of the tree ends in a node, and each node contains objects. DOM methods allow programmatic access to the tree. With them, you can change the document's structure, style, or content.»&lt;/p&gt;

&lt;p&gt;Does it now seem clear to you? I hope so!&lt;/p&gt;

&lt;p&gt;Please feel free to tell me that I'm wrong. I am here to learn&lt;/p&gt;

</description>
    </item>
    <item>
      <title>100 days to learn JavaScript</title>
      <dc:creator>oreoyona</dc:creator>
      <pubDate>Wed, 09 Jun 2021 18:19:03 +0000</pubDate>
      <link>https://dev.to/oreoyona/100-days-to-learn-javascript-15e6</link>
      <guid>https://dev.to/oreoyona/100-days-to-learn-javascript-15e6</guid>
      <description>&lt;p&gt;The best way to learn something is the hard one... They say. &lt;/p&gt;

&lt;p&gt;I'm a medical student, my schedule is just not easy and all my future projets need code(Machine Learning, Website etc)&lt;/p&gt;

&lt;p&gt;I want to know how to create from scratch a full fonctionnal Facebook-like website, how do I get there ? Already have the books, the courses and the platform (Pluralsight)&lt;/p&gt;

&lt;p&gt;It's been 6 months that I started. First with Python and Django,  HTML, CSS after and now JavaScript. I already know some basics but I still don't know how to really code in JavaScript. &lt;/p&gt;

&lt;p&gt;From this day, i will be posting my long 100 days journey to learn, master and understand  at least the most basic JavaScript...&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
