1 // ダウンロードIDを取得してフォームを作成
2 const XmlReq = new XMLHttpRequest();
4 XmlReq.onreadystatechange = function() {
5 if ((XmlReq.readyState === 4) && (XmlReq.status === 200)) {
6 JsonData = JSON.parse(XmlReq.responseText);
7 Object.keys(JsonData).reverse().forEach((ReleaseId) => {
8 //console.log(JsonData[ReleaseId])
10 if (JsonData[ReleaseId].disabled == true){
13 console.log(ReleaseId + "を追加しました");
17 let ReleaseIdOption = document.createElement("option");
18 ReleaseIdOption.value = ReleaseId;
19 ReleaseIdOption.innerText = ReleaseId;
20 ReleaseIdForm.insertAdjacentElement("afterbegin", ReleaseIdOption);
24 SetDownloadLinkClass();
27 XmlReq.open("GET","/alter/alterlinux.json", true);
31 const SetDownloadLinkClass = () => {
32 Array.from(ReleaseIdForm.getElementsByTagName("option")).forEach((element) => {
33 element.classList.add("p-2", "cursor-pointer", "mt-1")
38 ReleaseIdForm.addEventListener("change", (e) => {
40 let SelectedReleaseId = e.path[0].value;
41 EditionForm.innerHTML = null;
43 if (SelectedReleaseId == "None" || SelectedReleaseId == undefined || SelectedReleaseId == null){
44 document.getElementById("editionform_div").classList.add("hidden");
45 ShowMsg("リリース番号を選択してください");
48 console.log("エディション一覧を" + SelectedReleaseId + "に更新しました");
49 document.getElementById("editionform_div").classList.remove("hidden");
52 Object.keys(JsonData[SelectedReleaseId]).forEach((EditionName) => {
53 if (EditionName != "disabled"){
54 let EditionOption = document.createElement("option");
55 EditionOption.value = EditionName;
56 EditionOption.innerText = EditionName;
57 EditionForm.insertAdjacentElement("afterbegin", EditionOption)
62 // 読み込み時にエディション選択フォームを隠す
63 window.addEventListener("load", ()=>{
64 const SelectedReleaseId = ReleaseIdForm.value;
65 if (SelectedReleaseId == "None" || SelectedReleaseId == undefined || SelectedReleaseId == null){
66 document.getElementById("editionform_div").classList.add("hidden");
72 // ダウンロードのエラーメッセージを表示する
73 const ShowMsg = (message) => {
74 const messageElement = document.getElementById("message");
76 messageElement.innerText = message;
79 messageElement.innerText = null;
85 const ShowEditionInfo = () => {
86 const ReleaseId = ReleaseIdForm.value;
87 const EditionName = EditionForm.value;
88 if (ReleaseId && EditionName){
89 ShowMsg(ReleaseId + "の" + EditionName + "が選択されました");
94 EditionForm.addEventListener("change", ShowEditionInfo);
95 ReleaseIdForm.addEventListener("change", ShowEditionInfo);
98 DownloadButton.addEventListener("click", (element) => {
100 const ReleaseId = ReleaseIdForm.value
101 const EditionName = EditionForm.value
103 ShowMsg("設定が不完全です。リリース番号とエディションを適切に指定してください。\n指定してるにも関わらずエラーが出る場合は開発者に連絡してください。");
106 const OsdnId = JsonData[ReleaseId][EditionName]
107 //console.log(OsdnId)
108 location.href = "https://osdn.net/projects/alterlinux/releases/" + OsdnId