=
35.173.57.84

Daschmi's Notizblog

Logo des Etikators - Tool um online drucken von Etiketten für selbst angefertigte Tinkturen

Canvas und Rechtecke mit abgerundeten Ecken

Erstellt in Sonstiges am 31. Juli 2019

Für den Etikator brauchte ich eine kleine Funktion, die in der HTML5 Visualisierung runde Ecken darstellt. Diese habe ich mit dem Canvas Element und folgender Funktion realisiert:

function roundRect(ctx, x, y, w, h, r) {
   
   ctx.beginPath();
   ctx.moveTo(x + r, y);
   ctx.lineTo(x + w - r, y);
   ctx.quadraticCurveTo(x + w, y, x + w, y + r);
   ctx.lineTo(x + w, y + h - r);
   ctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h);
   ctx.lineTo(x + r, y + h);
   ctx.quadraticCurveTo(x, y + h, x, y + h - r);
   ctx.lineTo(x, y + r);
   ctx.quadraticCurveTo(x, y, x + r, y);
   ctx.closePath();

}

PHP Funktion um HEX Farben in Dezimal RGB Farben zu zerlegen

Erstellt in PHP, Sonstiges am 18. März 2019

/**
 * @param string $hex #FF0000 oder FF0000
 * @param array $default
 * @return array
 */
public static function hex2rgb(string $hex, array $default = ['r' => 0, 'g' => 0, 'b' => 0]) : array {

  if (substr($hex, 0, 1) !== '#') $hex = '#'.$hex;
  if (!preg_match('/#([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?\b/', $hex)) return $default;

  $r = substr($hex, 1, 2); $r = hexdec($r);			
  $g = substr($hex, 3, 2); $g = hexdec($g);
  $b = substr($hex, 5, 2); $b = hexdec($b);

  return [
    'r' => $r,
    'g' => $g,
    'b' => $b
  ];

}

Composer Element mit Kategorieauswahl

Erstellt in Sonstiges, Wordpress am 28. Februar 2019

$categories_array = [];

foreach (\get_categories() as $category ) {

   $categories_array[html_entity_decode($category->name)] = $category->term_id;

} 

\vc_map([
   'name' => __('Beitragsfilteransicht 2', 'lhw'),
   'base' => 'm1_postfilter',
   'class' => '',
   'category' => 'M1',
   'params' => [
      [
         'param_name' => 'category_id',
         'type' => 'dropdown',
         'value' => $categories_array,
         'heading' => __('Category filter:', 'lhw'),
         'description' => '',
         'holder' => 'div',
         'class' => ''
      ]
   ]
]); 

(Gesetzliche) Feiertage ermitteln in Abhängigkeit der Bundesländer mittels PHP

Erstellt in PHP, Sonstiges am 22. Februar 2019

Mit folgender PHP Funktion, kann überprüft werden ob an einem Datum (Timestamp) ein Feiertag ist und wenn ja in welchem Bundesland.

class Helper {

	/**
	 * @param $tDay Timestamp des Tages, der auf einen Feiertag überprüft werden soll 
	 * @return array(
	 * 	'text' => '' Text
	 *  'feast' => boolean True wenn Feiertag
	 *  'arState' => '' Leerer Array oder Array mit Bundesländern für die der Feiertag gilt
	 * )
	 * 
	 * 	BW = Baden-Württemberg
	 * 	BY = Bayern
	 * 	BE = Berlin
	 * 	BB = Brandenburg
	 * 	HB = Bremen
	 * 	HH = Hamburg
	 * 	HE = Hessen
	 * 	MV = Mecklenburg-Vorpommern
	 * 	NI = Niedersachsen
	 * 	NW = Nordrhein-Westfalen
	 * 	RP = Rheinland-Pfalz
	 * 	SL = Saarland
	 * 	SN = Sachsen
	 * 	ST = Sachsen-Anhalt
	 * 	SH = Schleswig-Holstein
	 * 	TH = Thüringen
	 */
	public static function getFeastInfo($tDay) {
		
		$md = date('md', $tDay);		
		$tEaster = easter_date(date('Y', $tDay));
		
		$text = ''; $feast = ''; $arState = [];		
				
		if ($md == '0101') { $feast = _('Neujahr'); }
		else if ($md == '0501') { $feast = _('Erster Mai'); }
		else if ($md == '0106') { $feast = _('Heiligen Drei Könige'); $arState = ['BW', 'BY', 'ST']; }
		else if ($md == date('md', strtotime('-2 day', $tEaster))) { $feast = _('Karfreitag'); }
		else if ($md == date('md', $tEaster)) { $feast = _('Ostersonntag'); }
		else if ($md == date('md', strtotime('+1 day', $tEaster))) { $feast = _('Ostermontag'); $arState = ['SN']; }
		else if ($md == date('md', strtotime('+39 day', $tEaster))) { $feast = _('Christi Himmelfahrt'); }
		else if ($md == date('md', strtotime('+49 day', $tEaster))) { $feast = _('Pfingstsonntag'); }
		else if ($md == date('md', strtotime('+50 day', $tEaster))) { $feast = _('Pfingstmontag'); }
		else if ($md == date('md', strtotime('+60 day', $tEaster))) { $feast = _('Fronleichnam'); $arState = ['BW', 'BY', 'HE', 'NW', 'RP', 'SL', 'SN', 'TH']; }
		else if ($md == '0815') { $feast = _('Maria Himmelfahrt'); $arState = ['SL', 'BY']; }
		else if ($md == '1003') { $feast = _('Tag der deutschen Einheit'); }
		else if ($md == '1031') { $feast = _('Reformationstag'); $arState = ['BB', 'MV', 'SN', 'ST', 'TH']; }
		else if ($md == '1101') { $feast = _('Allerheiligen'); $arState = ['BW', 'BY', 'NW', 'RP', 'SL']; }
		else if ($md == date('md', strtotime("last wednesday", mktime(0, 0, 0, 11, 23,date('Y', $tDay))))) { $feast = _('Buß- und Bettag'); $arState = ['SN']; }
		else if ($md == '1224') { $feast = _('Heiliger Abend'); }
		else if ($md == '1225') { $feast = _('1. Weihnachtsfeiertag'); }
		else if ($md == '1226') { $feast = _('2. Weihnachtsfeiertag'); }
		else if ($md == '1231') { $feast = _('Silvester (Bankfeiertag)'); }
		else if ($md == '1231') { $feast = _('Silvester (Bankfeiertag)'); }
		else if ($md == '0803') { $feast = _('Internationaler Frauentag'); $arState = ['BE']; }
					
		if (date('N', $tDay) === '6') $text = 'Samstag';
		else if (date('N', $tDay) === '7') $text = 'Sonntag';
		else $text = '';
		
		if (sizeof($arState) > 0) {
			
			$arStateMapping = [
				'BW' => 'Baden-Württemberg', 'BY' => 'Bayern', 'BE' => 'Berlin', 'HB' => 'Bremen', 'HH' => 'Hamburg', 'HE' => 'Hessen' ,'MV' => 'Mecklenburg-Vorpommern', 'NI' => 'Niedersachsen', 'NW' => 'Nordrhein-Westfalen',
				'RP' => 'Rheinland-Pfalz', 'SL' => 'Saarland', 'SN' => 'Sachsen', 'ST' => 'Sachsen-Anhalt', 'SH' => 'Schleswig-Holstein', 'TH' => 'Thüringen'
			];
			
			foreach ($arState as $k => $v) {
				
				$arState[$k] = $arStateMapping[$v];
				
			}
			
		}
						
		if ($feast === '' && $text === '') $text = 'Arbeitstag';
		else if ($feast !== '' && $text !== '') $text = $text.' ('.$feast.rtrim(', '.implode(', ', $arState), ' ,').')';
		else if ($feast !== '') $text = $feast.rtrim(', '.implode(', ', $arState), ' ,');
			
		return [
			'text' => $text, 
			'feast' => ($feast !== ''),
			'arState' => $arState
		];
		
	}

}

Siehe auch: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland

HTML Textarea auf Zeilen/Rows bei Eingabe begrenzen

Erstellt in Sonstiges am 19. Januar 2019

Um ein HTML Input Element von Typ TEXTAREA auf Zeilenanzahl zu beschränken kann folgender Code verwendet werden.

Voraussetzung:

  • TEXTAREA hat eine feste Breite und Höhe
  • TEXTAREA hat eine definierte Zeilenhöhe
  • Resize der TEXTAREA sollte unterbunden werden
  • jQuery (der Code kann auch auf reines vanilla.js umgeschrieben werden)
<textarea style="white-space:normal; resize:none; min-height:0px; height:60px; width:300px; line-height:20px;" rows="3" id="limitlines"></textarea>

jQuery(document).ready(function() {
						
   jQuery('#limitlines').on('input', function() {
      
      var jqTextarea = jQuery(this);
      var line_height = parseInt(jqTextarea.css('line-height').replace(/px/, ''));
      var rows = parseInt(jqTextarea.attr("rows"));
      
      while (jqTextarea.get(0).scrollHeight > rows * line_height) {
            
         jqTextarea.val(jqTextarea.val().substring(0, jqTextarea.val().length - 1)); 
         
      }
         
   });
   
});

Beispiel: