From df5e9d54505afc0a5bd436f78e1a1394e137e2c7 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 30 Aug 2024 11:47:16 +0200 Subject: [PATCH] ddev, fix empty participations, fix paging appointments --- .ddev/addon-metadata/phpmyadmin/manifest.yaml | 10 + .ddev/commands/host/phpmyadmin | 14 + .ddev/config.yaml | 277 ++++++++++++++++++ .ddev/docker-compose.phpmyadmin.yaml | 30 ++ .ddev/docker-compose.phpmyadmin_norouter.yaml | 4 + .ddev/php/xdebug.ini | 8 + src/client/app/index.php | 1 - .../app/state/ConfigurationAttendanceLog.js | 2 +- src/client/app/js/app/state/Home.js | 48 +-- src/client/app/tmpl/home.html | 4 +- src/server/server/config/boot_local.php | 17 +- 11 files changed, 373 insertions(+), 42 deletions(-) create mode 100644 .ddev/addon-metadata/phpmyadmin/manifest.yaml create mode 100755 .ddev/commands/host/phpmyadmin create mode 100644 .ddev/config.yaml create mode 100644 .ddev/docker-compose.phpmyadmin.yaml create mode 100644 .ddev/docker-compose.phpmyadmin_norouter.yaml create mode 100644 .ddev/php/xdebug.ini diff --git a/.ddev/addon-metadata/phpmyadmin/manifest.yaml b/.ddev/addon-metadata/phpmyadmin/manifest.yaml new file mode 100644 index 0000000..e86794d --- /dev/null +++ b/.ddev/addon-metadata/phpmyadmin/manifest.yaml @@ -0,0 +1,10 @@ +name: phpmyadmin +repository: ddev/ddev-phpmyadmin +version: v0.3.8 +install_date: "2024-08-29T14:51:22+02:00" +project_files: + - docker-compose.phpmyadmin.yaml + - docker-compose.phpmyadmin_norouter.yaml + - commands/host/phpmyadmin +global_files: [] +removal_actions: [] diff --git a/.ddev/commands/host/phpmyadmin b/.ddev/commands/host/phpmyadmin new file mode 100755 index 0000000..a1cdb80 --- /dev/null +++ b/.ddev/commands/host/phpmyadmin @@ -0,0 +1,14 @@ +#!/bin/bash + +## #ddev-generated: If you want to edit and own this file, remove this line. +## Description: Launch a browser with PhpMyAdmin +## Usage: phpmyadmin +## Example: "ddev phpmyadmin" + +DDEV_PHPMYADMIN_PORT=8036 +DDEV_PHPMYADMIN_HTTPS_PORT=8037 +if [ ${DDEV_PRIMARY_URL%://*} = "http" ] || [ -n "${GITPOD_WORKSPACE_ID:-}" ] || [ "${CODESPACES:-}" = "true" ]; then + ddev launch :$DDEV_PHPMYADMIN_PORT +else + ddev launch :$DDEV_PHPMYADMIN_HTTPS_PORT +fi diff --git a/.ddev/config.yaml b/.ddev/config.yaml new file mode 100644 index 0000000..be6539e --- /dev/null +++ b/.ddev/config.yaml @@ -0,0 +1,277 @@ +name: probuddy-master +type: php +docroot: /src/client/app +php_version: "8.1" +webserver_type: nginx-fpm +xdebug_enabled: false +additional_hostnames: [] +additional_fqdns: [] +database: + type: mariadb + version: "10.4" +use_dns_when_possible: true +composer_version: "2" +web_environment: [] +router_http_port: 8091 +router_https_port: 8463 + +# Key features of DDEV's config.yaml: + +# name: # Name of the project, automatically provides +# http://projectname.ddev.site and https://projectname.ddev.site + +# type: # backdrop, craftcms, django4, drupal6/7/8/9/10, laravel, magento, magento2, php, python, shopware6, silverstripe, typo3, wordpress +# See https://ddev.readthedocs.io/en/latest/users/quickstart/ for more +# information on the different project types + +# docroot: # Relative path to the directory containing index.php. + +# php_version: "8.1" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2", "8.3" + +# You can explicitly specify the webimage but this +# is not recommended, as the images are often closely tied to DDEV's' behavior, +# so this can break upgrades. + +# webimage: # nginx/php docker image. + +# database: +# type: # mysql, mariadb, postgres +# version: # database version, like "10.4" or "8.0" +# MariaDB versions can be 5.5-10.8 and 10.11, MySQL versions can be 5.5-8.0 +# PostgreSQL versions can be 9-16. + +# router_http_port: # Port to be used for http (defaults to global configuration, usually 80) +# router_https_port: # Port for https (defaults to global configuration, usually 443) + +# xdebug_enabled: false # Set to true to enable Xdebug and "ddev start" or "ddev restart" +# Note that for most people the commands +# "ddev xdebug" to enable Xdebug and "ddev xdebug off" to disable it work better, +# as leaving Xdebug enabled all the time is a big performance hit. + +# xhprof_enabled: false # Set to true to enable Xhprof and "ddev start" or "ddev restart" +# Note that for most people the commands +# "ddev xhprof" to enable Xhprof and "ddev xhprof off" to disable it work better, +# as leaving Xhprof enabled all the time is a big performance hit. + +# webserver_type: nginx-fpm, apache-fpm, or nginx-gunicorn + +# timezone: Europe/Berlin +# This is the timezone used in the containers and by PHP; +# it can be set to any valid timezone, +# see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +# For example Europe/Dublin or MST7MDT + +# composer_root: +# Relative path to the Composer root directory from the project root. This is +# the directory which contains the composer.json and where all Composer related +# commands are executed. + +# composer_version: "2" +# You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1 +# to use the latest major version available at the time your container is built. +# It is also possible to use each other Composer version channel. This includes: +# - 2.2 (latest Composer LTS version) +# - stable +# - preview +# - snapshot +# Alternatively, an explicit Composer version may be specified, for example "2.2.18". +# To reinstall Composer after the image was built, run "ddev debug refresh". + +# nodejs_version: "18" +# change from the default system Node.js version to any other version. +# Numeric version numbers can be complete (i.e. 18.15.0) or +# incomplete (18, 17.2, 16). 'lts' and 'latest' can be used as well along with +# other named releases. +# see https://www.npmjs.com/package/n#specifying-nodejs-versions +# Note that you can continue using 'ddev nvm' or nvm inside the web container +# to change the project's installed node version if you need to. + +# additional_hostnames: +# - somename +# - someothername +# would provide http and https URLs for "somename.ddev.site" +# and "someothername.ddev.site". + +# additional_fqdns: +# - example.com +# - sub1.example.com +# would provide http and https URLs for "example.com" and "sub1.example.com" +# Please take care with this because it can cause great confusion. + +# upload_dirs: "custom/upload/dir" +# +# upload_dirs: +# - custom/upload/dir +# - ../private +# +# would set the destination paths for ddev import-files to /custom/upload/dir +# When Mutagen is enabled this path is bind-mounted so that all the files +# in the upload_dirs don't have to be synced into Mutagen. + +# disable_upload_dirs_warning: false +# If true, turns off the normal warning that says +# "You have Mutagen enabled and your 'php' project type doesn't have upload_dirs set" + +# ddev_version_constraint: "" +# Example: +# ddev_version_constraint: ">= 1.22.4" +# This will enforce that the running ddev version is within this constraint. +# See https://github.com/Masterminds/semver#checking-version-constraints for +# supported constraint formats + +# working_dir: +# web: /var/www/html +# db: /home +# would set the default working directory for the web and db services. +# These values specify the destination directory for ddev ssh and the +# directory in which commands passed into ddev exec are run. + +# omit_containers: [db, ddev-ssh-agent] +# Currently only these containers are supported. Some containers can also be +# omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit +# the "db" container, several standard features of DDEV that access the +# database container will be unusable. In the global configuration it is also +# possible to omit ddev-router, but not here. + +# performance_mode: "global" +# DDEV offers performance optimization strategies to improve the filesystem +# performance depending on your host system. Should be configured globally. +# +# If set, will override the global config. Possible values are: +# - "global": uses the value from the global config. +# - "none": disables performance optimization for this project. +# - "mutagen": enables Mutagen for this project. +# - "nfs": enables NFS for this project. +# +# See https://ddev.readthedocs.io/en/latest/users/install/performance/#nfs +# See https://ddev.readthedocs.io/en/latest/users/install/performance/#mutagen + +# fail_on_hook_fail: False +# Decide whether 'ddev start' should be interrupted by a failing hook + +# host_https_port: "59002" +# The host port binding for https can be explicitly specified. It is +# dynamic unless otherwise specified. +# This is not used by most people, most people use the *router* instead +# of the localhost port. + +# host_webserver_port: "59001" +# The host port binding for the ddev-webserver can be explicitly specified. It is +# dynamic unless otherwise specified. +# This is not used by most people, most people use the *router* instead +# of the localhost port. + +# host_db_port: "59002" +# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic +# unless explicitly specified. + +# mailpit_http_port: "8025" +# mailpit_https_port: "8026" +# The Mailpit ports can be changed from the default 8025 and 8026 + +# host_mailpit_port: "8025" +# The mailpit port is not normally bound on the host at all, instead being routed +# through ddev-router, but it can be bound directly to localhost if specified here. + +# webimage_extra_packages: [php7.4-tidy, php-bcmath] +# Extra Debian packages that are needed in the webimage can be added here + +# dbimage_extra_packages: [telnet,netcat] +# Extra Debian packages that are needed in the dbimage can be added here + +# use_dns_when_possible: true +# If the host has internet access and the domain configured can +# successfully be looked up, DNS will be used for hostname resolution +# instead of editing /etc/hosts +# Defaults to true + +# project_tld: ddev.site +# The top-level domain used for project URLs +# The default "ddev.site" allows DNS lookup via a wildcard +# If you prefer you can change this to "ddev.local" to preserve +# pre-v1.9 behavior. + +# ngrok_args: --basic-auth username:pass1234 +# Provide extra flags to the "ngrok http" command, see +# https://ngrok.com/docs/ngrok-agent/config or run "ngrok http -h" + +# disable_settings_management: false +# If true, DDEV will not create CMS-specific settings files like +# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php +# In this case the user must provide all such settings. + +# You can inject environment variables into the web container with: +# web_environment: +# - SOMEENV=somevalue +# - SOMEOTHERENV=someothervalue + +# no_project_mount: false +# (Experimental) If true, DDEV will not mount the project into the web container; +# the user is responsible for mounting it manually or via a script. +# This is to enable experimentation with alternate file mounting strategies. +# For advanced users only! + +# bind_all_interfaces: false +# If true, host ports will be bound on all network interfaces, +# not the localhost interface only. This means that ports +# will be available on the local network if the host firewall +# allows it. + +# default_container_timeout: 120 +# The default time that DDEV waits for all containers to become ready can be increased from +# the default 120. This helps in importing huge databases, for example. + +#web_extra_exposed_ports: +#- name: nodejs +# container_port: 3000 +# http_port: 2999 +# https_port: 3000 +#- name: something +# container_port: 4000 +# https_port: 4000 +# http_port: 3999 +# Allows a set of extra ports to be exposed via ddev-router +# Fill in all three fields even if you don’t intend to use the https_port! +# If you don’t add https_port, then it defaults to 0 and ddev-router will fail to start. +# +# The port behavior on the ddev-webserver must be arranged separately, for example +# using web_extra_daemons. +# For example, with a web app on port 3000 inside the container, this config would +# expose that web app on https://.ddev.site:9999 and http://.ddev.site:9998 +# web_extra_exposed_ports: +# - name: myapp +# container_port: 3000 +# http_port: 9998 +# https_port: 9999 + +#web_extra_daemons: +#- name: "http-1" +# command: "/var/www/html/node_modules/.bin/http-server -p 3000" +# directory: /var/www/html +#- name: "http-2" +# command: "/var/www/html/node_modules/.bin/http-server /var/www/html/sub -p 3000" +# directory: /var/www/html + +# override_config: false +# By default, config.*.yaml files are *merged* into the configuration +# But this means that some things can't be overridden +# For example, if you have 'use_dns_when_possible: true'' you can't override it with a merge +# and you can't erase existing hooks or all environment variables. +# However, with "override_config: true" in a particular config.*.yaml file, +# 'use_dns_when_possible: false' can override the existing values, and +# hooks: +# post-start: [] +# or +# web_environment: [] +# or +# additional_hostnames: [] +# can have their intended affect. 'override_config' affects only behavior of the +# config.*.yaml file it exists in. + +# Many DDEV commands can be extended to run tasks before or after the +# DDEV command is executed, for example "post-start", "post-import-db", +# "pre-composer", "post-composer" +# See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more +# information on the commands that can be extended and the tasks you can define +# for them. Example: +#hooks: diff --git a/.ddev/docker-compose.phpmyadmin.yaml b/.ddev/docker-compose.phpmyadmin.yaml new file mode 100644 index 0000000..8d5dd2a --- /dev/null +++ b/.ddev/docker-compose.phpmyadmin.yaml @@ -0,0 +1,30 @@ +#ddev-generated +services: + phpmyadmin: + container_name: ddev-${DDEV_SITENAME}-phpmyadmin + image: phpmyadmin:5.2.0 + working_dir: "/root" + restart: "no" + labels: + com.ddev.site-name: ${DDEV_SITENAME} + com.ddev.approot: $DDEV_APPROOT + volumes: + - ".:/mnt/ddev_config" + - "ddev-global-cache:/mnt/ddev-global-cache" + expose: + - "80" + environment: + - PMA_USER=root + - PMA_PASSWORD=root + - PMA_HOST=db + - PMA_PORT=3306 + - VIRTUAL_HOST=$DDEV_HOSTNAME + - UPLOAD_LIMIT=4000M + - HTTP_EXPOSE=8036:80 + - HTTPS_EXPOSE=8037:80 + healthcheck: + interval: 120s + timeout: 2s + retries: 1 + depends_on: + - db diff --git a/.ddev/docker-compose.phpmyadmin_norouter.yaml b/.ddev/docker-compose.phpmyadmin_norouter.yaml new file mode 100644 index 0000000..f369b69 --- /dev/null +++ b/.ddev/docker-compose.phpmyadmin_norouter.yaml @@ -0,0 +1,4 @@ +#ddev-generated +# If omit_containers[ddev-router] then this file will be replaced +# with another with a `ports` statement to directly expose port 80 to 8036 +services: {} diff --git a/.ddev/php/xdebug.ini b/.ddev/php/xdebug.ini new file mode 100644 index 0000000..768107f --- /dev/null +++ b/.ddev/php/xdebug.ini @@ -0,0 +1,8 @@ +;xdebug.log = /home/danielknudsen/xdebug.log +;xdebug.client_port = 9003 +;xdebug.client_host=host.docker.internal +xdebug.client_host=docker.for.mac.localhost +xdebug.mode = debug +xdebug.start_with_request = yes +xdebug.log = /tmp/xdebug.log +xdebug.log_level = 7 \ No newline at end of file diff --git a/src/client/app/index.php b/src/client/app/index.php index 9dd05b5..5f0c1da 100644 --- a/src/client/app/index.php +++ b/src/client/app/index.php @@ -1,7 +1,6 @@ diff --git a/src/client/app/js/app/state/ConfigurationAttendanceLog.js b/src/client/app/js/app/state/ConfigurationAttendanceLog.js index c336ed1..068ddb6 100644 --- a/src/client/app/js/app/state/ConfigurationAttendanceLog.js +++ b/src/client/app/js/app/state/ConfigurationAttendanceLog.js @@ -40,7 +40,7 @@ app.state.ConfigurationAttendanceLog = function() { $content.find( '[data-id="container-appointment-log"]' ).first().html( app.core.View.getTemplate( - 'group-member-management-body-appointment-log', + 'group-member-management-member-body-appointment-log', { logs : res.appointmentLog } diff --git a/src/client/app/js/app/state/Home.js b/src/client/app/js/app/state/Home.js index 136486d..a1c58fd 100644 --- a/src/client/app/js/app/state/Home.js +++ b/src/client/app/js/app/state/Home.js @@ -452,34 +452,6 @@ app.state.Home = function() } } - /** - * Render appointments according to pager setting - * @param pageNo - */ - function updatePaging( pageNo ) - { - var pager = self.createPager( - appointments, - +pageNo - ), - $content = app.core.View.getContent(); - - $content.html( - app.core.View.getTemplate( - 'home', - { - appointments : pager.pageElements, - pager : pager, - filter : filter, - groupsNotActiveString: groupsNotActiveString, - } - ) - ); - - // Animate scroll to top - $("html, body").animate({ scrollTop: 0 }); - } - // Note // This needs to be called once at the beginning to trigger correct handlers and body classes app.core.View.setContent( 'Loading...' ); @@ -511,15 +483,23 @@ app.state.Home = function() ) ); } - self.appointments = appointments; - updatePaging(); + $content = app.core.View.getContent(); - $content.on( 'change', '[data-id="pager"]', function( e ) - { - updatePaging( +$( this ).val() ); - }); + $content.html( + app.core.View.getTemplate( + 'home', + { + appointments: appointments, + filter : filter, + groupsNotActiveString: groupsNotActiveString, + } + ) + ); + + // Animate scroll to top + $("html, body").animate({ scrollTop: 0 }); $content.on('input', '[data-id="appointment-search-filter"]', function(e) { diff --git a/src/client/app/tmpl/home.html b/src/client/app/tmpl/home.html index fb65e0b..0313f70 100644 --- a/src/client/app/tmpl/home.html +++ b/src/client/app/tmpl/home.html @@ -61,7 +61,7 @@ <% } %> <% var monthHeader = null, weekHeader = null, currentMonth, currentWeek, currentWeekMoment, a, mStart, mEnd, mDeadline; %> - +<%= appointments.length %> <% for ( var ai = 0; ai < appointments.length; ai++ ) { %> <% a = appointments[ ai ]; %> @@ -116,6 +116,4 @@ <% } %> - <%=raw app.core.View.getTemplate( 'home-pager', { pager : pager } ) %> - <% } %> \ No newline at end of file diff --git a/src/server/server/config/boot_local.php b/src/server/server/config/boot_local.php index 25e0d44..3cddc23 100644 --- a/src/server/server/config/boot_local.php +++ b/src/server/server/config/boot_local.php @@ -6,13 +6,24 @@ // General Francis_Utils_Config::set( 'url.client', 'src/client/app' ); -// DB settings -Francis_Utils_Config::set( 'db.tbcore.host', 'database' ); +// DB settings (docker) +//Francis_Utils_Config::set( 'db.tbcore.host', 'database' ); +//Francis_Utils_Config::set( 'db.tbcore.name', 'pb_core' ); // probudy core +//Francis_Utils_Config::set( 'db.tbcore.user', 'root' ); +//Francis_Utils_Config::set( 'db.tbcore.pass', 'root' ); +// +//Francis_Utils_Config::set( 'db.tbteamdata.host', 'database' ); +//Francis_Utils_Config::set( 'db.tbteamdata.name', 'pb_teamdata' ); +//Francis_Utils_Config::set( 'db.tbteamdata.user', 'root' ); +//Francis_Utils_Config::set( 'db.tbteamdata.pass', 'root' ); + +// DB settings (ddev) +Francis_Utils_Config::set( 'db.tbcore.host', 'db' ); Francis_Utils_Config::set( 'db.tbcore.name', 'pb_core' ); // probudy core Francis_Utils_Config::set( 'db.tbcore.user', 'root' ); Francis_Utils_Config::set( 'db.tbcore.pass', 'root' ); -Francis_Utils_Config::set( 'db.tbteamdata.host', 'database' ); +Francis_Utils_Config::set( 'db.tbteamdata.host', 'db' ); Francis_Utils_Config::set( 'db.tbteamdata.name', 'pb_teamdata' ); Francis_Utils_Config::set( 'db.tbteamdata.user', 'root' ); Francis_Utils_Config::set( 'db.tbteamdata.pass', 'root' );