How can Active Validation For Part of MutiStep form

help! Please help me senors.

in Asp.net.core 5 & Jquery:

380 / 5,000

I have a multi-step form that I want to validate in each step of the form and go to the next step. My problem is that I want this validation to be activated for a part of the form through the data annotation that I set for the page model. Exactly like when the form is Submit. In fact, the question is how to activate(Use) jquery.validate.unobtrusive And Show DataAnotation message for part of the form without Submit form.

I used query And Asp.net Core

Two IconButtons inside of InputRightElement in InputGroup

I am working on a search component in Chakra UI. How are you supposed to fit two IconButtons inside of a single InputRightElement in an InputGroup? The second IconButton goes outside of the Input field.

<InputGroup size="lg" shadow={"md"} borderRadius={"80px"}>
    <Input
        ref={searchInputRef}
        type="text"
        borderRadius={"80px"} 
        placeholder="Search" 
        defaultValue={router.query.searchInput}
    />
    <InputRightElement>
        <IconButton
            icon={<GrFormClose />}
            onClick={() => (searchInputRef.current.value = "")}
        >
        </IconButton>
        <IconButton 
            onClick={() => {} } 
            colorScheme="gray"
            aria-label="Search"
            isRound="true"
            icon={<Search2Icon />}
            size={"sm"}
            ></IconButton>
    </InputRightElement>
</InputGroup>

I attached an image of what it looks like:

enter image description here

Thank you!

Allowing to load web pages directly from browser and navigating through browser buttons?

Is it good to allow webpages to load directly from browser url field or browser back buttons?

Our webapplication is working fine if any user navigates through home page, but some users are directly accessing the web url in the browser and raising issues that it is not working fine.

Can you please suggest do we need to support loading the urls through browser or allow to navigate through home page?

Some banking websites gives a warning saying to do not use browser urls or browser buttons to navigate between pages i.e. they will warn to do not press browser back button to navigate to previous page etc., so is it correct idea then?

how to automatically reload a page after jquery ajax is finished

here is my code for uploading some images on server
everything works except success – reloading the page after uploading is finished
I tried with another params – for example 20000 – without success
please help

inpfi.on('change', function(){
    var flist = inpfi[0].files;
    var fd = new FormData();
    for(let i = 0; i < flist.length; i++){fd.append('flist[]', flist[i]);}
    $.ajax({
        url: 'a_slike_up.php', 
        type: 'post',
        data: fd,
        dataType: 'json',
        contentType: false,
        processData: false,
        success: function(){setInterval('location.reload()', 7000);}
    })
});

I can choose one person from my list in JS

I am trying to choose one person from my list in JS but whenever I check the out it give me all of them
I think I have problem in array but I couldn’t solve my problem.

Here is my code.

names = ["Mary", "Anna" ,"Angel", "Nish" , "Jack", "Pam"];


function whosPaying(names) {
 var numberOfPeople = names.length;
 var randomPersonPosition = Math.floor(Math.random() * numberOfPeople );
 var randomPerson = names [randomPersonPosition];
 return randomPerson + " is going to pay."
}

I had to write

console.log(whosPaying(names))

without this line my code showed me all 6 name

passing a function to a modal when different modal is selected

i have function select3, select4 and so on, i want the onpress to give the user access to select any of the function if for example select4 function is set

*I have the list items view where i have pass a function (select2) to an onpress and it is working fine. *

   <View style={styles.item}>
          {
            input.map((m, index) => {
              return (
                <TouchableOpacity style={styles.button}
                  onPress={() => select2(m)}
                >
                  <Text style={{ color: num=="" ? "#fff" : "red" }}>{m}</Text>
                </TouchableOpacity>
              )
            }
            )
          }
          <View><Text>{num}</Text></View>
        </View>

this is my select2 function

   const sselect2 = (text) => setNum(oldText => {
      if (oldText.length <= 2) {
        return [...oldText, text]
      }
      else return oldText
    })

    const select3 = (text) => setNum(oldText => {
      if (oldText.length <= 3) {
        return [...oldText, text]
      }
      else return oldText
    })
    const select8 = (text) => setNum(oldText => {
      if (oldText.length <= 8) {
        return [...oldText, text]
      }
      else return oldText
    })

but i am unable to select3 with the same onpress function and again i want to pass the select function to a modal

 <View style={styles.container}>
        <Modal
        animationType="slide"
        transparent={true}
        visible={modalVisible}
        onRequestClose={() => {
          Alert.alert("Modal has been closed.");
          setModalVisible(!modalVisible);
        }}
      > 
      <View style={styles.centeredView}>
      <View style={styles.modalView}>
             <TouchableOpacity  onPress={() =>{ select2();}} style={styles.modalText}>
              <Text> select2 2 </Text>
              </TouchableOpacity>
              <TouchableOpacity onPress={() => select3()} style={styles.modalText}>
              <Text> select2 3 </Text>
              </TouchableOpacity>
              <TouchableOpacity onPress={() => select4()} style={styles.modalText}>
              <Text> select2 4 </Text>
              </TouchableOpacity>
              <TouchableOpacity onPress={() => select5()} style={styles.modalText}>
              <Text> select2 5 </Text>
              </TouchableOpacity>
              <TouchableOpacity onPress={() =>{ select6();}} style={styles.modalText}>
              <Text> select2 2 </Text>
              </TouchableOpacity>
              <TouchableOpacity onPress={() =>{ select9();}} style={styles.modalText}>
              <Text> select2 3 </Text>
              </TouchableOpacity>
              <TouchableOpacity onPress={() =>{ select8();}} style={styles.modalText}>
              <Text> select2 4 </Text>
              </TouchableOpacity>
              <TouchableOpacity onPress={() =>{ perm5();}} style={styles.modalText}>
              <Text> select 5 </Text>
              </TouchableOpacity>
              <TouchableOpacity onPress={() =>{ select3();}} style={styles.modalText}>
              <Text> BANKER AGAINST All(Direct 1) </Text>
              </TouchableOpacity>
            <Pressable
              style={[styles.button, styles.buttonClose]}
              onPress={() => setModalVisible(!modalVisible)}
            >
              <Text style={styles.textStyle}>Hide Modal</Text>
            </Pressable>
          </View>
        </View>
      </Modal>

Stop animation from snapping back when it finishes

I have this animation that I created. it’s an infinite carousel.

My main issue is that when the animation finishes, it snaps back and continues the animation.

How can I prevent it from snapping back but still continue the animation infinitely? I want it to continue the animation infinitely without looking like it snapped back. If I’m not making sense please look at https://replit.com/ homepage and there infinite carousel.

Can this be done with pure CSS or do I need JavaScript? If so how would I implement it?

Here’s my code

   <div class="slider">
    <div class="slider-track">
      <div className="slide"></div>
      <div className="slide"></div>
      <div className="slide"></div>
      <div className="slide"></div>
      <div className="slide"></div>
      <div className="slide"></div>
      <div className="slide"></div>
      <div className="slide"></div>
    </div>
   </div>

CSS

  .slider {
    margin: 0 auto;
    overflow: hidden;
  }

  .slider-track {
    display: flex;
    width: fit-content;
    animation: carousel 10s linear infinite;
  }

  .slider-track:hover {
    animation-play-state: paused
  }

  .slide {
    display: block;
    width: 400px;
    height: 200px;
    background-color: blue;
    margin: 20px;
  }

  @keyframes carousel {
    100% {
      transform: translateX(calc(-250px*1));
    }

  }

How can I load external video to YouTube embedded player?

I want to load external video on YouTube embedded player. I tried:

      var tag = document.createElement('script');
      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '360',
          width: '640',
          playerVars: {
            'playsinline': 1
          },
          events: {
            'onReady': onPlayerReady,
          }
        });
      }
      function onPlayerReady(event) {
        
player.loadVideoByUrl("https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4");
      }

But it says “An error occurred. Please try again later.”
Where am I doing wrong?

GA4 – call event via javascript working BUT send two event

When I use gtag to send an event, it works but too much :/
1 call = two call and to events on GA4 :/

GA4 installed alone.

This is my javascript test :

<script>
    $('#form').on('submit',function(){
            console.log('form_send.1');
            gtag("event", "form_send_ok");
            console.log('form_send.2');
    }
</script>

With chrome console :
On my network panel I got two line with google.com/g/collect?
On my console log I got only one :
form_send.1
form_send.2

The two line in my network are not exactly the same, first finish by ‘_et=1’, second by ‘_et=2’
The event is counted twice in GA.

  • If,in the console I put gtag(“event”, “form_send_ok”); same thing, two call to ga4.
  • I check without extension on edge, same thing.
  • If you want try to fire an event on my website be my guest : usa.nacel.es

If someone have an idea please speak πŸ™‚
Thank you for your help

Clear output text on react native.js

**Hi, I’m making a simple calculator, I’m trying to clear the output text when I click on the Del button. Right now it only clears input text. Please assist
**

your textimport React, { Component } from ‘react’;
your textimport { StyleSheet, Text, View, Button, TouchableOpacity } from ‘react-native’;

your textexport default class App extends Component {
your textconstructor() {
your textsuper();
your textthis.state = {
your text calculationText: “”,
your text resultText: “”,
your text };
your text this.operations = [‘Del’, ‘/’, ‘*’, ‘-‘, ‘+’];
your text}

your text calculateResult() {
your text const text = this.state.calculationText;
your text console.log(text, eval(text));
your text this.setState({
your text resultText: eval(text)
your text })

your text }
your text validate(){
your text const text = this.state.calculationText
your text switch(text.slice(-1)){
your text case ‘+’:
your text case ‘-‘:
your text case ‘*’:
your text case ‘/’:
your text return false
your text }
your text return true
your text}

your textbuttonPressed(text) {
your text //console.log(text);
your text if (text == ‘=’) {
your text return this.validate() && this.calculateResult(this.state.calculationText);
your text }

your text this.setState({
your text calculationText: this.state.calculationText + text,
your text });
your text }

your textoperate(operation) {
your textswitch (operation) {
your text case ‘Del’:
your text console.log(this.state.calculationText);
your text let text = this.state.calculationText.split(”);
your text text.pop();
your text this.setState({
your text calculationText: text.join(”),
your text });
your text break;
your text case ‘/’:
your textcase ‘*’:
your textcase ‘-‘:
your textcase ‘+’:
your text const lastCHar = this.state.calculationText.split(”).pop();
your text if (this.operations.indexOf(lastCHar) > 0) return;

  `your text`  if (this.state.text == '') return;
 `your text`   this.setState({
  `your text`    calculationText: this.state.calculationText + operation,
 `your text`   });

your text }
your text }

your textrender() {
your text let ops = [];
your text for (let i = 0; i < 5; i++) {
your text ops.push(
your text <TouchableOpacity
your text style={styles.btn}
your text onPress={() => this.operate(this.operations[i])}>
your text
your text {this.operations[i]}
your text
your text
your text );
your text }

your text return (
your text
your text
your text {this.state.calculationText}
your text
your text
your text
your text
your text {rows}
your text

      `your text`<View style={styles.operations}>
      `your text`  {ops}
     `your text` </View>
   `your text` </View>
 `your text` </View>

your text );
your text}

How to open different page from function React JS

I have two forms.

Login.jsx:

import React, {Fragment, useState } from "react";
import axios from "axios";

export const Login = (props) => {
  const [user, setUser] = useState('');
  const [pass, setPass] = useState("");

  const handleSubmit = (e) => {
    e.preventDefault();
    const data = {
      KorisnickoIme: user,
      Lozinka: pass
    };

    const url ='https://localhost:44357/api/Fin/Login';
    axios.post(url, data).then((result)=>{
      alert(result.data);
    }).catch((error)=>{
      alert(error);
    })
  };

  return (
    <Fragment>
    <div className="auth-form-container">
      <h2>ΠŸΡ€ΠΈΡ˜Π°Π²Π°</h2>
      <form className="login-form" onSubmit={handleSubmit}>
      <label htmlFor="user">ΠšΠΎΡ€ΠΈΡΠ½ΠΈΡ‡ΠΊΠΎ ΠΌΠ΅</label>
            <input value ={user} onChange ={(e) => setUser(e.target.value)}placeholder="korisnicko_ime" id="user" name="user" required/> 

        <label htmlFor="email">Π›ΠΎΠ·ΠΈΠ½ΠΊΠ°</label>
        <input
          value={pass}
          onChange={(e) => setPass(e.target.value)}
          type="password"
          placeholder="********"
        ></input>
        <button type="submit">ΠŸΡ€ΠΈΡ˜Π°Π²ΠΈ сС</button>
      </form>
      <button
        className="link-btn"
        onClick={() => props.onFormSwitch("register")}
      >
        НСмаш Π½Π°Π»ΠΎΠ³? Π Π΅Π³ΠΈΡΡ‚Ρ€ΡƒΡ˜ сС ΠΎΠ²Π΄Π΅.
      </button>
    </div>
    </Fragment>
  );
};


and Register.jxs:

import React, {Fragment, useState} from "react";
import axios from "axios";

import { ProfileSetUp } from './ProfileSetUp';

export const Register = (props) => {
    const [email, setEmail] = useState('');
    const [pass, setPass] = useState('');
    const [name, setName] = useState('');
    const [user, setUser] = useState('');
    const [lastname, setLastname] = useState('');
    const [checkPass, setCheckPass] = useState('');

    const handleSubmit = (e) => {  
        if(pass==checkPass){
            e.preventDefault();
            const data = {
                KorisnickoIme:user,
                Ime: name,
                Prezime: lastname,
                Email: email,
                Lozinka: pass
            };

            const url ='https://localhost:44357/api/Fin/Registration';
            axios.post(url, data).then((result)=>{
                alert(result.data);
            }).catch((error)=>{
                alert(error);
            })
        }else{
            alert("Π›ΠΎΠ·ΠΈΠ½ΠΊΠ΅ сС Π½Π΅ ΠΏΠΎΠΊΠ»Π°ΠΏΠ°Ρ˜Ρƒ");
        }      

            
        }

    return(
        <Fragment>
        <div className="auth-form-container"> 
        <h2>Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡ˜Π°</h2>
        <form className="reg-form" onSubmit={handleSubmit}>
            <label htmlFor="name">ИмС</label>
            <input value ={name} onChange ={(e) => setName(e.target.value)}placeholder="УнСситС Π’Π°ΡˆΠ΅ ΠΈΠΌΠ΅" id="name" name="name" required/>

            <label htmlFor="lastname">ΠŸΡ€Π΅Π·ΠΈΠΌΠ΅</label>
            <input value ={lastname} onChange ={(e) => setLastname(e.target.value)}placeholder="УнСситС Π’Π°ΡˆΠ΅ ΠΏΡ€Π΅Π·ΠΈΠΌΠ΅" id="lastname" name="lastname" required/>

            <label htmlFor="email">Π•-ΠΌΠ°ΠΈΠ»</label>
            <input value ={email} onChange ={(e) => setEmail(e.target.value)}type="email" placeholder="[email protected]" id="email" name="email" required/>

            <label htmlFor="user">ΠšΠΎΡ€ΠΈΡΠ½ΠΈΡ‡ΠΊΠΎ ΠΌΠ΅</label>
            <input value ={user} onChange ={(e) => setUser(e.target.value)}placeholder="УнСситС Π’Π°ΡˆΠ΅ korisnicko_ime" id="user" name="user" required/> 

            <label htmlFor="password">Π›ΠΎΠ·ΠΈΠ½ΠΊΠ°</label>
            <input value ={pass} onChange ={(e) => setPass(e.target.value)}type="password" placeholder="********" id="password" name="password" required/>

            <label htmlFor="checkPass">ΠŸΠΎΡ‚Π²Ρ€Π΄ΠΈΡ‚Π΅ Π»ΠΎΠ·ΠΈΠ½ΠΊΡƒ</label>
            <input value ={checkPass} onChange ={(e) => setCheckPass(e.target.value)}type="password" placeholder="********" id="checkPass" name="checkPass" required/>

            <button type="submit">Π Π΅Π³ΠΈΡΡ‚Ρ€ΡƒΡ˜ сС</button>
        </form>
        <button className="link-btn" onClick={() => props.onFormSwitch('login')}>Π˜ΠΌΠ°Ρ‚Π΅ Π½Π°Π»ΠΎΠ³? ΠŸΡ€ΠΈΡ˜Π°Π²ΠΈΡ‚Π΅ сС.</button>
        </div>
        </Fragment>
    )
}

/*  */

After registering I want to send user to Login form but I am not sure how should I do it. Here is App.js just in case:


import React, {useState} from 'react';
import './App.css';
import { Register } from './Register';
import { Login } from './Login';
import { ProfileSetUp } from './ProfileSetUp';

function App() {
  const [currentForm, setCurrentForm] = useState('login');

  const toggleForm = (formName) => {
    setCurrentForm(formName);
  }



  return (
    <div className="App">
      {

        currentForm === "login" ? <Login onFormSwitch={toggleForm} /> : <Register onFormSwitch={toggleForm} />
      }
    </div>
  );
}
export default App;

I am not sure how React page is represented so I am not sure how to use window.open() etc.
I followed one tutorial where is shown how to make this toggle switch function, which I like but I think that will make me troubles with other pages.

why my react native become .tsx instead .js

so after installing react native using npx react-native init MyProject the project is running and open in emulator but the app file is not app.js instead app.tsx,

file strcuture

The question is i am new to react native and many tutorial i see is havgin App.js file, and the code in app.js is different between js and tsx at least that’s what i see, or is it just the same if i follow tutorial like folder structure, syntax and everything.

Global variable not updating as expected

I am building a small tool using AppScript. I can’t seem to get the global variable (URL) to update to include the docId.

What I expect

  • Run the App function, which first creates a Google Doc and sets the global variable for the documentId (docId). Second it calls myOnClickhandler, which should take the global url variable that includes the updated docId.

What is happening:

  • The variable ‘url’ in myClickHandler is not updated to the value of ‘docId’ set in the createProject function.
var docId = "";
var url = "https://docs.google.com/document/d/" + docId + "/";   
 

function doGet() {
      var output = HtmlService.createHtmlOutputFromFile('MyUI');
      return output;
    }

function createProject(test="test"){
  const doc = DocumentApp.create(test);
  docId = doc.getId();// <-- Update global docId variable. Doesn't seem to be working. 
  Logger.log("Doc ID is: " + docId);
}

function myOnClickHandler(){
  const myList = ["Hello from the server", url]
  Logger.log("URL is: " + url);
}

function app(){
  createProject();
  myOnClickHandler();
}

Probably a simple mistake on my part, but I am banging my head against the wall on this one. Screenshot attached..

Thank you!
enter image description here

“Internal Server Error” after successful deployment with render

I wanted to do my first nodejs deployment with render.com. The deployment of my web service is successfully completed.
However, after completing the deployment (https://one4-01-1.onrender.com/) with render, I receive an “Internal Server Error”. I have already created an .env file in my GitHub, and also created a secret file in render.
The console gives me the following: Uncaught TypeError: Cannot read properties of undefined (reading ‘parentNode’) , and: GET https://one4-01-1.onrender.com/ 500
What options do I have to find out where my error is and how I can fix it? Has anyone ever had the same problem after deployment?

I have already created an .env file in my GitHub, and also created a secret file in render. I also tried to integrate the secrets into the javascript file so that I did not need an .env file. Also I tried to add an web.config file (Since I have seen this in the answers to other questions):

<configuration>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
</configuration>

Displaying name of first cell in each row in react-data-grid

I am creating a fertilizer calculator for my CDRIS project (https://cannabisdris.com) in React.js using React-Data-Grid (https://github.com/adazzle/react-data-grid#readme). For 20 years I’ve used an excel spreadsheet, but now I need to create an application to share and gather free open source nutrient data.

Thank you for any help you can provide. This is my gift, to create this open source tool for anyone to be able to calculate their nutrients the way I did to establish and take the skywalker og to its potential (its potential at the time; skies the limit!). https://www.420magazine.com/community/members/luke-skywalker.82857

I’m an amateur coder, but did graduate from hackreactor in 2020.

Here is an image of my nutrient calculator, and what I need to recreate in some manner in React.

This is my excel spreadsheet I am recreating in React.js

In my new app I have been able to easily label my column headers, but need to label my row headers.

Here is my current code.

import DataGrid from 'react-data-grid';
//import { Toolbar, Data } from 'react-data-grid-addons'; //commented out, need more info
// import logo from './logo.svg'; //commented out this logo, logo is in css file
import './App.css';

export interface Row {
  id: string;
  name: string;
  ppm: number;
  grams: number;
  ratios: number;
  sentence: string;
  words: string;
  date: string;
  //?
}

function rowKeyGetter(row: Row) {
  return row.id;
}

// function MyGrid() { //code from react-data-grid github start up; unused at this time
//   return <DataGrid columns={columns} rows={rows} rowKeyGetter={rowKeyGetter} />;
// }

//need 25X17?
const columns = [
  {
    key: 'Compound',
    name: 'COMPOUND'
  },
  {
    key: 'ENTER GRAMS',
    name: 'ENTER GRAMS'
  },
  {
    key: 'N',
    name: 'N'
  },
  {
    key: 'P',
    name: 'P'
  },
  {
    key: 'K',
    name: 'K'
  },
  {
    key: 'Mg',
    name: 'Mg'
  },
  {
    key: 'Ca',
    name: 'Ca'
  },
  {
    key: 'S',
    name: 'S'
  },
  {
    key: 'Fe',
    name: 'Fe'
  },
  {
    key: 'Mn',
    name: 'Mn'
  },
  {
    key: 'Zn',
    name: 'Zn'
  },
  {
    key: 'Bo',
     name: 'Bo'
    },
  {
    key: 'Cu',
    name: 'Cu'
  },
  {
    key: 'Cl',
    name: 'Cl'
  },
  {
    key: 'Na',
    name: 'Na'
  },
  {
    key: 'Mo',
    name: 'Mo'
   },
  {
    key: 'SILICA',
    name: 'SILICA'
  }
];

const rows = [
  {
    id: 0,
    title: 'Triple-20',
    name: 'Triple-20'
  },
  {
    id: 1,
    title: 'Urea',
    name: 'Urea'
  },
  {
    id: 2,
    title: 'Ammonium Sulfate'
  },
  {
    id: 3,
    title: 'Potassium Nitrate'
  },
  {
    id: 4,
    title: 'Potassium Sulfate'
  },
  {
    id: 5,
    title: 'PEAK'
  },
  {
    id: 6,
    title: 'MonoAmmonium Phosphate'
  },
  {
    id: 7,
    title: 'Calcium Nitrate'
  },
  {
    id: 8,
    title: 'Magnesium Nitrate'
  },
  {
    id: 9,
    title: 'Magnesium Sulfate'
  },
  {
    id: 10,
    title: 'Example'
  },
  {
    id: 11,
    title: 'Demo'
  },
  {
    id: 12,
    title: 'Example'
  },
  {
    id: 13,
    title: 'Demo'
  },
  {
    id: 14,
    title: 'Example'
  },
  {
    id: 15,
    title: 'Demo'
  },
  {
    id: 16,
    title: 'Example'
  },
  {
    id: 17,
    title: 'Demo'
  },
  {
    id: 18,
    title: 'Example'
  },
  {
    id: 19,
     title: 'Demo'
    },
  {
    id: 20,
    title: 'Example'
  },
  {
    id: 21,
     title: 'Demo'
    }
];

function App() {
  return <DataGrid columns={columns} rows={rows} rowKeyGetter={rowKeyGetter} style={{height: 810}}/>;
}

export default App;

And this is what is rendering to the dom:

This is the beginnings of my react app reproducing my excel fertilizer calculator.

As you can see the names of my nutrient compounds are not listed on the leading cell for each row in column one.

(Note in the excel example, cell A1 is labeled ‘GRAMS.’ In my new React calculator I’ve decided to label this cell ‘COMPOUND.’)

My next step after labeling all the necessary cells, I will then figure out how to code each cell with the necessary calculations to determine the parts per million of each element.

So a broader important question is, how do I access any individual cell in any row? Then how do I add a name to the cell (or whatever we want to do in the cell. An example for the next task would be cell C2, which will calculate the amount of N03 in triple 20).

So this may be a better approach. If I can learn how to access any given cell, then I can add names to all the cells of column 1 (the first cell in each row, the names of the compounds). And then I would know how to carry on with step 2, to access any given cell to get it to do its task of either getting ppm numbers or adding up other cells to provide tallies and ratios.

This would be a huge step to get me on my way! Thank you!