mirror of
https://github.com/lxsang/antos-frontend.git
synced 2024-11-15 01:08:21 +01:00
109 lines
4.1 KiB
TypeScript
109 lines
4.1 KiB
TypeScript
|
/*
|
||
|
* decaffeinate suggestions:
|
||
|
* DS102: Remove unnecessary code created because of implicit returns
|
||
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
||
|
*/
|
||
|
// Copyright 2017-2018 Xuan Sang LE <xsang.le AT gmail DOT com>
|
||
|
|
||
|
// AnTOS Web desktop is is licensed under the GNU General Public
|
||
|
// License v3.0, see the LICENCE file for more information
|
||
|
|
||
|
// This program is free software: you can redistribute it and/or
|
||
|
// modify it under the terms of the GNU General Public License as
|
||
|
// published by the Free Software Foundation, either version 3 of
|
||
|
// the License, or (at your option) any later version.
|
||
|
|
||
|
// This program is distributed in the hope that it will be useful,
|
||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
// General Public License for more details.
|
||
|
|
||
|
// You should have received a copy of the GNU General Public License
|
||
|
//along with this program. If not, see https://www.gnu.org/licenses/.
|
||
|
namespace OS {
|
||
|
const App = OS.application.MarketPlace;
|
||
|
export type MarketPlaceRepoDialog = typeof RepositoryDialog;
|
||
|
class RepositoryDialog extends OS.GUI.dialogs.SelectionDialog {
|
||
|
private list: GUI.tag.ListViewTag;
|
||
|
|
||
|
|
||
|
constructor() {
|
||
|
super();
|
||
|
}
|
||
|
|
||
|
main() {
|
||
|
super.main();
|
||
|
this.list = this.find("list") as GUI.tag.ListViewTag;
|
||
|
$((this.find("btnOk"))).hide();
|
||
|
return this.list.buttons = [
|
||
|
{
|
||
|
text: "+",
|
||
|
onbtclick: () => {
|
||
|
return this.openDialog("PromptDialog", {
|
||
|
title: __("Add repository"),
|
||
|
label: __("Format : [name] url")
|
||
|
}).then(e => {
|
||
|
const m = e.match(/\[([^\]]*)\]\s*(.+)/);
|
||
|
if (!m || (m.length !== 3)) {
|
||
|
return this.error(__("Wrong format: it should be [name] url"));
|
||
|
}
|
||
|
const repo = {
|
||
|
url: m[2],
|
||
|
text: m[1]
|
||
|
};
|
||
|
this.systemsetting.system.repositories.push(repo);
|
||
|
return this.list.push(repo);
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
text: "-",
|
||
|
onbtclick: () => {
|
||
|
const el = this.list.selectedItem;
|
||
|
if (!el) { return; }
|
||
|
const selidx = $(el).index();
|
||
|
if (!(selidx >= 0)) { return; }
|
||
|
this.systemsetting.system.repositories.splice(selidx, selidx);
|
||
|
return this.list.delete(el);
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
iconclass: "fa fa-pencil",
|
||
|
onbtclick: () => this.editRepo()
|
||
|
}
|
||
|
|
||
|
];
|
||
|
}
|
||
|
|
||
|
private editRepo(): void{
|
||
|
const el = this.list.selectedItem;
|
||
|
if (!el) { return; }
|
||
|
const selidx = $(el).index();
|
||
|
if (!(selidx >= 0)) { return; }
|
||
|
const data = el.data;
|
||
|
const sel = this.systemsetting.system.repositories[selidx];
|
||
|
this.openDialog("PromptDialog", {
|
||
|
title: __("Edit repository"),
|
||
|
label: __("Format : [name] url"),
|
||
|
value: `[${data.text}] ${data.url}`
|
||
|
}).then(e => {
|
||
|
const m = e.match(/\[([^\]]*)\]\s*(.+)/);
|
||
|
if (!m || (m.length !== 3)) {
|
||
|
return this.error(__("Wrong format: it should be [name] url"));
|
||
|
}
|
||
|
data.text = m[1];
|
||
|
data.url = m[2];
|
||
|
this.list.update(undefined);
|
||
|
return this.list.unselect();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
protected onexit(e: BaseEvent): void{
|
||
|
(this.parent as OS.application.MarketPlace).refreshRepoList();
|
||
|
return super.onexit(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
App.RepoDialog = RepositoryDialog;
|
||
|
}
|