Page 1 of 1

Place to put scripts available anywhere in the app

Posted: Fri Mar 15, 2024 6:27 am
by yvesf
Hello,

I am trying to put global script in the app. Looking in the setup section, I have put my scripts as below :

Code: Select all

function nuHeaderTest() {
 console.log('Functions placed here are available anywhere in nuBuilder Forte.');

function capitalize(string) {
    return string
        .split('-') // Diviser en cas de noms composés
        .map(word => word.charAt(0).toUpperCase() + word.slice(1)) // Capitaliser chaque mot
        .join('-'); // Rejoindre les mots avec un tiret
}

function capitalizeName(name) {
    // Diviser le nom en mots en utilisant les espaces comme délimiteur
    let words = name.split(' ');
    
    // Mettre tous les mots en majuscules
    for (let i = 0; i < words.length; i++) {
        words[i] = words[i].toUpperCase();
    }
    
    // Joindre les mots ensemble avec un espace
    let capitalizedString = words.join(' ');

    // Diviser le nom en parties en utilisant les tirets comme délimiteur
    let parts = capitalizedString.split('-');

    // Recréer le nom en conservant les tirets à leur position d'origine
    let finalName = '';
    for (let i = 0; i < parts.length; i++) {
        if (i !== 0) {
            finalName += '-';
        }
        finalName += parts[i];
    }

    return finalName;
}


function checkfld(evt, str, mask) {

  var mLn = mask.length;
  var orgstr = str.value;
  var sLn = orgstr.length;  
  var curstr = evt.key
  var validmasks = '#@';
  var charCode = (evt.which) ? evt.which : evt.keyCode

  if (charCode == 8 || charCode == 37 || charCode == 39 || charCode == 35 || charCode == 13|| charCode == 9) {return false;}  
  // if user presses left arrow 8 |backspace 37 |right arrow 39| end 35 | home 36 | del 46 | enter=13 |tab=9
  if (charCode == 46) {str.value = ""; return evt.preventDefault(); }  // if user presses del = delete ALL
  if (charCode == 32) {return evt.preventDefault(); }  // if user presses space
  /* alert(charCode); */

  if (sLn < mLn) {

  var i=0;
  var charmask = mask[sLn+i];

while (!validmasks.includes(charmask)) {   
   str.value = str.value + charmask; 
   if (i>4) {break;}
   i++;
   charmask = mask[sLn+i];
} /* while */   
   
   switch(charmask) {
     case "#":
        if ((curstr >=0) && (curstr <=9)) { return true; 
        } else { return evt.preventDefault(); }
        break;
       
     case "@":
        if ((curstr.toUpperCase() >= "A") && (curstr.toUpperCase() <= "Z")) { return true; 
        } else { return evt.preventDefault(); }
        break;
        
     default:
        return evt.preventDefault(); 
       break;
   } /*switch */     
 
  } else { return evt.preventDefault(); }   /* if sLn < mLn mask length */  
return true;
}


}

// This function will be run after each Edit Form loads.
function nuLoadEditGlobal(formId, formCode) {



}

// This function be run after each Browse Form loads.
function nuLoadBrowseGlobal(formId, formCode) {

}

// This function be run after each Browse and Edit Form loads.
function nuOnLoad(formId, formCode) {

}

// Include external resources:

 </script>

 <!--
 
 <link rel="stylesheet" type="text/css" href="path_to_css.css"/>
 
 <script type="text/javascript" src="path_to_js.js"></script>
 
 -->

 <script>


or

Code: Select all

function nuHeaderTest() {
 console.log('Functions placed here are available anywhere in nuBuilder Forte.');


}

// This function will be run after each Edit Form loads.
function nuLoadEditGlobal(formId, formCode) {


}

// This function be run after each Browse Form loads.
function nuLoadBrowseGlobal(formId, formCode) {

}

// This function be run after each Browse and Edit Form loads.
function nuOnLoad(formId, formCode) {
function capitalize(string) {
    return string
        .split('-') // Diviser en cas de noms composés
        .map(word => word.charAt(0).toUpperCase() + word.slice(1)) // Capitaliser chaque mot
        .join('-'); // Rejoindre les mots avec un tiret
}

function capitalizeName(name) {
    // Diviser le nom en mots en utilisant les espaces comme délimiteur
    let words = name.split(' ');
    
    // Mettre tous les mots en majuscules
    for (let i = 0; i < words.length; i++) {
        words[i] = words[i].toUpperCase();
    }
    
    // Joindre les mots ensemble avec un espace
    let capitalizedString = words.join(' ');

    // Diviser le nom en parties en utilisant les tirets comme délimiteur
    let parts = capitalizedString.split('-');

    // Recréer le nom en conservant les tirets à leur position d'origine
    let finalName = '';
    for (let i = 0; i < parts.length; i++) {
        if (i !== 0) {
            finalName += '-';
        }
        finalName += parts[i];
    }

    return finalName;
}


function checkfld(evt, str, mask) {

  var mLn = mask.length;
  var orgstr = str.value;
  var sLn = orgstr.length;  
  var curstr = evt.key
  var validmasks = '#@';
  var charCode = (evt.which) ? evt.which : evt.keyCode

  if (charCode == 8 || charCode == 37 || charCode == 39 || charCode == 35 || charCode == 13|| charCode == 9) {return false;}  
  // if user presses left arrow 8 |backspace 37 |right arrow 39| end 35 | home 36 | del 46 | enter=13 |tab=9
  if (charCode == 46) {str.value = ""; return evt.preventDefault(); }  // if user presses del = delete ALL
  if (charCode == 32) {return evt.preventDefault(); }  // if user presses space
  /* alert(charCode); */

  if (sLn < mLn) {

  var i=0;
  var charmask = mask[sLn+i];

while (!validmasks.includes(charmask)) {   
   str.value = str.value + charmask; 
   if (i>4) {break;}
   i++;
   charmask = mask[sLn+i];
} /* while */   
   
   switch(charmask) {
     case "#":
        if ((curstr >=0) && (curstr <=9)) { return true; 
        } else { return evt.preventDefault(); }
        break;
       
     case "@":
        if ((curstr.toUpperCase() >= "A") && (curstr.toUpperCase() <= "Z")) { return true; 
        } else { return evt.preventDefault(); }
        break;
        
     default:
        return evt.preventDefault(); 
       break;
   } /*switch */     
 
  } else { return evt.preventDefault(); }   /* if sLn < mLn mask length */  
return true;
}




}

// Include external resources:

 </script>

 <!--
 
 <link rel="stylesheet" type="text/css" href="path_to_css.css"/>
 
 <script type="text/javascript" src="path_to_js.js"></script>
 
 -->

 <script>



It sounds it isn't the right place as it is not available everywhere. Consequence : I put those scripts behind each form which not ideal especially in regards to maintainability as if I have to change this script, I have to duplicate the new one on each form.
What is the recommended approach ?
Many thx,

Yves

Re: Place to put scripts available anywhere in the app

Posted: Fri Mar 15, 2024 8:03 am
by kev1n
Make sure that your code contains no syntax errors (check the developer console)

Re: Place to put scripts available anywhere in the app

Posted: Fri Mar 15, 2024 10:06 am
by yvesf
Kev1n,

When I put this script directly behind the form, it works. What is the recommended approach ? Is it the right place in nuHeader test or in nuOnLoad fonction ? I will follow your recommandations and take a look in the developper console definitely.

Thx

Yves

Re: Place to put scripts available anywhere in the app

Posted: Fri Mar 15, 2024 10:17 am
by kev1n
You placed your functions within the function nuHeaderTest() an therefore they are not accessible/visible.

Give this a go:

Code: Select all

function nuHeaderTest() {
    console.log('Functions placed here are available anywhere in nuBuilder Forte.');
}

function capitalize(string) {
    return string
    .split('-') // Diviser en cas de noms composés
    .map(word => word.charAt(0).toUpperCase() + word.slice(1)) // Capitaliser chaque mot
    .join('-'); // Rejoindre les mots avec un tiret
}

function capitalizeName(name) {
    // Diviser le nom en mots en utilisant les espaces comme délimiteur
    let words = name.split(' ');

    // Mettre tous les mots en majuscules
    for (let i = 0; i < words.length; i++) {
        words[i] = words[i].toUpperCase();
    }

    // Joindre les mots ensemble avec un espace
    let capitalizedString = words.join(' ');

    // Diviser le nom en parties en utilisant les tirets comme délimiteur
    let parts = capitalizedString.split('-');

    // Recréer le nom en conservant les tirets à leur position d'origine
    let finalName = '';
    for (let i = 0; i < parts.length; i++) {
        if (i !== 0) {
            finalName += '-';
        }
        finalName += parts[i];
    }

    return finalName;
}

function checkfld(evt, str, mask) {

    var mLn = mask.length;
    var orgstr = str.value;
    var sLn = orgstr.length;
    var curstr = evt.key
        var validmasks = '#@';
    var charCode = (evt.which) ? evt.which : evt.keyCode

    if (charCode == 8 || charCode == 37 || charCode == 39 || charCode == 35 || charCode == 13 || charCode == 9) {
        return false;
    }
    // if user presses left arrow 8 |backspace 37 |right arrow 39| end 35 | home 36 | del 46 | enter=13 |tab=9
    if (charCode == 46) {
        str.value = "";
        return evt.preventDefault();
    } // if user presses del = delete ALL
    if (charCode == 32) {
        return evt.preventDefault();
    } // if user presses space
    /* alert(charCode); */

    if (sLn < mLn) {

        var i = 0;
        var charmask = mask[sLn + i];
        while (!validmasks.includes(charmask)) {
            str.value = str.value + charmask;
            if (i > 4) {
                break;
            }
            i++;
            charmask = mask[sLn + i];
        } /* while */

        switch (charmask) {
        case "#":
            if ((curstr >= 0) && (curstr <= 9)) {
                return true;
            } else {
                return evt.preventDefault();
            }
            break;

        case "@":
            if ((curstr.toUpperCase() >= "A") && (curstr.toUpperCase() <= "Z")) {
                return true;
            } else {
                return evt.preventDefault();
            }
            break;

        default:
            return evt.preventDefault();
            break;
        } /*switch */

    } else {
        return evt.preventDefault();
    } /* if sLn < mLn mask length */
    return true;
}


// This function will be run after each Edit Form loads.
function nuLoadEditGlobal(formId, formCode) {}

// This function be run after each Browse Form loads.
function nuLoadBrowseGlobal(formId, formCode) {}

// This function be run after each Browse and Edit Form loads.
function nuOnLoad(formId, formCode) {}

// Include external resources:


 <  / script >

 < !--

 < link rel = "stylesheet" type = "text/css" href = "path_to_css.css" /  >

     < script type = "text/javascript" src = "path_to_js.js" >  <  / script >

    -- >

    < script >