1 // GETパラメータからrとeの値をそれぞれ取得する
2 const GetParams = () => {
7 let searchParams = new URLSearchParams(document.location.search.substring(1));
8 ParamsArray["release"] = searchParams.get("r")
9 ParamsArray["edition"] = searchParams.get("e")
13 // ダウンロードIDを取得してフォームを作成
14 const XmlReq = new XMLHttpRequest();
16 XmlReq.onreadystatechange = function() {
17 if ((XmlReq.readyState === 4) && (XmlReq.status === 200)) {
18 JsonData = JSON.parse(XmlReq.responseText);
19 Object.keys(JsonData).reverse().forEach((ReleaseId) => {
20 //console.log(JsonData[ReleaseId])
22 if (JsonData[ReleaseId].disabled == true){
25 console.log(ReleaseId + "を追加しました");
29 let ReleaseIdOption = document.createElement("option");
30 ReleaseIdOption.value = ReleaseId;
31 ReleaseIdOption.innerText = ReleaseId;
32 ReleaseIdForm.insertAdjacentElement("afterbegin", ReleaseIdOption);
35 // URLのパラメータでリリース番号が指定されていた場合の処理
36 const ReleaseParam = GetParams()["release"];
37 let InitializeRelease = true // リリースフォームを初期化するかどうか
40 //console.log(GetParams()["release"])
41 Array.from(ReleaseIdForm.options).forEach((e)=>{
42 if (e.value.toLowerCase() === ReleaseParam.toLowerCase()){
44 InitializeRelease = false
49 // GETでリリース番号が指定されていなければリリースフォームの初期化を行う
50 // 指定されていれば、その番号でエディション一覧を更新する
51 if(InitializeRelease){
53 Array.from(ReleaseIdForm.options).slice(-1)[0].selected = true;
56 document.getElementById("editionform_div").classList.add("hidden");
63 Array.from(ReleaseIdForm.getElementsByTagName("option")).forEach((element) => {
64 element.classList.add("p-2", "cursor-pointer", "mt-1")
69 XmlReq.open("GET","/alter/alterlinux.json", true);
74 const Update_Edition = () => {
75 let SelectedReleaseId = ReleaseIdForm.value;
76 EditionForm.innerHTML = null;
78 if (SelectedReleaseId == "None" || SelectedReleaseId == undefined || SelectedReleaseId == null){
79 document.getElementById("editionform_div").classList.add("hidden");
80 ShowMsg("リリース番号を選択してください");
83 console.log("エディション一覧を" + SelectedReleaseId + "に更新しました");
84 document.getElementById("editionform_div").classList.remove("hidden");
87 Object.keys(JsonData[SelectedReleaseId]).forEach((EditionName) => {
88 if (EditionName != "disabled"){
89 let EditionOption = document.createElement("option");
90 EditionOption.value = EditionName;
91 EditionOption.innerText = EditionName;
92 EditionForm.insertAdjacentElement("afterbegin", EditionOption)
96 const EditionParam = GetParams()["edition"];
98 Array.from(EditionForm.getElementsByTagName("option")).forEach((e)=>{
99 if(e.value.toLowerCase() == EditionParam.toLowerCase()){
107 ReleaseIdForm.addEventListener("change", (e) => {
112 // ダウンロードのエラーメッセージを表示する
113 const ShowMsg = (message) => {
114 const messageElement = document.getElementById("message");
116 messageElement.innerText = message;
117 console.log(message);
119 messageElement.innerText = null;
125 const ShowEditionInfo = () => {
126 const ReleaseId = ReleaseIdForm.value;
127 const EditionName = EditionForm.value;
128 if (ReleaseId && EditionName){
129 ShowMsg(ReleaseId + "の" + EditionName + "が選択されました");
134 EditionForm.addEventListener("change", ShowEditionInfo);
135 ReleaseIdForm.addEventListener("change", ShowEditionInfo);
138 DownloadButton.addEventListener("click", (element) => {
140 const ReleaseId = ReleaseIdForm.value
141 const EditionName = EditionForm.value
143 ShowMsg("設定が不完全です。リリース番号とエディションを適切に指定してください。\n指定してるにも関わらずエラーが出る場合は開発者に連絡してください。");
146 const OsdnId = JsonData[ReleaseId][EditionName]
147 //console.log(OsdnId)
148 location.href = "https://osdn.net/projects/alterlinux/releases/" + OsdnId