mirror of
				https://github.com/arcan1s/ahriman.git
				synced 2025-10-31 13:53:41 +00:00 
			
		
		
		
	feat: add ability to refresh databases through web interface
This commit is contained in:
		| @ -55,6 +55,11 @@ | |||||||
|                                 <i class="bi bi-play"></i> update |                                 <i class="bi bi-play"></i> update | ||||||
|                             </button> |                             </button> | ||||||
|                         </li> |                         </li> | ||||||
|  |                         <li> | ||||||
|  |                             <button id="update-repositories-button" class="btn dropdown-item" onclick="refreshDatabases()"> | ||||||
|  |                                 <i class="bi bi-arrow-down-circle"></i> update pacman databases | ||||||
|  |                             </button> | ||||||
|  |                         </li> | ||||||
|                         <li> |                         <li> | ||||||
|                             <button id="package-rebuild-button" class="btn dropdown-item" data-bs-toggle="modal" data-bs-target="#package-rebuild-modal"> |                             <button id="package-rebuild-button" class="btn dropdown-item" data-bs-toggle="modal" data-bs-target="#package-rebuild-modal"> | ||||||
|                                 <i class="bi bi-arrow-clockwise"></i> rebuild |                                 <i class="bi bi-arrow-clockwise"></i> rebuild | ||||||
|  | |||||||
| @ -24,6 +24,13 @@ | |||||||
|                             <datalist id="package-add-known-packages-dlist"></datalist> |                             <datalist id="package-add-known-packages-dlist"></datalist> | ||||||
|                         </div> |                         </div> | ||||||
|                     </div> |                     </div> | ||||||
|  |                     <div class="form-group row"> | ||||||
|  |                         <label class="col-3 col-form-label"></label> | ||||||
|  |                         <div class="col-9"> | ||||||
|  |                             <input id="package-add-refresh-input" type="checkbox" class="form-check-input" value="" checked> | ||||||
|  |                             <label for="package-add-refresh-input" class="form-check-label">update pacman databases</label> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|                     <div class="form-group row"> |                     <div class="form-group row"> | ||||||
|                         <div class="col-12"> |                         <div class="col-12"> | ||||||
|                             <button id="package-add-variable-button" type="button" class="form-control btn btn-light rounded" onclick="packageAddVariableInputCreate()"><i class="bi bi-plus"></i> add environment variable </button> |                             <button id="package-add-variable-button" type="button" class="form-control btn btn-light rounded" onclick="packageAddVariableInputCreate()"><i class="bi bi-plus"></i> add environment variable </button> | ||||||
| @ -50,6 +57,8 @@ | |||||||
|  |  | ||||||
|     const packageAddVariablesDiv = document.getElementById("package-add-variables-div"); |     const packageAddVariablesDiv = document.getElementById("package-add-variables-div"); | ||||||
|  |  | ||||||
|  |     const packageAddRefreshInput = document.getElementById("package-add-refresh-input"); | ||||||
|  |  | ||||||
|     function packageAddVariableInputCreate() { |     function packageAddVariableInputCreate() { | ||||||
|         const variableInput = document.createElement("div"); |         const variableInput = document.createElement("div"); | ||||||
|         variableInput.classList.add("input-group"); |         variableInput.classList.add("input-group"); | ||||||
| @ -99,16 +108,18 @@ | |||||||
|         return {patches: patches}; |         return {patches: patches}; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function packagesAdd(packages, patches, repository) { |     function packagesAdd(packages, patches, repository, data) { | ||||||
|         packages = packages ?? packageAddInput.value; |         packages = packages ?? packageAddInput.value; | ||||||
|         patches = patches ?? patchesParse(); |         patches = patches ?? patchesParse(); | ||||||
|         repository = repository ?? getRepositorySelector(packageAddRepositoryInput); |         repository = repository ?? getRepositorySelector(packageAddRepositoryInput); | ||||||
|  |         data = data ?? {refresh: packageAddRefreshInput.checked}; | ||||||
|  |  | ||||||
|         if (packages) { |         if (packages) { | ||||||
|             bootstrap.Modal.getOrCreateInstance(packageAddModal).hide(); |             bootstrap.Modal.getOrCreateInstance(packageAddModal).hide(); | ||||||
|             const onSuccess = update => `Packages ${update} have been added`; |             const onSuccess = update => `Packages ${update} have been added`; | ||||||
|             const onFailure = error => `Package addition failed: ${error}`; |             const onFailure = error => `Package addition failed: ${error}`; | ||||||
|             doPackageAction("/api/v1/service/add", [packages], repository, onSuccess, onFailure, patches); |             const parameters = Object.assign({}, data, patches); | ||||||
|  |             doPackageAction("/api/v1/service/add", [packages], repository, onSuccess, onFailure, parameters); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -95,6 +95,9 @@ | |||||||
|             </div> |             </div> | ||||||
|             <div class="modal-footer"> |             <div class="modal-footer"> | ||||||
|                 {% if not auth.enabled or auth.username is not none %} |                 {% if not auth.enabled or auth.username is not none %} | ||||||
|  |                     <input id="package-info-refresh-input" type="checkbox" class="form-check-input" value="" checked> | ||||||
|  |                     <label for="package-info-refresh-input" class="form-check-label">update pacman databases</label> | ||||||
|  |  | ||||||
|                     <button id="package-info-update-button" type="submit" class="btn btn-success" onclick="packageInfoUpdate()" data-bs-dismiss="modal"><i class="bi bi-play"></i><span class="d-none d-sm-inline"> update</span></button> |                     <button id="package-info-update-button" type="submit" class="btn btn-success" onclick="packageInfoUpdate()" data-bs-dismiss="modal"><i class="bi bi-play"></i><span class="d-none d-sm-inline"> update</span></button> | ||||||
|                     <button id="package-info-remove-button" type="submit" class="btn btn-danger" onclick="packageInfoRemove()" data-bs-dismiss="modal"><i class="bi bi-trash"></i><span class="d-none d-sm-inline"> remove</span></button> |                     <button id="package-info-remove-button" type="submit" class="btn btn-danger" onclick="packageInfoRemove()" data-bs-dismiss="modal"><i class="bi bi-trash"></i><span class="d-none d-sm-inline"> remove</span></button> | ||||||
|                 {% endif %} |                 {% endif %} | ||||||
| @ -135,6 +138,8 @@ | |||||||
|     const packageInfoVariablesBlock = document.getElementById("package-info-variables-block"); |     const packageInfoVariablesBlock = document.getElementById("package-info-variables-block"); | ||||||
|     const packageInfoVariablesDiv = document.getElementById("package-info-variables-div"); |     const packageInfoVariablesDiv = document.getElementById("package-info-variables-div"); | ||||||
|  |  | ||||||
|  |     const packageInfoRefreshInput = document.getElementById("package-info-refresh-input"); | ||||||
|  |  | ||||||
|     function clearChart() { |     function clearChart() { | ||||||
|         packageInfoEventsUpdateChartCanvas.hidden = true; |         packageInfoEventsUpdateChartCanvas.hidden = true; | ||||||
|         if (packageInfoEventsUpdateChart) { |         if (packageInfoEventsUpdateChart) { | ||||||
| @ -404,7 +409,7 @@ | |||||||
|  |  | ||||||
|     function packageInfoUpdate() { |     function packageInfoUpdate() { | ||||||
|         const packageBase = packageInfoModal.package; |         const packageBase = packageInfoModal.package; | ||||||
|         packagesAdd(packageBase, [], repository); |         packagesAdd(packageBase, [], repository, {refresh: packageInfoRefreshInput.checked}); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function showPackageInfo(packageBase) { |     function showPackageInfo(packageBase) { | ||||||
|  | |||||||
| @ -73,6 +73,19 @@ | |||||||
|         doPackageAction(url, currentSelection, repository, onSuccess, onFailure); |         doPackageAction(url, currentSelection, repository, onSuccess, onFailure); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     function refreshDatabases() { | ||||||
|  |         const onSuccess = _ => "Pacman database update has been requested"; | ||||||
|  |         const onFailure = error => `Could not update pacman databases: ${error}`; | ||||||
|  |         const parameters = { | ||||||
|  |             refresh: true, | ||||||
|  |             aur: false, | ||||||
|  |             local: false, | ||||||
|  |             manual: false, | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         doPackageAction("/api/v1/service/update", [], repository, onSuccess, onFailure, parameters); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     function reload() { |     function reload() { | ||||||
|         table.bootstrapTable("showLoading"); |         table.bootstrapTable("showLoading"); | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user