Add search private group

This commit is contained in:
AlphaX-Projects 2023-01-04 13:52:47 +01:00
parent 0dfe8a0bdc
commit fba20229be
18 changed files with 202 additions and 21 deletions

View File

@ -606,7 +606,11 @@
"gchange51":"Beitreten",
"gchange52":"Administrator",
"gchange53":"Mitglied",
"gchange54":"Mitglieder"
"gchange54":"Mitglieder",
"gchange55":"Private Gruppe suchen",
"gchange56":"Zu suchender Gruppenname",
"gchange57":"Privater Gruppenname nicht gefunden",
"gchange58":"Beachten Sie, dass der Gruppenname genau übereinstimmen muss."
},
"puzzlepage":{
"pchange1":"Rätsel",

View File

@ -606,7 +606,11 @@
"gchange51":"Unirse",
"gchange52":"Aministrador",
"gchange53":"Miembro",
"gchange54":"Miembros"
"gchange54":"Miembros",
"gchange55":"Buscar grupo privado",
"gchange56":"Nombre del grupo a buscar",
"gchange57":"Nombre de grupo privado no encontrado",
"gchange58":"Tenga en cuenta que el nombre del grupo debe coincidir exactamente."
},
"puzzlepage":{
"pchange1":"Rompecabezas",

View File

@ -606,7 +606,11 @@
"gchange51":"Rejoindre",
"gchange52":"Admin",
"gchange53":"Membre",
"gchange54":"Membres"
"gchange54":"Membres",
"gchange55":"Rechercher un groupe privé",
"gchange56":"Nom du groupe à rechercher",
"gchange57":"Nom de groupe privé introuvable",
"gchange58":"Notez que le nom du groupe doit correspondre exactement."
},
"puzzlepage":{
"pchange1":"Puzzles",

View File

@ -607,7 +607,11 @@
"gchange51":"शामिल हों",
"gchange52":"व्यवस्थापक",
"gchange53":"सदस्य",
"gchange54":"सदस्यों"
"gchange54":"सदस्यों",
"gchange55":"निजी समूह खोजें",
"gchange56":"खोजने के लिए समूह का नाम",
"gchange57":"निजी समूह का नाम नहीं मिला",
"gchange58":"ध्यान दें कि समूह का नाम सटीक मेल खाना चाहिए।"
},
"puzzlepage":{
"pchange1":"पहेलि",

View File

@ -606,7 +606,11 @@
"gchange51":"Pridruži",
"gchange52":"Admin",
"gchange53":"Član",
"gchange54":"Članovi"
"gchange54":"Članovi",
"gchange55":"Traži privatnu grupu",
"gchange56":"Naziv grupe za pretraživanje",
"gchange57":"Ime privatne grupe nije pronađeno",
"gchange58":"Imajte na umu da se naziv grupe mora točno podudarati."
},
"puzzlepage":{
"pchange1":"Zagonetke",

View File

@ -606,7 +606,11 @@
"gchange51":"Csatlakoz",
"gchange52":"Kormányozo",
"gchange53":"Tag",
"gchange54":"Tagok"
"gchange54":"Tagok",
"gchange55":"Keresés privát csoportban",
"gchange56":"A keresendő csoport neve",
"gchange57":"A privát csoport neve nem található",
"gchange58":"Ne feledje, hogy a csoport nevének pontosan meg kell egyeznie."
},
"puzzlepage":{
"pchange1":"Rejtvények",

View File

@ -606,7 +606,11 @@
"gchange51":"Unisciti",
"gchange52":"Amministratore",
"gchange53":"Membro",
"gchange54":"Membri"
"gchange54":"Membri",
"gchange55":"Cerca gruppo privato",
"gchange56":"Nome gruppo da cercare",
"gchange57":"Nome gruppo privato non trovato",
"gchange58":"Nota che il nome del gruppo deve corrispondere esattamente."
},
"puzzlepage":{
"pchange1":"Puzzle",

View File

@ -606,7 +606,11 @@
"gchange51":"가입",
"gchange52":"관리자",
"gchange53":"회원",
"gchange54":"회원들"
"gchange54":"회원들",
"gchange55":"비공개 그룹 검색",
"gchange56":"검색할 그룹 이름",
"gchange57":"비공개 그룹 이름을 찾을 수 없음",
"gchange58":"그룹 이름이 정확히 일치해야 합니다."
},
"puzzlepage":{
"pchange1":"퍼즐",

View File

@ -606,7 +606,11 @@
"gchange51":"Bli med",
"gchange52":"Admin",
"gchange53":"Medlem",
"gchange54":"Medlemmer"
"gchange54":"Medlemmer",
"gchange55":"Søk i privat gruppe",
"gchange56":"Gruppenavn å søke",
"gchange57":"Privat gruppenavn ikke funnet",
"gchange58":"Merk at gruppenavnet må samsvare nøyaktig."
},
"puzzlepage":{
"pchange1":"Puzzles",

View File

@ -606,7 +606,11 @@
"gchange51":"Dołącz",
"gchange52":"Administrator",
"gchange53":"Członek",
"gchange54":"Członkowie"
"gchange54":"Członkowie",
"gchange55":"Wyszukaj grupę prywatną",
"gchange56":"Nazwa grupy do wyszukania",
"gchange57":"Nie znaleziono nazwy grupy prywatnej",
"gchange58":"Zauważ, że nazwa grupy musi dokładnie pasować."
},
"puzzlepage":{
"pchange1":"Zagadki",

View File

@ -606,7 +606,11 @@
"gchange51":"Entrar",
"gchange52":"Administrador",
"gchange53":"Membro",
"gchange54":"Membros"
"gchange54":"Membros",
"gchange55":"Pesquisar Grupo Privado",
"gchange56":"Nome do grupo para pesquisar",
"gchange57":"Nome do grupo privado não encontrado",
"gchange58":"Observe que o nome do grupo deve corresponder exatamente."
},
"puzzlepage":{
"pchange1":"Enigmas",

View File

@ -606,7 +606,11 @@
"gchange51":"Inscriere",
"gchange52":"Admin",
"gchange53":"Membru",
"gchange54":"Membrii"
"gchange54":"Membrii",
"gchange55":"Căutați grup privat",
"gchange56":"Numele grupului de căutat",
"gchange57":"Numele grupului privat nu a fost găsit",
"gchange58":"Rețineți că numele grupului trebuie să se potrivească exact."
},
"puzzlepage":{
"pchange1":"Puzzle-uri",

View File

@ -606,7 +606,11 @@
"gchange51":"Uđite",
"gchange52":"Administrator",
"gchange53":"Član",
"gchange54":"Članovi"
"gchange54":"Članovi",
"gchange55":"Pretraži privatnu grupu",
"gchange56":"Ime grupe za pretragu",
"gchange57":"Ime privatne grupe nije pronađeno",
"gchange58":"Imajte na umu da ime grupe mora potpuno da se podudara."
},
"puzzlepage":{
"pchange1":"Slagalice",

View File

@ -606,7 +606,11 @@
"gchange51":"Присоединиться",
"gchange52":"Администратор",
"gchange53":"Член",
"gchange54":"Члены"
"gchange54":"Члены",
"gchange55":"Поиск в закрытой группе",
"gchange56":"Имя группы для поиска",
"gchange57":"Имя частной группы не найдено",
"gchange58":"Обратите внимание, что название группы должно точно совпадать."
},
"puzzlepage":{
"pchange1":"Головоломки",

View File

@ -606,7 +606,11 @@
"gchange51":"Join",
"gchange52":"Admin",
"gchange53":"Member",
"gchange54":"Members"
"gchange54":"Members",
"gchange55":"Search Private Group",
"gchange56":"Group Name To Search",
"gchange57":"Private Group Name Not Found",
"gchange58":"Note that group name must exact match."
},
"puzzlepage":{
"pchange1":"Puzzles",

View File

@ -606,7 +606,11 @@
"gchange51":"加入",
"gchange52":"管理员",
"gchange53":"成员",
"gchange54":"成员数量"
"gchange54":"成员数量",
"gchange55":"搜索私人群组",
"gchange56":"要搜索的组名",
"gchange57":"未找到私人组名",
"gchange58":"注意组名必须完全匹配。"
},
"puzzlepage":{
"pchange1":"益智游戏",

View File

@ -606,7 +606,11 @@
"gchange51":"加入",
"gchange52":"管理員",
"gchange53":"成員",
"gchange54":"成員數量"
"gchange54":"成員數量",
"gchange55":"搜索私人群組",
"gchange56":"要搜索的組名",
"gchange57":"未找到私人組名",
"gchange58":"注意組名必須完全匹配。"
},
"puzzlepage":{
"pchange1":"益智游戲",

View File

@ -30,8 +30,10 @@ class GroupManagement extends LitElement {
return {
loading: { type: Boolean },
publicGroups: { type: Array },
privateGroups: { type: Array },
joinedGroups: { type: Array },
groupInvites: { type: Array },
privateGroupSearch: { type: Array },
newMembersList: { type: Array },
newAdminsList: { type: Array },
newBannedList: { type: Array },
@ -77,6 +79,7 @@ class GroupManagement extends LitElement {
toInviteMemberToGroup: { type: String },
toCancelInviteMemberName: { type: String },
toCancelInviteMemberAddress: { type: String },
searchGroupName: { type: String },
errorMessage: { type: String },
successMessage: { type: String }
}
@ -410,6 +413,13 @@ class GroupManagement extends LitElement {
background: var(--white);
color: var(--black);
}
#search {
width: 100%;
display: flex;
margin: auto;
align-items: center;
}
`
}
@ -418,8 +428,10 @@ class GroupManagement extends LitElement {
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
this.selectedAddress = {}
this.publicGroups = []
this.privateGroups = []
this.joinedGroups = []
this.groupInvites = []
this.privateGroupSearch = []
this.newMembersList = []
this.newAdminsList = []
this.newBannedList = []
@ -458,6 +470,7 @@ class GroupManagement extends LitElement {
this.toInviteMemberToGroup = ''
this.toCancelInviteMemberName = ''
this.toCancelInviteMemberAddress = ''
this.searchGroupName = ''
this.errorMessage = ''
this.successMessage = ''
this.selectedView = { id: 'group-members', name: 'Group Members' }
@ -1136,6 +1149,45 @@ class GroupManagement extends LitElement {
<mwc-button style="float:right;" @click=${() => this.shadowRoot.querySelector('#createGroupDialog').show()}><mwc-icon>add</mwc-icon>${translate("grouppage.gchange2")}</mwc-button>
</div>
<div class="divCard">
<h3 style="margin: 0; margin-bottom: 1em; text-align: left;">${translate("grouppage.gchange55")}</h3>
<div id="search">
<vaadin-text-field
theme="medium"
style="width: 20em"
minlength="3"
maxlength="32"
id="searchGroupName"
placeholder="${translate("grouppage.gchange56")}"
value="${this.searchGroupName}"
@keydown="${this.searchGroupListener}"
clear-button-visible
>
<vaadin-icon slot="prefix" icon="vaadin:user"></vaadin-icon>
</vaadin-text-field>&nbsp;&nbsp;<br>
<vaadin-button theme="medium" @click="${(e) => this.doGroupSearch(e)}">
<vaadin-icon icon="vaadin:search" slot="prefix"></vaadin-icon>
${translate("websitespage.schange35")}
</vaadin-button>
</div><br />
<vaadin-grid theme="large" id="priveGroupSearchGrid" ?hidden="${this.isEmptyArray(this.privateGroupSearch)}" .items="${this.privateGroupSearch}" aria-label="My Search Result" all-rows-visible>
<vaadin-grid-column width="8rem" flex-grow="0" header="${translate("grouppage.gchange54")}" path="memberCount"></vaadin-grid-column>
<vaadin-grid-column header="${translate("grouppage.gchange4")}" path="groupName"></vaadin-grid-column>
<vaadin-grid-column header="${translate("managegroup.mg42")}" .renderer=${(root, column, data) => {
if (data.item.isOpen === true) {
render(html`${translate("managegroup.mg44")}`, root)
} else {
render(html`${translate("managegroup.mg45")}`, root)
}
}}></vaadin-grid-column>
<vaadin-grid-column header="${translate("grouppage.gchange5")}" path="description"></vaadin-grid-column>
<vaadin-grid-column header="${translate("grouppage.gchange10")}" path="owner"></vaadin-grid-column>
<vaadin-grid-column width="11rem" flex-grow="0" header="${translate("grouppage.gchange7")}" .renderer=${(root, column, data) => {
render(html`<mwc-button @click=${() => this.joinGroup(data.item)}><mwc-icon>queue</mwc-icon>&nbsp;${translate("grouppage.gchange51")}</mwc-button>`, root)
}}></vaadin-grid-column>
</vaadin-grid>
</div>
<div class="divCard">
<h3 style="margin: 0; margin-bottom: 1em; text-align: center;">${translate("grouppage.gchange3")}</h3>
<vaadin-grid theme="large" id="joinedGroupsGrid" ?hidden="${this.isEmptyArray(this.joinedGroups)}" .items="${this.joinedGroups}" aria-label="Joined Groups" all-rows-visible>
@ -1150,7 +1202,9 @@ class GroupManagement extends LitElement {
}}></vaadin-grid-column>
</vaadin-grid>
${this.isEmptyArray(this.joinedGroups) ? html`
<span style="color: var(--black);">${translate("grouppage.gchange8")}</span>
<div style="text-align: center;">
<span style="color: var(--black);">${translate("grouppage.gchange8")}</span>
</div>
`: ''}
</div>
@ -1175,7 +1229,9 @@ class GroupManagement extends LitElement {
}}></vaadin-grid-column>
</vaadin-grid>
${this.isEmptyArray(this.groupInvites) ? html`
<span style="color: var(--black);">${translate("managegroup.mg35")}</span>
<div style="text-align: center;">
<span style="color: var(--black);">${translate("managegroup.mg35")}</span>
</div>
`: ''}
</div>
@ -1477,6 +1533,22 @@ class GroupManagement extends LitElement {
${translate("general.close")}
</mwc-button>
</mwc-dialog>
<mwc-dialog id="privateGroupErrorDialog" scrimClickAction="" escapeKeyAction="">
<div style="text-align: center;">
<mwc-icon class="error-icon">warning</mwc-icon>
<h2>${translate("grouppage.gchange57")}</h2>
<h4>${translate("grouppage.gchange58")}</h4>
</div>
<mwc-button
slot="primaryAction"
@click=${() => this.closePrivateGroupErrorDialog()}
class="red"
>
${translate("general.close")}
</mwc-button>
</mwc-dialog>
</div>
`
}
@ -1504,6 +1576,14 @@ class GroupManagement extends LitElement {
return myGs
}
const getPrivateGroups = async () => {
let privateG = await parentEpml.request('apiCall', {
url: `/groups?limit=0&reverse=true`
})
let myPgs = privateG.filter(myP => myP.isOpen === false)
return myPgs
}
const getJoinedGroups = async () => {
let joinedG = await parentEpml.request('apiCall', {
url: `/groups/member/${this.selectedAddress.address}`
@ -1563,13 +1643,15 @@ class GroupManagement extends LitElement {
const getOpen_JoinedGroups = async () => {
let _joinedGroups = await getJoinedGroups()
let _publicGroups = await getOpenPublicGroups()
let _privateGroups = await getPrivateGroups()
let results = _publicGroups.filter(myOpenGroup => {
let value = _joinedGroups.some(myJoinedGroup => myOpenGroup.groupId === myJoinedGroup.groupId)
return !value
});
this.publicGroups = results
this.privateGroups = _privateGroups
this.joinedGroups = _joinedGroups
setTimeout(getOpen_JoinedGroups, 30000)
setTimeout(getOpen_JoinedGroups, 60000)
}
window.addEventListener("contextmenu", (event) => {
@ -1722,6 +1804,36 @@ class GroupManagement extends LitElement {
}
}
searchGroupListener(e) {
if (e.key === 'Enter') {
this.doGroupSearch(e)
}
}
doGroupSearch(e) {
this.renderSearchResult()
}
renderSearchResult() {
this.privateGroupSearch = []
let searchGroupName = this.shadowRoot.getElementById('searchGroupName').value
if (searchGroupName.length === 0) {
let err1string = get("websitespage.schange34")
parentEpml.request('showSnackBar', `${err1string}`)
} else {
this.privateGroupSearch = this.privateGroups.filter(myS => myS.groupName === searchGroupName)
if (this.privateGroupSearch.length === 0) {
this.shadowRoot.querySelector('#privateGroupErrorDialog').show()
}
}
}
closePrivateGroupErrorDialog() {
this.shadowRoot.querySelector('#privateGroupErrorDialog').close()
this.shadowRoot.getElementById('searchGroupName').value = ''
this.privateGroupSearch = []
}
renderBanButton(groupObj) {
return html`<mwc-button class="warning" @click=${() => this.openCreateBanMemberDialog(groupObj)}><mwc-icon>create</mwc-icon>&nbsp;${translate("managegroup.mg6")}</mwc-button>`
}
@ -1939,6 +2051,7 @@ class GroupManagement extends LitElement {
closeFieldErrorDialog() {
this.shadowRoot.querySelector('#fieldErrorDialog').close()
}
async unitCreateFee() {
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
@ -3178,4 +3291,4 @@ class GroupManagement extends LitElement {
}
}
window.customElements.define('group-management', GroupManagement)
window.customElements.define('group-management', GroupManagement)