From 2ee9db45656459b59e9d9085586e53de13b54845 Mon Sep 17 00:00:00 2001 From: jin Date: Sun, 8 May 2022 09:49:14 +0300 Subject: [PATCH] Added web app to view database --- .gitattributes | 1 + .github/workflows/toxic_app.yml | 25 +++++++++++ .gitignore | 1 + app/CNAME | 1 + app/app.locale=ru.json | 13 ++++++ app/app.meta.tree | 4 ++ app/app.view.css | 45 +++++++++++++++++++ app/app.view.tree | 68 +++++++++++++++++++++++++++++ app/app.view.ts | 76 +++++++++++++++++++++++++++++++++ app/index.html | 14 ++++++ logo/logo.svg | 3 ++ 11 files changed, 251 insertions(+) create mode 100644 .gitattributes create mode 100644 .github/workflows/toxic_app.yml create mode 100644 app/CNAME create mode 100644 app/app.locale=ru.json create mode 100644 app/app.meta.tree create mode 100644 app/app.view.css create mode 100644 app/app.view.tree create mode 100644 app/app.view.ts create mode 100644 app/index.html create mode 100644 logo/logo.svg diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..7745062 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* -text diff --git a/.github/workflows/toxic_app.yml b/.github/workflows/toxic_app.yml new file mode 100644 index 0000000..7c0c9fd --- /dev/null +++ b/.github/workflows/toxic_app.yml @@ -0,0 +1,25 @@ +name: Deploy + +on: + workflow_dispatch: + push: + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + + - name: Build app + uses: hyoo-ru/mam_build@master2 + with: + token: ${{ secrets.GH_PAT }} + package: 'toxic/app' + + - name: Deploy on GitHub Pages + if: github.ref == 'refs/heads/master' + uses: alex-page/blazing-fast-gh-pages-deploy@v1.1.0 + with: + repo-token: ${{ secrets.GH_PAT }} + site-directory: 'toxic/app/-' diff --git a/.gitignore b/.gitignore index 3f96c6d..225edf9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +-* .idea/ src/ diff --git a/app/CNAME b/app/CNAME new file mode 100644 index 0000000..54ec89f --- /dev/null +++ b/app/CNAME @@ -0,0 +1 @@ +toxic-repos.ru diff --git a/app/app.locale=ru.json b/app/app.locale=ru.json new file mode 100644 index 0000000..d755300 --- /dev/null +++ b/app/app.locale=ru.json @@ -0,0 +1,13 @@ +{ + "$toxic_app_Add_hint": "Добавить новую проблему", + "$toxic_app_Chat_hint": "Обсуждения", + "$toxic_app_Mail_hint": "Почта", + "$toxic_app_New_hint": "Нвости", + "$toxic_app_type_name_all": "Все", + "$toxic_app_type_name_broken_assembly": "Ломает сборку", + "$toxic_app_type_name_ddos": "DDOS", + "$toxic_app_type_name_hostile_actions": "Хулиганство", + "$toxic_app_type_name_ip_block": "Блокировка по IP", + "$toxic_app_type_name_malware": "Саботаж", + "$toxic_app_type_name_political_slogans": "Политические слоганы" +} diff --git a/app/app.meta.tree b/app/app.meta.tree new file mode 100644 index 0000000..91dae9f --- /dev/null +++ b/app/app.meta.tree @@ -0,0 +1,4 @@ +include \/mol/offline/install + +deploy \/toxic/logo/logo.svg +deploy \/toxic/data/json/toxic-repos.json diff --git a/app/app.view.css b/app/app.view.css new file mode 100644 index 0000000..6e52f5d --- /dev/null +++ b/app/app.view.css @@ -0,0 +1,45 @@ +[toxic_app] { + --mol_theme_hue: 380deg; +} + +[toxic_app_menu] { + flex: 0 0 18rem; +} + +[toxic_app_issues_page] { + flex: 0 0 60rem; +} + +[toxic_app_issues] { + /* padding: var(--mol_gap_block); */ +} + +[toxic_app_issue] { + padding: var(--mol_gap_block); +} + +[toxic_app_issue_main] { + justify-content: space-between; + flex-wrap: wrap; + gap: .75rem; +} + +[toxic_app_issue_name] { + text-shadow: 0 0; + flex: 1 1 auto; +} + +[toxic_app_issue_type] { + color: var(--mol_theme_shade); +} + +[toxic_app_issue_date] { + color: var(--mol_theme_shade); +} + +[toxic_app_issue_descr] { + max-width: 100% +} + +[toxic_app_issue_descr_row] { +} diff --git a/app/app.view.tree b/app/app.view.tree new file mode 100644 index 0000000..a35493b --- /dev/null +++ b/app/app.view.tree @@ -0,0 +1,68 @@ +$toxic_app $mol_book2_catalog + menu_title \Toxis Repos + menu_tools / + <= Add $mol_link + uri \https://t.me/darksider_bot + hint @ \Add new issue + sub / + <= Add_icon $mol_icon_plus + <= Source $mol_link_source + uri \https://github.com/nin-jin/toxic-repos + <= Lights $mol_lights_toggle + menu_foot / + <= Chat $mol_link + uri \https://t.me/toxic_repos + hint @ \Discussions + sub / + <= Chat_icon $mol_icon_telegram + <= New $mol_link + uri \https://twitter.com/ZStravnik + hint @ \News + sub / + <= News_icon $mol_icon_twitter + <= Mail $mol_link + uri \mailto:info@toxic-repos.ru + hint @ \E-Mail + sub / + <= Mail_icon $mol_icon_email + plugins / + <= Theme $mol_theme_auto + spreads * + \ + <= Issues_page*all + broken_assembly <= Issues_page*broken_assembly + ddos <= Issues_page*ddos + hostile_actions <= Issues_page*hostile_actions + ip_block <= Issues_page*ip_block + malware <= Issues_page*malware + political_slogans <= Issues_page*political_slogans + type_name * + all @ \All + broken_assembly @ \Broken Assemply + ddos @ \DDOS + hostile_actions @ \Hostile Actions + ip_block @ \IP Block + malware @ \Malware + political_slogans @ \Political Slogans + Issues_page* $mol_page + title <= issues_page_title* \ + tools / + <= Search $mol_search + query?val <=> search?val \ + body / + <= Issues $mol_list rows <= issues / + Issue* $mol_list + rows / + <= Issue_main* $mol_link + uri <= issue_uri* \ + sub / + <= Issue_name* $mol_dimmer + haystack <= issue_name* \ + needle <= search + <= Issue_type* $mol_view + sub / <= issue_type* \ + <= Issue_date* $mol_view + sub / <= issue_date* \ + <= Issue_descr* $mol_text + text <= issue_descr* \ + highlight <= search diff --git a/app/app.view.ts b/app/app.view.ts new file mode 100644 index 0000000..1fabee1 --- /dev/null +++ b/app/app.view.ts @@ -0,0 +1,76 @@ +namespace $.$$ { + + const Data = $mol_data_array( + $mol_data_record({ + id: $mol_data_integer, + datetime: $mol_data_string, + problem_type: $mol_data_string, + name: $mol_data_string, + commit_link: $mol_data_string, + description: $mol_data_string, + }) + ) + + export class $toxic_app extends $.$toxic_app { + + @ $mol_mem_key + issues_page_title( id: string ) { + return this.type_name()[ id ] ?? id + } + + @ $mol_mem + data_all() { + const json = this.$.$mol_fetch.json( 'toxic/data/json/toxic-repos.json' ) + return Data( json ) + } + + @ $mol_mem + search( next?: string ) { + return this.$.$mol_state_arg.value( 'search', next ) ?? '' + } + + @ $mol_mem + data_filtered() { + + let data = this.data_all() + + const type = this.spread() + if( type ) data = data.filter( item => item.problem_type === type ) + + const search = this.search() + if( search ) data = data.filter( + $mol_match_text( search, item => [ item.name, item.description ] ) + ) + + return data + } + + @ $mol_mem + issues() { + return this.data_filtered().map( (_,i)=> this.Issue( i ) ) + } + + issue_name( index: number ) { + return this.data_filtered()[ index ].name + } + + @ $mol_mem_key + issue_date( index: number ) { + return new $mol_time_moment( this.data_filtered()[ index ].datetime ).toString( 'YYYY-MM-DD' ) + } + + issue_type( index: number ) { + return this.type_name()[ this.data_filtered()[ index ].problem_type ] + } + + issue_uri( index: number ) { + return this.data_filtered()[ index ].commit_link + } + + issue_descr( index: number ) { + return this.data_filtered()[ index ].description + } + + } + +} diff --git a/app/index.html b/app/index.html new file mode 100644 index 0000000..e9bdf8c --- /dev/null +++ b/app/index.html @@ -0,0 +1,14 @@ + + + + + + + + + + +
+ + + diff --git a/logo/logo.svg b/logo/logo.svg new file mode 100644 index 0000000..acedfd6 --- /dev/null +++ b/logo/logo.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file