- JavaScript 98.5%
- HTML 0.8%
- SCSS 0.4%
- CSS 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .vscode | ||
| assets | ||
| build | ||
| charts | ||
| data | ||
| geojson | ||
| images/portal | ||
| metadata | ||
| tailwind | ||
| .gitattributes | ||
| .gitignore | ||
| .nvmrc | ||
| .travis.yml | ||
| 7513.svg | ||
| _config.yml | ||
| all.html | ||
| apple-touch-icon.png | ||
| c9-setup.sh | ||
| chart-details.html | ||
| chart-dev.html | ||
| chart.html | ||
| eslint.config.mjs | ||
| favicon-16x16.png | ||
| favicon-32x32.png | ||
| favicon-96x96.png | ||
| favicon.ico | ||
| filter.html | ||
| id_rsa.enc | ||
| index.html | ||
| index_old.html | ||
| jsconfig.json | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| print.html | ||
| q | ||
| README.md | ||
| tailwind.config.js | ||
| thumbnails.html | ||
Indikatorenportal Statistisches Amt Basel-Stadt
Statistische Indikatoren des Kantons Basel-Stadt finden und darstellen. Live-Version: statistik.bs.ch/indikatorenportal.
Inhalt
- Ansichten und Seiten
- Lokale Installation
- Entwicklung starten
- Projektstruktur
- Daten, Metadaten und Charts pflegen
- Neue Charts erstellen
- Anwendung lokal bauen
- Was macht der Build-Prozess?
- Charts vom FTP-Server aktualisieren
- Charts aus dem "Umweltbericht beider Basel" übernehmen
- PNG/PDF-Export pro Indikatorenset
- Vorschaubilder manuell erzeugen
- URL-Parameter
- Bekannte Highcharts-12-Kompatibilitätsthemen
- Abhängigkeiten aktualisieren
- Entwicklung in einem privaten GitHub-Repository
- Entwicklung mit Cloud9
- Lizenzierung
Ansichten und Seiten
index.html– Das Portal: durchsuchbare, filterbare Übersicht aller Indikatoren. Bietet drei Ansichtsoptionen (oben rechts umschaltbar): Kachelansicht, Tabellenansicht (Titel, Untertitel, Thema, Unterthema, Publikationsdatum ohne Vorschaubild) sowie eine Listenansicht, die aktuell im UI ausgeblendet ist, deren Funktionalität aber vollständig erhalten bleibt (sieheassets/js/indikatoren-filter.js,portalViewMode).- Standardmässig werden 32 Indikatoren geladen; über den Button "Alle anzeigen" werden weitere nachgeladen. Alle Metadaten sind dabei bereits vollständig im Browser vorhanden – die Begrenzung betrifft nur die gerenderten Kacheln, nicht die in der Lightbox verfügbaren Indikatoren.
- Klick auf einen Indikator öffnet die Lightbox (
assets/js/lightbox.js) mit Chart, Lesehilfe, Erläuterungen und Links; Navigation mit Pfeiltasten oder den Pfeil-Buttons durch alle gefilterten Indikatoren. - Mit dem Parameter
Indikatorensetwechselt die Seite in die Indikatorenset-Ansicht (siehe URL-Parameter).
chart-details.html– Einzelner Indikator als eigenständige oder eingebettete Seite (?id=…). MithideHeader=falseerscheint der Kopfbereich und der Inhalt wird wie der Rest der Seite in einem.containerdargestellt (für die eigenständige Nutzung); mithideHeader=true(Standard für Einbettung via iframe) nimmt der Inhalt die volle Breite ein.chart.html– Ähnlich wiechart-details.html, dient v. a. als Einbettungsziel innerhalb der Portal-/Indikatorenset-Ansicht und für den Vorschaubild-Export.chart-dev.html– Minimalseite zum isolierten Entwickeln/Testen eines einzelnen Charts, ohne den restlichen Portal-Code zu laden.print.html– Erzeugt PNG/PDF-Dateien aller Charts eines Indikatorensets zum Download (siehe PNG/PDF-Export).thumbnails.html,all.html– Hilfsseiten zum manuellen Erzeugen bzw. Durchblättern aller Vorschaubilder im Browser.
Lokale Installation
Node.js installieren, danach im Projektverzeichnis:
npm install
Entwicklung starten
Lokalen Server starten (Port 8084, zeigt den aktuellen, bereits gebauten Stand):
npm run local-server
Für Änderungen an Layout/Styling zusätzlich in einem zweiten Terminal den Tailwind-Watcher laufen lassen – er kompiliert tailwind/tailwind.css fortlaufend nach assets/css/tailwind.css. Dieser Schritt ist nicht Teil von npm run build und muss während der Entwicklung separat laufen:
npm run build:tailwind:watch
Nach Änderungen an Daten, Metadaten oder Chart-Konfigurationen die Anwendung neu bauen (siehe Anwendung lokal bauen).
Projektstruktur
| Pfad | Inhalt |
|---|---|
metadata/single/[id].json |
Metadaten eines Indikators (Titel, Untertitel, Lesehilfe, Erläuterungen, Quellenangabe, Thema/Unterthema, Kennzahlenset, Template, …). Quelle der Wahrheit – wird von Hand oder per Import gepflegt. |
data/[id].tsv |
Rohdaten des Indikators als Tab-separierte Datei. |
charts/templates/[id].js |
Chart-spezifische Highcharts-Optionen eines einzelnen Indikators (Serienfarben, Tooltips, individuelle Legenden-Positionierung usw.), zusammengeführt mit dem Basis-Template. |
charts/templates/[template].js |
Basis-Templates (z. B. line001, map001, mappie001, spider001, …), gemeinsam genutzt von mehreren Indikatoren. Siehe Neue Charts erstellen für die vollständige Übersicht. |
charts/configs/portal/[id].json |
Generiert durch npm run build:charts – fertig zusammengeführte Highcharts-Konfiguration pro Indikator. Nicht von Hand bearbeiten, sondern die Quelldateien (Daten/Metadaten/Template) anpassen und neu bauen. |
images/portal/[id].svg |
Generiert durch npm run build:images – statisches Vorschaubild für Kachel-/Listenansicht. Nicht von Hand bearbeiten. |
metadata/all/, metadata/portal/, metadata/sets/ |
Generiert durch npm run build:database / build:partial_databases – aggregierte Metadaten-Datenbanken für Portal- bzw. Indikatorenset-Ansicht. |
assets/js/indikatoren-highcharts.js |
Zentrale Rendering-Logik: lädt Template + Chart-Konfiguration + Daten, merged sie und erstellt den Highcharts-Chart. Enthält auch die Highcharts-12-Kompatibilitäts-Patches (siehe unten). |
assets/js/indikatoren-filter.js |
Filter-, Such-, Sortier- und Ansichtslogik des Portals (basiert auf FilterJS). |
assets/js/lightbox.js |
Lightbox-/Detailansicht im Portal inkl. Navigation zwischen Indikatoren. |
tailwind/ |
Tailwind-Quell-CSS und Komponenten; wird zu assets/css/tailwind.css kompiliert. |
build/ |
Node.js-Build-Skripte, siehe Was macht der Build-Prozess?. |
tmp/chartsToBuild.json |
Von build:find_changed_charts befüllte bzw. manuell setzbare Liste von Indikator-IDs, die beim nächsten build:charts/build:images-Lauf verarbeitet werden. Nicht versioniert. |
Daten, Metadaten und Charts pflegen
Daten hinzufügen/aktualisieren
TSV-Datei mit dem Namen [id].tsv in den Ordner data/ kopieren.
Metadaten hinzufügen/aktualisieren
JSON-Datei mit dem Namen [id].json in den Ordner metadata/single/ kopieren, danach lokal bauen (siehe unten), damit die aggregierten Metadaten-Datenbanken aktualisiert werden.
Chart-Konfiguration hinzufügen/aktualisieren
Datei [id].js in den Ordner charts/templates/ kopieren. Sie muss eine self-invoking function enthalten, die ein JavaScript-Objekt mit den Abweichungen vom Basis-Template zurückgibt – mindestens der Knoten series wird benötigt.
Kennzahlensets für Print initialisieren
Für ein neues Print-Kennzahlenset können Daten und Chart-Konfigurationen vom jeweiligen Eltern-Kennzahlenset übernommen werden:
- Metadaten-Dateien nach
metadata/single/hochladen. - Ausführen:
Prüft für jede Metadaten-Datei, ob passendenpm run build:init_print_chartsdata/[id].tsv- undcharts/templates/[id].js-Dateien existieren. Falls nicht, werden sie vom Eltern-Chart kopiert – ein guter Ausgangspunkt, um die Print-Darstellung zu verfeinern.
Neue Charts erstellen
- Metadaten-JSON nach
metadata/single/[id].jsonhochladen. - TSV-Datei nach
data/[id].tsvhochladen. - Eine bestehende Chart-Definition nach
charts/templates/[id].jskopieren oder neu erstellen. Die Datei muss eine self-invoking function enthalten, die zurückgibt:- ein Array
seriesmit einem Objekt pro Datenspalte, die im Chart verwendet werden soll (ab der 2. Spalte der TSV-Datei; für die erste Spalte ist kein Objekt nötig), - alle Abweichungen vom Basis-Template, das in den Metadaten des Charts festgelegt ist (
template-Feld).
- ein Array
chart-dev.htmlanpassen (Chart-ID und Template-Datei) und im Browser laden, um das Ergebnis zu prüfen.- Bei Bedarf die Chart-Definition anhand der Highcharts-API-Dokumentation verfeinern.
- In
metadata/all/templatesById.jsonlässt sich nachschauen, welche Charts auf welchem Template basieren. - Um den Chart im Portal bzw. in der Indikatorenset-Ansicht anzuzeigen: Anwendung lokal bauen.
Verfügbare Basis-Templates (Klick auf das Bild öffnet den interaktiven Chart):
- area001 – z. B. 6548:
- befragungen001 – Umfrageergebnisse als absolute Zahlen:
- befragungenProzent001 – Umfrageergebnisse in Prozent:
- bubble001:
- dotplot:
- line001:
- map001 – Wohnviertel-Choroplethenkarte mit Rängen aus der Datendatei im Tooltip:
- map002 – einfache Wohnviertel-Choroplethenkarte ohne Ränge, mit einfachem Tooltip:
- mapcolumn002:
- mappie001 – Kreise/Kuchendiagramme auf einer Karte:
- pie001:
- populationPyramid001:
- spider001 – Netz-/Radardiagramm ("Quartierradar"):
- stock001 – Zeitachse mit Mini-Chart zum Filtern, z. B. 4132:
- template001 – Allzweck-Template; die meisten Balken-, Säulen- und Kombinationscharts basieren darauf:
Anwendung lokal bauen
Metadaten-Datenbanken, Chart-Konfigurationen und SVG-Vorschaubilder aller seit dem letzten Build geänderten Charts neu erzeugen:
npm run build
Alles neu bauen, unabhängig von Änderungen:
npm run rebuild
Statt eines vollständigen Builds können auch gezielt einzelne Indikatoren neu gebaut werden: gewünschte IDs in tmp/chartsToBuild.json eintragen (z. B. ["6630","6631"]), dann:
npm run build:charts
npm run build:images
Was macht der Build-Prozess?
build:database– Erstellt die Metadaten-Datenbanken für die Portal-Ansicht: liest jede Dateimetadata/single/[id].json, ermittelt Sichtbarkeit (visible) und Portal-Sichtbarkeit (visibleInPortal), schreibt sichtbare Indikatoren nachmetadata/all/indikatoren.json, portal-sichtbare nachmetadata/portal/indikatoren.json. Erzeugt zudemmetadata/all/kuerzelById.json,idByKuerzel.json,templatesById.jsonundall.mdals menschenlesbare Nachschlagehilfen.build:find_changed_charts– Vergleicht Prüfsummen vondata/,metadata/single/,charts/templates/mit dem Stand des letzten Builds (metadata/all/hashesAfterBuild.json) und trägt geänderte IDs intmp/chartsToBuild.jsonein.build:partial_databases– Erstellt pro Kennzahlenset eine JSON-Datenbank untermetadata/sets/[kennzahlenset].json, die in der Indikatorenset-Ansicht anstelle der grösseren Dateimetadata/portal/indikatoren.jsongeladen wird.build:charts– Erzeugt für jeden Chart intmp/chartsToBuild.jsondie zusammengeführte Highcharts-Konfigurationcharts/configs/portal/[id].jsonausdata/[id].tsv,metadata/single/[id].json,charts/templates/[id].jsund dem zugehörigen Basis-Template.build:images– Erzeugt für jeden Chart intmp/chartsToBuild.jsondas Vorschaubildimages/portal/[id].svgaus der jeweiligen Highcharts-Konfiguration (viahighcharts-export-server). Bei Karten-Charts werden Legende, Zoom-Buttons und Massstabsleiste für die Vorschau ausgeblendet.build:images_viewbox– Ergänzt die generierten SVGs um einviewBox-Attribut für eine saubere Darstellung.build:optimize_images– Optimiert die SVG-Dateien (kleinere Dateigrösse).build:save_checksums– Speichert Prüfsummen aller Dateien inmetadata/all/hashesAfterBuild.json, damitbuild:find_changed_chartsbeim nächsten Lauf Änderungen erkennt.build:copy_modules– Kopiert die für die Live-Website benötigten npm-Module (siehepackage.json, Schlüsseldependencies) nachassets/js/modules.build:copy_data_per_set– Kopiert TSV-Dateien in einen nach Kennzahlenset benannten Ordner (data/sets/[kennzahlenset]/[id].tsv).deployNewCharts– Lädt Daten, Metadaten und Konfiguration für Charts herunter, die laut FTP-Server bereit zur Aktualisierung sind (siehe Charts vom FTP-Server aktualisieren).
Charts vom FTP-Server aktualisieren
npm run deployNewCharts
npm run build
Danach wie gewohnt bauen, committen und pushen.
Charts aus dem "Umweltbericht beider Basel" übernehmen
- In der Indikatoren-App (Access) unter "Spezialtabellen" → "Umweltbericht Indikatoren": "Metadaten einlesen" (holt Metadaten aller Indikatoren von der UB-Webseite), dann "Metadaten abgleichen" (importiert die Metadaten in die lokale Indikatoren-DB).
- Alle betroffenen Indikatoren auf Status "Bereit für Live" setzen und "publizieren", um die JSON-Dateien mit korrektem "zuletzt geändert"-Datum zu exportieren.
- GitHub: neues Issue und dazugehörigen Branch anlegen.
- Branch auschecken, Metadaten (JSON) und TSV-Dateien (nur für Indikatoren, deren Daten nicht aus dem Umweltbericht übernommen werden) wie oben beschrieben in den Branch kopieren.
- Ausführen:
Dies öffnet mit CasperJS/PhantomJS alle Charts des Kennzahlensets "Umwelt" und speichert ihre Highcharts-Konfiguration innpm run build:create_umwelt_charts npm run build:clean_umwelt_chartscharts/configs/portal. IstdatenInChartIntegrierteines Umwelt-Charts:false: wird die Highcharts-Konfiguration bereinigt und alscharts/templates/[id].jsgespeichert (ermöglicht die Verwendung mit extern bereitgestellten, manuell hochgeladenen TSV-Daten – Standardverhalten für alle anderen Indikatoren).undefinedodertrue: wird die TSV-Datei von der UB-Website heruntergeladen und alsdata/[id].tsvgespeichert (ermöglicht das Abrufen der TSV-Datei über das Highcharts-Hamburger-Menü).
- SVG-Dateien erzeugen:
npm run build - Lokalen Server starten und alles prüfen.
- Committen, pushen.
- Branch-/Issue-Nummer aller Indikatoren des Umwelt-Sets in der StatApp ergänzen, dort Status auf "Bereit für Live" setzen.
- Git-Admin über das Update informieren.
PNG/PDF-Export pro Indikatorenset
- In Chrome
print.html?Indikatorenset=indikatorensetnamebzw.print.html?Indikatorenset=indikatorensetname&type=pdföffnen.- Parameter
viewsteuert, ob der Indikator-Titel enthalten ist:view=print: kein Titelview=portal: Titelview=indikatorenset: Nummer und Titel
- Parameter
- Chrome lädt für jeden Chart des Indikatorensets eine PNG-/PDF-Datei in den lokalen Downloads-Ordner herunter; von dort manuell in den Zielordner verschieben.
- Verwendet einen Highcharts Node.js Export Server, der auf dem StatA-Server
pdstatasvpapp05(highcharts-export.stata.pd.intranet.bs.ch) läuft. - Einzelne Charts in der Druckansicht prüfen:
chart.html?view=print&id=5824. - Einzelnen Chart als PNG/PDF herunterladen:
chart.html?thumbnailOfflineExporting=false&thumbnailType=png&view=print&exportServer=https://highcharts-export.stata.pd.intranet.bs.ch/&id=[chart-id]&thumbnailType=[pdf/png].
Vorschaubilder manuell erzeugen
- Portal-Ansicht:
thumbnails.htmlin Chrome öffnen. - Indikatorenset-Ansicht:
thumbnails.html?view=indikatorensetöffnen.
Lädt alle SVG-Dateien in den lokalen Downloads-Ordner herunter; von dort manuell in den jeweiligen Zielordner unter /images/ verschieben.
URL-Parameter
Die meisten der folgenden Parameter lassen sich kombinieren. ? trennt Server/Dokument von der Parameterliste, & trennt weitere Parameter. Filter-Parameter funktionieren auch, wenn das zugehörige Filterelement ausgeblendet ist. Die URL-Kodierung der Parameterwerte übernimmt der Browser automatisch.
| Parameter | Ansicht | Beispiel | Standard | Beschreibung |
|---|---|---|---|---|
Indikatorenset |
Indikatorenset | Beispiel | – | Wechselt in die Indikatorenset-Ansicht: blendet Seitenleiste, Thema- und Räumliche-Gliederung-Filter aus, ergänzt Filter für Stufe 1 und Stufe 2. Zusätzlich wird kuerzelKunde statt kuerzel angezeigt. |
stufe |
Indikatorenset | Beispiel | 2 | Legt die maximale Stufe ("Kapitel"/"Unterkapitel") fest, die als Dropdown-Filter angezeigt wird. |
showHeader |
Portal | Beispiel | false | Zeigt den Kopfbereich mit bs.ch-Logo, StatA-Schriftzug und Link zum Indikatorenportal. |
PerPage |
Portal, Indikatorenset | Beispiel | 16 | Anzahl der pro Seite angezeigten Charts. |
search |
Portal, Indikatorenset | Beispiel | – | Befüllt das Volltextsuchfeld vor. |
thema |
Portal, Indikatorenset | Beispiel | – | Befüllt den Thema-Filter vor. |
unterthema |
Portal, Indikatorenset | Beispiel | – | Befüllt den Unterthema-Filter vor. |
raeumlicheGliederung |
Portal, Indikatorenset | Beispiel | – | Befüllt den Filter für die räumliche Gliederung vor. |
darstellungsart |
Portal, Indikatorenset | Beispiel | – | Befüllt den Darstellungsart-Filter vor. |
stufe1, stufe2, stufe3 |
Portal, Indikatorenset | Beispiel | – | Befüllt die Filter für Stufe 1, Stufe 2 und Stufe 3 vor. |
sort |
Portal, Indikatorenset | Beispiel | orderKey_asc | Sortiert Charts nach einer Metadaten-Eigenschaft. Unterstützt aktuell kuerzel, kuerzelKunde, orderKey, aktualisierungsdatum. |
hideSidebar |
Portal | Beispiel | false | Blendet die Seitenleiste (Volltextsuche, Reset-Button, Thema- und Räumliche-Gliederung-Filter) aus. |
hideSearch |
Portal | Beispiel | false | Blendet das Volltextsuchfeld aus. |
hideResetButton |
Portal | Beispiel | false | Blendet den Filter-Reset-Button aus. |
hideThema |
Portal | Beispiel | false | Blendet den Thema-Filter aus. |
hideUnterthema |
Portal | Beispiel | false | Blendet den Unterthema-Filter aus. |
hideRaeumlicheGliederung |
Portal | Beispiel | false | Blendet den Filter für die räumliche Gliederung aus. |
hideDarstellungsart |
Portal | Beispiel | false | Blendet den Darstellungsart-Filter aus. |
showLastUpdatedSets |
Portal | Beispiel | false | Zeigt die Tabelle der zuletzt aktualisierten Indikatorensets. |
id |
chart-details.html | Beispiel | – | Legt die ID des anzuzeigenden Charts fest. |
hideHeader |
chart-details.html | Beispiel | false | Blendet den Kopfbereich (bs.ch-Logo, StatA-Schriftzug, Link zum Indikatorenportal) aus, verringert den linken Abstand. Bei false wird der Inhalt zusätzlich in einen .container eingefasst (eigenständige Nutzung). |
hideTitle |
chart-details.html | Beispiel | false | Blendet den Chart-Titel im HTML-Text unterhalb des Charts aus. |
hideLesehilfe |
chart-details.html | Beispiel | false | Blendet Titel und Text der Lesehilfe aus. |
hideLesehilfeTitle |
chart-details.html | Beispiel | false | Blendet den Lesehilfe-Titel aus, lässt aber den Text stehen. |
hideErlaeuterungen |
chart-details.html | Beispiel | false | Blendet Titel und Text der Erläuterungen aus. |
hideErlaeuterungenTitle |
chart-details.html | Beispiel | false | Blendet den Erläuterungen-Titel aus, lässt aber den Text stehen. |
hideLinks |
chart-details.html | Beispiel | false | Blendet Titel und Liste der Links aus. |
hideLinksTitle |
chart-details.html | Beispiel | false | Blendet den Links-Titel aus, lässt aber die Liste stehen. |
Bekannte Highcharts-12-Kompatibilitätsthemen
Das Projekt wurde von einer älteren Highcharts-Version auf Highcharts 12 migriert. Einige Templates verwenden noch API-Muster, die es in dieser Form nicht mehr gibt. Damit ältere Chart-Templates trotzdem unverändert funktionieren, patcht assets/js/indikatoren-highcharts.js beim Laden global:
series.yData/series.xData– in Highcharts 12 durchseries.getColumn('y')/getColumn('x')ersetzt; wird perObject.definePropertyals Getter nachgebildet.axis.names/Tick.addLabel–axis.nameskann bei manchen Achsen (z. B. Navigator) undefined sein; wird perafterInit-Event auf[]initialisiert.Tick.addLabelist zusätzlich mit try/catch abgesichert, damit ein fehlerhafter Label-Formatter nur das eine Tick-Label statt den gesamten Chart zum Absturz bringt.chart.events.load/chart.events.rendermit "Wrapper"-Pattern – Wennindikatoren-highcharts.jseinen bestehendenload- oderrender-Handler "einpackt" (um z. B. Legenden nachträglich zu positionieren), wird der ursprüngliche Handler nicht in einer Closure-Variable gespeichert, sondern als Property (options.chart.events.loadBasebzw.renderBase) auf dem serialisierbaren Options-Objekt abgelegt. Grund:build/createChartConfigs.jsserialisiert Funktionen nur als reinen Quelltext – eine Referenz auf eine Closure-Variable geht dabei verloren und wirft beim erneuten Auswerten (z. B. während des Vorschaubild-Exports) einenReferenceError, wodurch der komplette ursprüngliche Handler stillschweigend übersprungen wird.mappie-Serien (Kreise/Kuchendiagramme auf Karten) – positionieren sich überchart.mapView.projectedUnitsToPixels()statt über die früher verwendetenchart.xAxis[0].toPixels()/chart.yAxis[0].toPixels(), die bei Karten-Charts in Highcharts 12 keine gültigen Werte mehr liefern.
Wer ein neues Chart-Template auf Basis eines alten Beispiels erstellt: Diese Muster nach Möglichkeit meiden bzw. bei Problemen mit fehlenden Chart-Elementen (insbesondere in exportierten Vorschaubildern, aber ohne sichtbaren Fehler) zuerst hier nachschauen.
Abhängigkeiten aktualisieren
Versionsnummern in package.json anpassen, danach für eine saubere Neuinstallation:
npm run reinstall
Entwicklung in einem privaten GitHub-Repository
- Im privaten Repository wie gewohnt entwickeln: Issue anlegen, Branch
issue-XXXerstellen (XXX = Issue-Nummer). - Sobald die neue Funktionalität ins öffentliche Repository übernommen werden soll:
- Im privaten Repo das öffentliche Repo als Remote
upstreamdefinieren (korrekte HTTPS-URL verwenden):git remote add upstream https://github.com/user/indikatoren.git - Änderungen wie gewohnt committen und ins private Repo pushen.
- Branch mit gleichem Namen im öffentlichen Repository (
upstream) anlegen. - Neueste Commits vom öffentlichen in den privaten Branch holen:
git checkout issue-XXX git pull upstream issue-XXX - Bei Konflikten (gemeinsame Dateien in beiden Branches geändert): manuell auflösen, dann committen und ins private Repo pushen:
git add . git commit -m "Merge upstream" git push - Änderungen in den Branch
issue-XXXdes öffentlichen Repos pushen:git push upstream issue-XXX
- Im privaten Repo das öffentliche Repo als Remote
Entwicklung mit Cloud9
- Neuen gehosteten Workspace basierend auf dem Node.js-Template und dem korrekten GitHub-Repo erstellen (SSH-Repo-Pfad verwenden).
- Folgenden Befehl ausführen (setzt Node.js-Version auf 6, installiert TrueType-Fonts und die Anwendung):
./c9-setup.sh - Bash-Terminal schliessen und ein neues öffnen (Plus-Symbol → "New Terminal").
- Im Terminal ausführen:
npm run reinstall - Anwendung in Cloud9 starten: "Run" → "New Run Configuration…" → "Runner" → "Apache httpd" wählen, Feld "Run Config Name" mit z. B. "Apache httpd" benennen. "Run" klicken, danach die im Konsolen-Log angezeigte URL öffnen:
https://<c9-vm-name>-<c9-username>.c9users.io. - Um diese Runner-Konfiguration zur Standardkonfiguration zu machen: Rechtsklick auf den grünen "Run"-Button → "Manage…" → "Set as Default". Ab dann wird dieser Runner bei jedem Klick auf den grünen "Run"-Button verwendet.
Lizenzierung
Highcharts ist für private, schulische oder Non-Profit-Projekte unter der Creative-Commons-Lizenz "Attribution – Non Commercial 3.0" kostenlos. Für kommerzielle und behördliche Websites/Projekte ist eine Lizenz erforderlich, siehe License and Pricing.