Skip to content

Commit

Permalink
Merge pull request #44 from hyoo-ru/master
Browse files Browse the repository at this point in the history
On-site secure registration, guest list, stats timeline, poster generation
  • Loading branch information
nin-jin authored Oct 10, 2023
2 parents e870884 + d205f99 commit 16f4a31
Show file tree
Hide file tree
Showing 31 changed files with 595 additions and 109 deletions.
44 changes: 0 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,10 @@
# PiterJS

# Внесение данных

Всё данные находятся в data.[tree](https://github.com/nin-jin/tree.d) конфигах. Для отступов используются табы, юниксовые переводы строк. После обновления данных нужно открыть [piterjs.org](https://piterjs.org/). Если будут какие-либо ошибки или данные не появятся, то в консоли разработчика (Ctrl+Shit+I) будет написано в чём проблема.

Проще всего вносить данные через свой форк прямо на гитхабе.

## Добавление докладчика

1. Открываем [speaker/speaker.data.tree](speaker/speaker.data.tree)
2. Поиском проверяем, что этого докладчика ещё нет.
3. Если есть - обновляем его данные, если надо.
4. Если нет - придумываем ему красивый идентификатор. Например - первые слога фамилии и имени транслитом. Или широко известный никнейм докладчика. Проверяем, что этот идентификатор ещё никем не занят.
5. Добавляем данные о нём по аналогии с остальными.

## Добавление выступления

1. Открываем [speech/speech.data.tree](speech/speech.data.tree)
2. Придумываем выступлению красивый идентификатор. Желательно не слишком длинный. Проверяем, что других докладов с этим идентификатором ещё нет.
3. Добавляем данные о нём по аналогии с остальными.
4. В поле `speaker` указываем идентификаторы докладчиков. В поле `duration` (продолжительность доклада) используется [ISO8601](https://en.wikipedia.org/wiki/ISO_8601#Durations).

## Добавление митапа

1. Открываем [meetup/meetup.data.tree](meetup/meetup.data.tree)
2. Добавляем данные о нём по аналогии с остальными.
3. В поле `speeches` указываем идентификаторы выступлений. В поле `place` указываем идентификатор площадки. В поле `start` (время начала митапа) используется [ISO8601](https://en.wikipedia.org/wiki/ISO_8601).

## Добавление площадки

1. Открываем [place/place.data.tree](place/place.data.tree)
2. Добавляем данные о ней по аналогии с остальными.

## Изменение презентации

1. Открываем [intro/intro.view.tree](intro/intro.view.tree)
2. Изменяем по аналогии с остальным. В `text` можно использовать markdown. Можно добавлять свои страницы или скрывать существующие, поставив `- ` (дефис+пробел) перед веткой описания слайда. У каждого слайда первым словом задаётся уникальный идентификатор, который будет фигурировать в ссылке.

# Запуск девсервера

```
git clone https://github.com/eigenmethod/mam.git ./mam && cd mam
npm install
npm start
```

Application will be accessible at `http://localhost:9080/piterjs/app/-/index.html`

You can change source files (`./piterjs/**`) and reload page to view result.

# BrowserStack

We use it for crossbrowser testing.
Expand Down
2 changes: 1 addition & 1 deletion app/app.view.css
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
}

[piterjs_app_menu] {
flex: 0 0 14rem;
flex: 0 0 15rem;
}

[piterjs_app_menu_content] {
Expand Down
16 changes: 16 additions & 0 deletions app/app.view.tree
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ $piterjs_app $mol_view
meetups => meetups
meetup* => meetup*
meetup_public*? => meetup_public*?
person => person
plugins /
<= Theme $mol_theme_auto
sub /
Expand All @@ -25,6 +26,10 @@ $piterjs_app $mol_view
<= Rights_toggle $mol_check_icon
checked? <=> rights? false
Icon <= Rights_toggle_icon $mol_icon_shield_account
<= Safe_link $mol_link
arg * safe \
sub /
<= Safe_icon $mol_icon_key_variant
foot <= foot /
<= Online $hyoo_sync_online
yard <= Yard $hyoo_sync_client
Expand Down Expand Up @@ -56,8 +61,13 @@ $piterjs_app $mol_view
title \Другие события
Meetup* $piterjs_meetup_page
meetup <= meetup*
person <= person
editing <= editing? false
meetup_public? <=> meetup_public*?
Meetup_guests* $piterjs_meetup_guests
meetup <= meetup*
Meetup_stats* $piterjs_meetup_stats
meetup <= meetup*
Speech!id $piterjs_speech_page
speech <= speech!id $piterjs_speech
editing <= editing? false
Expand All @@ -81,3 +91,9 @@ $piterjs_app $mol_view
Wiki $hyoo_page
side_main_id \zi5t5h_8aygdf
yard <= Yard
Safe $hyoo_meta_safe
tools /
<= Safe_close $mol_link
arg * safe null
sub /
<= Safe_close_icon $mol_icon_cross
9 changes: 9 additions & 0 deletions app/app.view.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ namespace $.$$ {

wiki() { return this.$.$mol_state_arg.value( 'wiki' ) !== null }

guests() { return this.$.$mol_state_arg.value( 'guests' ) !== null }
stats() { return this.$.$mol_state_arg.value( 'stats' ) !== null }

safe() { return this.$.$mol_state_arg.value( 'safe' ) !== null }

@ $mol_mem
meetup_id( next? : string | null ) {

Expand Down Expand Up @@ -62,6 +67,9 @@ namespace $.$$ {
const pages = [
this.Menu() ,
... this.meetup_id() ? [ this.Meetup( this.meetup_id() ) ] : [] ,
... this.safe() ? [ this.Safe() ] : [],
... this.guests() ? [ this.Meetup_guests( this.meetup_id() ) ] : [] ,
... this.stats() ? [ this.Meetup_stats( this.meetup_id() ) ] : [] ,
... this.speech_id() ? [ this.Speech( this.speech_id() ) ] : [] ,
... this.place_show() ? [ this.Place() ] : [] ,
... this.video() ? [ this.Video() ] : [] ,
Expand Down Expand Up @@ -131,6 +139,7 @@ namespace $.$$ {
return [
... this.editing() ? [ this.Meetup_add() ] : [],
... this.editing() ? [ this.Rights_toggle() ] : [],
this.Safe_link(),
]
}

Expand Down
20 changes: 20 additions & 0 deletions domain/domain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,26 @@ namespace $ {
return this.world()!.Fund( $piterjs_meetup ).make()!
}

@ $mol_mem
person() {
return this.world()!.Fund( $piterjs_person ).Item( this.land!.peer_id() )
}

@ $mol_mem
static secure_public() {
return '2SZr8D4nwg_SQrt1PSB3NTRqz_Qzx5eo04gC2lsJTRwCcLC-8vFfvBFHY8f05nrm_vRS5Rx_qTMRRw06wdrwWk'
}

@ $mol_mem
static secure_private() {

const sec = this.$.$mol_state_arg.value( 'secure' )
if( !sec ) return null

return this.secure_public() + sec

}

}

}
3 changes: 2 additions & 1 deletion intro/intro.view.css
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
[piterjs_intro] {
flex: auto;
display: flex;
font-size: 5vmin;
font-size: 4vmin;
line-height: 6vmin;
}

@keyframes piterjs_intro_screen_show {
Expand Down
17 changes: 17 additions & 0 deletions meetup/guests/guests.view.css.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
namespace $.$$ {

$mol_style_define( $piterjs_meetup_guests, {

flex: {
basis: `20rem`,
},

Filter: {
align: {
self: `stretch`,
}
},

} )

}
18 changes: 18 additions & 0 deletions meetup/guests/guests.view.tree
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
$piterjs_meetup_guests $mol_page
meetup $piterjs_meetup
title \Список гостей
tools /
<= Close $mol_link
arg * guests null
sub /
<= Close_icon $mol_icon_cross
body /
<= Content $mol_list rows /
<= Filter $mol_search
hint \Поиск...
query? <=> filter? \
<= Person_list $mol_list
rows <= person_list /
<= Person*0_0 $piterjs_person_snippet
person <= person* $piterjs_person
needle <= filter
16 changes: 16 additions & 0 deletions meetup/guests/guests.view.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
namespace $.$$ {
export class $piterjs_meetup_guests extends $.$piterjs_meetup_guests {

@ $mol_mem
person_list() {
return this.meetup().joined_list()
.filter( $mol_match_text( this.filter(), person => [ person.name_real(), person.id() ] ) )
.map( person => this.Person( person ) )
}

person( person: $piterjs_person ) {
return person
}

}
}
29 changes: 29 additions & 0 deletions meetup/meetup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,35 @@ namespace $ {
return this.sub( 'afterparty', $hyoo_crowd_reg ).str( next )
}

@ $mol_mem
joined_node() {
return this.sub( 'joined', $hyoo_crowd_counter )
}

@ $mol_mem
joined( next?: boolean ) {
return this.joined_node().counted( next ) ?? false
}

@ $mol_mem
joined_list() {
const Person = this.world()!.Fund( $piterjs_person )
return this.joined_node().list().map( id => Person.Item( id ) )
}

@ $mol_mem
joined_moments() {
return Object.fromEntries(
Object.entries( this.joined_node().times() )
.map( ([ peer, stamp ]) => [ peer, new $mol_time_moment( stamp ) ] )
)
}

@ $mol_mem
joined_count() {
return this.joined_node().total()
}

}

}
35 changes: 31 additions & 4 deletions meetup/page/page.view.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@
flex: 0 0 28rem;
}

[piterjs_meetup_page_head] {
flex-wrap: nowrap;
[piterjs_meetup_page_title] {
flex: 1000 1000 3rem;
}

[piterjs_meetup_page_tools] {
flex-grow: 1;
}

[piterjs_meetup_page_body] {
Expand All @@ -28,12 +32,35 @@
font-family: sans-serif;
}

[piterjs_meetup_page_hidden_fields] {
padding: var(--mol_gap_block);
}

[piterjs_meetup_page_afterparty] {
box-shadow: none;
flex-grow: 0;
font-family: sans-serif;
}

[piterjs_meetup_page_title] {
flex: 1000 1000 auto;
[piterjs_meetup_page_join] {
padding: var(--mol_gap_block);
background-color: var(--mol_theme_card);
}

[piterjs_meetup_page_joined_confirm] {
padding: var(--mol_gap_text);
color: var(--mol_theme_focus);
}

[piterjs_meetup_page_free_space] {
padding: var(--mol_gap_text);
color: var(--mol_theme_shade);
}

[piterjs_meetup_page_capacity_field] {
flex: 1
}

[piterjs_meetup_page_capacity_cut] {
align-self: flex-end;
}
Loading

0 comments on commit 16f4a31

Please sign in to comment.