Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Agregando componente de Editar grupo #4818

Merged
merged 16 commits into from
Nov 26, 2020
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion frontend/server/src/Controllers/Group.php
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ public static function getGroupEditDetailsForSmarty(
'scoreboards' => $scoreboards,
],
'title' => new \OmegaUp\TranslationString(
'omegaupTitleGroupsEdit'
'omegaupTitleGroupsEditDeprecated'
lhchavez marked this conversation as resolved.
Show resolved Hide resolved
),
],
// TODO: Replace the following line with 'entrypoint' => 'group_edit'
Expand Down
3 changes: 2 additions & 1 deletion frontend/templates/en.lang
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,8 @@ omegaupTitleCourseIntro = "Enter course"
omegaupTitleCourseNew = "New course"
omegaupTitleCourseStatistics = "Course statistics"
omegaupTitleGroups = "Groups"
omegaupTitleGroupsEdit = "Edit group"
omegaupTitleGroupsEdit = "Edit group %(name)"
omegaupTitleGroupsEditDeprecated = "Edit group"
omegaupTitleGroupsNew = "New group"
omegaupTitleGroupsScoreboardEdit = "Edit scoreboard"
omegaupTitleLatestSubmissions = "Latest submissions"
Expand Down
3 changes: 2 additions & 1 deletion frontend/templates/es.lang
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,8 @@ omegaupTitleCourseIntro = "Entrar al curso"
omegaupTitleCourseNew = "Nuevo curso"
omegaupTitleCourseStatistics = "Estadisticas del curso"
omegaupTitleGroups = "Grupos"
omegaupTitleGroupsEdit = "Editar grupo"
omegaupTitleGroupsEdit = "Editar grupo %(name)"
omegaupTitleGroupsEditDeprecated = "Editar grupo"
omegaupTitleGroupsNew = "Nuevo grupo"
omegaupTitleGroupsScoreboardEdit = "Editar scoreboard"
omegaupTitleLatestSubmissions = "Últimos envíos"
Expand Down
2 changes: 1 addition & 1 deletion frontend/templates/group.edit.tpl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{include file='redirect.tpl' inline}
{include file='head.tpl' navbarSection='contests' headerPayload=$headerPayload htmlTitle="{#omegaupTitleGroupsEdit#}" inline}
{include file='head.tpl' navbarSection='contests' headerPayload=$headerPayload htmlTitle="{#omegaupTitleGroupsEditDeprecated#}" inline}

<span id="form-data" data-name="groups" data-page="edit" data-alias="{$smarty.get.group}"></span>
<script src="{version_hash src="/js/groups.js"}" defer></script>
Expand Down
3 changes: 2 additions & 1 deletion frontend/templates/pseudo.lang
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,8 @@ omegaupTitleCourseIntro = "(En73r c0ur53)"
omegaupTitleCourseNew = "(N3w c0ur53)"
omegaupTitleCourseStatistics = "(C0ur53 57a7i57ic5)"
omegaupTitleGroups = "(Gr0up5)"
omegaupTitleGroupsEdit = "(Edi7 gr0up)"
omegaupTitleGroupsEdit = "(Edi7 gr0up %(name))"
omegaupTitleGroupsEditDeprecated = "(Edi7 gr0up)"
omegaupTitleGroupsNew = "(N3w gr0up)"
omegaupTitleGroupsScoreboardEdit = "(Edi7 5c0r3b0ard)"
omegaupTitleLatestSubmissions = "(La7357 5ubmi55i0n5)"
Expand Down
3 changes: 2 additions & 1 deletion frontend/templates/pt.lang
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,8 @@ omegaupTitleCourseIntro = "Acesse o curso"
omegaupTitleCourseNew = "Novo curso"
omegaupTitleCourseStatistics = "Estatísticas do curso"
omegaupTitleGroups = "Grupos"
omegaupTitleGroupsEdit = "Editar grupo"
omegaupTitleGroupsEdit = "Editar grupo %(name)"
omegaupTitleGroupsEditDeprecated = "Editar grupo"
omegaupTitleGroupsNew = "Novo grupo"
omegaupTitleGroupsScoreboardEdit = "Editar painel de avaliação"
omegaupTitleLatestSubmissions = "Últimas submissões"
Expand Down
42 changes: 42 additions & 0 deletions frontend/www/js/omegaup/components/group/Edit.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { mount, shallowMount } from '@vue/test-utils';
import expect from 'expect';

import T from '../../lang';

import group_Edit from './Edit.vue';

describe('Edit.vue', () => {
it('Should handle edit view with empty scoreboards and identities', () => {
const wrapper = shallowMount(group_Edit, {
propsData: {
groupAlias: 'Hello',
groupName: 'Hello omegaUp',
countries: [{ country_id: 'MX', name: 'Mexico' }],
isOrganizer: true,
initialTab: 'members',
initialIdentities: [],
initialIdentitiesCsv: [],
initialScoreboards: [],
},
});

expect(wrapper.text()).toContain('Hello omegaUp');
});

it('Should handle edit view getting the subcomponents info', () => {
const wrapper = mount(group_Edit, {
propsData: {
groupAlias: 'Hello',
groupName: 'Hello omegaUp',
countries: [{ country_id: 'MX', name: 'Mexico' }],
isOrganizer: true,
initialTab: 'members',
initialIdentities: [],
initialIdentitiesCsv: [],
initialScoreboards: [],
},
});

expect(wrapper.text()).toContain(T.groupEditMembers);
});
});
200 changes: 200 additions & 0 deletions frontend/www/js/omegaup/components/group/Edit.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
<template>
<div class="group-edit">
<div class="page-header">
<h1>
<span>
lhchavez marked this conversation as resolved.
Show resolved Hide resolved
{{ ui.formatString(T.omegaupTitleGroupsEdit, { name: groupName }) }}
</span>
</h1>
</div>
<ul class="nav nav-pills">
<li class="nav-item" role="presentation">
<a
href="#"
class="nav-link"
data-tab-members
:class="{ active: showTab === 'members' }"
@click="showTab = 'members'"
>{{ T.groupEditMembers }}</a
>
</li>
<li class="nav-item" role="presentation">
<a
href="#"
class="nav-link"
data-tab-scoreboards
:class="{ active: showTab === 'scoreboards' }"
@click="showTab = 'scoreboards'"
>{{ T.groupEditScoreboards }}</a
>
</li>
<li class="nav-item" role="presentation">
<a
href="#"
class="nav-link"
data-tab-identities
:class="{ active: showTab === 'identities' }"
@click="showTab = 'identities'"
>{{ T.groupCreateIdentities }}</a
>
</li>
</ul>

<div class="tab-content">
<div v-if="showTab === 'members'" class="tab-pane active" role="tabpanel">
<omegaup-group-members
:identities="identities"
:identities-csv="identitiesCsv"
:group-alias="groupAlias"
:countries="countries"
@add-member="
(memberComponent, username) =>
$emit('add-member', memberComponent, username)
"
@edit-identity="
(memberComponent, identity) =>
$emit('edit-identity', memberComponent, identity)
"
@edit-identity-member="
(
memberComponent,
originalUsername,
username,
name,
country,
state,
school,
schoolId,
) =>
$emit(
'edit-identity-member',
memberComponent,
originalUsername,
username,
name,
country,
state,
school,
schoolId,
)
"
@change-password-identity="
(memberComponent, username) =>
$emit('change-password-identity', memberComponent, username)
"
@change-password-identity-member="
(memberComponent, username, password, repeatPassword) =>
$emit(
'change-password-identity-member',
memberComponent,
username,
password,
repeatPassword,
)
"
@remove="(username) => $emit('remove', username)"
@cancel="(memberComponent) => $emit('cancel', memberComponent)"
></omegaup-group-members>
</div>

<div
v-if="showTab === 'scoreboards'"
class="tab-pane active"
role="tabpanel"
>
<omegaup-group-scoreboards
:group-alias="groupAlias"
:scoreboards.sync="scoreboards"
@create-scoreboard="
(title, alias, description) =>
$emit('create-scoreboard', title, alias, description)
"
></omegaup-group-scoreboards>
</div>

<div
v-if="showTab === 'identities'"
class="tab-pane active"
role="tabpanel"
>
<omegaup-group-create-identities
:group-alias="groupAlias"
:user-error-row="userErrorRow"
@bulk-identities="
(identitiesComponent, identities) =>
$emit('bulk-identities', identitiesComponent, identities)
"
@download-identities="
(identities) => $emit('download-identities', identities)
"
@read-csv="
(identitiesComponent, fileUpload) =>
$emit('read-csv', identitiesComponent, fileUpload)
"
></omegaup-group-create-identities>
</div>
</div>
</div>
</template>

<script lang="ts">
import { Vue, Component, Prop, Watch } from 'vue-property-decorator';
import group_Identities from './Identities.vue';
import group_Members from './Members.vue';
import group_Scoreboards from './Scoreboards.vue';
import T from '../../lang';
import { dao, types } from '../../api_types';
import * as ui from '../../ui';

const availableTabs = ['memebers', 'scoreboards', 'identities'];

@Component({
components: {
'omegaup-group-create-identities': group_Identities,
'omegaup-group-members': group_Members,
'omegaup-group-scoreboards': group_Scoreboards,
},
})
export default class GroupEdit extends Vue {
@Prop() groupAlias!: string;
@Prop() groupName!: string;
@Prop() countries!: dao.Countries[];
@Prop() isOrganizer!: boolean;
@Prop() initialTab!: string;
lhchavez marked this conversation as resolved.
Show resolved Hide resolved
@Prop() initialIdentities!: types.Identity[];
@Prop() initialIdentitiesCsv!: types.Identity[];
@Prop() initialScoreboards!: types.GroupScoreboard[];
lhchavez marked this conversation as resolved.
Show resolved Hide resolved

T = T;
ui = ui;
showTab = this.initialTab;
userErrorRow = null;
lhchavez marked this conversation as resolved.
Show resolved Hide resolved
identities = this.initialIdentities;
identitiesCsv = this.initialIdentitiesCsv;
scoreboards = this.initialScoreboards;

@Watch('initialTab')
onInitialTabChanged(newValue: string): void {
if (!availableTabs.includes(this.initialTab)) {
this.showTab = 'members';
return;
}
this.showTab = newValue;
}

@Watch('initialIdentities')
onInitialIdentitiesChanged(newValue: types.Identity[]): void {
this.identities = newValue;
}

@Watch('initialIdentitiesCsv')
onInitialIdentitiesCsvChanged(newValue: types.Identity[]): void {
this.identitiesCsv = newValue;
}

@Watch('initialScoreboards')
onInitialScoreboardsChanged(newValue: types.GroupScoreboard[]): void {
this.scoreboards = newValue;
}
}
</script>
3 changes: 2 additions & 1 deletion frontend/www/js/omegaup/lang.en.json
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,8 @@
"omegaupTitleCourseNew": "New course",
"omegaupTitleCourseStatistics": "Course statistics",
"omegaupTitleGroups": "Groups",
"omegaupTitleGroupsEdit": "Edit group",
"omegaupTitleGroupsEdit": "Edit group %(name)",
"omegaupTitleGroupsEditDeprecated": "Edit group",
"omegaupTitleGroupsNew": "New group",
"omegaupTitleGroupsScoreboardEdit": "Edit scoreboard",
"omegaupTitleLatestSubmissions": "Latest submissions",
Expand Down
3 changes: 2 additions & 1 deletion frontend/www/js/omegaup/lang.en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,8 @@ const translations: { [key: string]: string; } = {
omegaupTitleCourseNew: "New course",
omegaupTitleCourseStatistics: "Course statistics",
omegaupTitleGroups: "Groups",
omegaupTitleGroupsEdit: "Edit group",
omegaupTitleGroupsEdit: "Edit group %(name)",
omegaupTitleGroupsEditDeprecated: "Edit group",
omegaupTitleGroupsNew: "New group",
omegaupTitleGroupsScoreboardEdit: "Edit scoreboard",
omegaupTitleLatestSubmissions: "Latest submissions",
Expand Down
3 changes: 2 additions & 1 deletion frontend/www/js/omegaup/lang.es.json
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,8 @@
"omegaupTitleCourseNew": "Nuevo curso",
"omegaupTitleCourseStatistics": "Estadisticas del curso",
"omegaupTitleGroups": "Grupos",
"omegaupTitleGroupsEdit": "Editar grupo",
"omegaupTitleGroupsEdit": "Editar grupo %(name)",
"omegaupTitleGroupsEditDeprecated": "Editar grupo",
"omegaupTitleGroupsNew": "Nuevo grupo",
"omegaupTitleGroupsScoreboardEdit": "Editar scoreboard",
"omegaupTitleLatestSubmissions": "\u00daltimos env\u00edos",
Expand Down
3 changes: 2 additions & 1 deletion frontend/www/js/omegaup/lang.es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,8 @@ const translations: { [key: string]: string; } = {
omegaupTitleCourseNew: "Nuevo curso",
omegaupTitleCourseStatistics: "Estadisticas del curso",
omegaupTitleGroups: "Grupos",
omegaupTitleGroupsEdit: "Editar grupo",
omegaupTitleGroupsEdit: "Editar grupo %(name)",
omegaupTitleGroupsEditDeprecated: "Editar grupo",
omegaupTitleGroupsNew: "Nuevo grupo",
omegaupTitleGroupsScoreboardEdit: "Editar scoreboard",
omegaupTitleLatestSubmissions: "\u00daltimos env\u00edos",
Expand Down
3 changes: 2 additions & 1 deletion frontend/www/js/omegaup/lang.pseudo.json
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,8 @@
"omegaupTitleCourseNew": "(N3w c0ur53)",
"omegaupTitleCourseStatistics": "(C0ur53 57a7i57ic5)",
"omegaupTitleGroups": "(Gr0up5)",
"omegaupTitleGroupsEdit": "(Edi7 gr0up)",
"omegaupTitleGroupsEdit": "(Edi7 gr0up %(name))",
"omegaupTitleGroupsEditDeprecated": "(Edi7 gr0up)",
"omegaupTitleGroupsNew": "(N3w gr0up)",
"omegaupTitleGroupsScoreboardEdit": "(Edi7 5c0r3b0ard)",
"omegaupTitleLatestSubmissions": "(La7357 5ubmi55i0n5)",
Expand Down
3 changes: 2 additions & 1 deletion frontend/www/js/omegaup/lang.pseudo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,8 @@ const translations: { [key: string]: string; } = {
omegaupTitleCourseNew: "(N3w c0ur53)",
omegaupTitleCourseStatistics: "(C0ur53 57a7i57ic5)",
omegaupTitleGroups: "(Gr0up5)",
omegaupTitleGroupsEdit: "(Edi7 gr0up)",
omegaupTitleGroupsEdit: "(Edi7 gr0up %(name))",
omegaupTitleGroupsEditDeprecated: "(Edi7 gr0up)",
omegaupTitleGroupsNew: "(N3w gr0up)",
omegaupTitleGroupsScoreboardEdit: "(Edi7 5c0r3b0ard)",
omegaupTitleLatestSubmissions: "(La7357 5ubmi55i0n5)",
Expand Down
3 changes: 2 additions & 1 deletion frontend/www/js/omegaup/lang.pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,8 @@
"omegaupTitleCourseNew": "Novo curso",
"omegaupTitleCourseStatistics": "Estat\u00edsticas do curso",
"omegaupTitleGroups": "Grupos",
"omegaupTitleGroupsEdit": "Editar grupo",
"omegaupTitleGroupsEdit": "Editar grupo %(name)",
"omegaupTitleGroupsEditDeprecated": "Editar grupo",
"omegaupTitleGroupsNew": "Novo grupo",
"omegaupTitleGroupsScoreboardEdit": "Editar painel de avalia\u00e7\u00e3o",
"omegaupTitleLatestSubmissions": "\u00daltimas submiss\u00f5es",
Expand Down
3 changes: 2 additions & 1 deletion frontend/www/js/omegaup/lang.pt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,8 @@ const translations: { [key: string]: string; } = {
omegaupTitleCourseNew: "Novo curso",
omegaupTitleCourseStatistics: "Estat\u00edsticas do curso",
omegaupTitleGroups: "Grupos",
omegaupTitleGroupsEdit: "Editar grupo",
omegaupTitleGroupsEdit: "Editar grupo %(name)",
omegaupTitleGroupsEditDeprecated: "Editar grupo",
omegaupTitleGroupsNew: "Novo grupo",
omegaupTitleGroupsScoreboardEdit: "Editar painel de avalia\u00e7\u00e3o",
omegaupTitleLatestSubmissions: "\u00daltimas submiss\u00f5es",
Expand Down