Spis treści

Większość Odtwarzaczy wymaga pewnego rodzaju opcji konfiguracyjnych. Konfiguracja może się różnić dla każdej instancji Odtwarzacza (czyli za każdym razem, gdy używasz Odtwarzacza).

W przypadku naszego prostego Odtwarzacza Zegara przyjmijmy, że chcemy dodać następujące opcje konfiguracyjne:

  • Rozmiar czcionki zegara: podaj dokładny rozmiar czcionki w pikselach (Integer)
  • Pokaż sekundy: opcja wyświetlania części sekund zegara lub jej wyłączenia (Boolean)

Aby dodać te opcje do Odtwarzacza, należy wykonać 3 czynności:

  1. Zmodyfikuj kod Odtwarzacza, aby akceptował wartości konfiguracyjne.
  2. Dodaj funkcję init_widget(config) odtwarzacza, którą odtwarzacz wywołuje, gdy aplikacja zakończył ładowanie i przekazuje parametry konfiguracyjne JSON.
  3. Ułatw konfigurowanie poprzez specyfikację formularza UI, aby można było utworzyć formularz edytujący te opcje dla instancji Odtwarzacza.

Zmodyfikuj kod Odtwarzacza

Zmodyfikuj kod Odtwarzacza w następujący sposób:

index.html

<!DOCTYPE html>
<html>
<head>
<script>

var use_seconds = true;
function startTime() {
    var today = new Date();
    var h = today.getHours();
    var m = today.getMinutes();
    var s = 0
    m = checkTime(m);
	txtEl = document.getElementById('txt')

	if(use_seconds){
		s = today.getSeconds();
    	s = checkTime(s);
		txtEl.innerHTML = h + ":" + m + ":" + s;
	}
	else{
    	txtEl.innerHTML = h + ":" + m;
	}
    var t = setTimeout(startTime, 500);
}
function checkTime(i) {
    if (i < 10) {i = "0" + i};  // add zero in front of numbers < 10
    return i;
}
function init_widget(config) {
		if (!config) {
			return;
		}
	
		if("clock_font_size" in config){
			var pixels = config.clock_font_size + "px"
			document.getElementById('txt').style.fontSize = pixels;
		}

		if("use_seconds" in config){
			use_seconds = config.use_seconds;
		}
		
		startTime()
		
}
</script>
</head>
<body>

<div id="txt" style="font-size: 48px"></div>

</body>
</html>

Utwórz formularz konfiguracyjny UI dla Odtwarzacza

Aby umożliwić konfigurowanie Odtwarzacza, musisz dostarczyć szczegółową specyfikację pól konfiguracyjnych. W tym celu korzystasz z JSON Schema. Po prostu wklej tekst JSON Schema do pola tekstowego.

Do 2 wartości konfiguracyjnych potrzebujemy teraz,

  • wartość „schema” definiuje edytory dla każdego z pól,
  • wartość „fields” jest opcjonalna i określa kolejność, w jakiej pola pojawią się w formularzu.

Poniżej znajduje się JSON Schema do wykorzystania:

Konfiguracja UI

{
  "fields": [
    "clock_font_size",
    "use_seconds"
  ],
  "schema": {
    "clock_font_size": {
      "editorAttrs": {
        "max": 999,
        "min": 1,
        "step": 1
      },
      "title": "Clock Font Size",
      "type": "Number",
      "validators": [
        "required",
        "number"
      ]
    },
    "use_seconds": {
      "title": "Use Seconds",
      "type": "Checkbox"
    }
  }
}