mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-17 15:12:51 +00:00
Compare commits
18 Commits
@openstapp
...
623673440d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
623673440d | ||
|
c1883abb50
|
|||
|
3ac8c04765
|
|||
|
|
5c260dd26b | ||
|
|
f2e1a6ddd5 | ||
|
|
ccacfbf710 | ||
|
|
b249b329f7 | ||
|
|
7afc24f1bc | ||
|
|
7276525dfa | ||
|
|
c9e881582f | ||
|
|
df681de083 | ||
| 802a7a3fa7 | |||
|
|
343d03e647 | ||
| 727b92911e | |||
| 11bc987807 | |||
|
|
b8faae5988 | ||
| 67ab1fd613 | |||
|
|
142079bf0e |
5
.changeset/forty-bulldogs-help.md
Normal file
5
.changeset/forty-bulldogs-help.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@openstapps/app": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Migrated IonIcons replacer to a custom component
|
||||||
7
.changeset/thin-dodos-thank.md
Normal file
7
.changeset/thin-dodos-thank.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
"@openstapps/app": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Migrated to Ionic standalone components
|
||||||
|
|
||||||
|
Angular ESBuild will not work with `IonicModule` apps
|
||||||
5
.changeset/yellow-jobs-guess.md
Normal file
5
.changeset/yellow-jobs-guess.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@openstapps/app": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Migrated to Angular ESBuild
|
||||||
@@ -67,9 +67,9 @@ build:
|
|||||||
# "🦋 error Error: Failed to find where HEAD diverged from master. Does master exist?"
|
# "🦋 error Error: Failed to find where HEAD diverged from master. Does master exist?"
|
||||||
# - pnpm changeset:status
|
# - pnpm changeset:status
|
||||||
- pnpm build:full $TURBO_CACHE_BYPASS
|
- pnpm build:full $TURBO_CACHE_BYPASS
|
||||||
- .gitlab/ci/enableGitlabReviewToolbar.sh frontend/app/www/index.html "$CI_PROJECT_ID" "$CI_OPEN_MERGE_REQUESTS"
|
- .gitlab/ci/enableGitlabReviewToolbar.sh frontend/app/www/browser/index.html "$CI_PROJECT_ID" "$CI_OPEN_MERGE_REQUESTS"
|
||||||
- cp frontend/app/www/index.html frontend/app/www/200.html
|
- cp frontend/app/www/browser/index.html frontend/app/www/browser/200.html
|
||||||
- pnpm dlx surge -p frontend/app/www -d https://$CI_PROJECT_NAME-$DEPLOY_ID.surge.sh/
|
- pnpm dlx surge -p frontend/app/www/browser -d https://$CI_PROJECT_NAME-$DEPLOY_ID.surge.sh/
|
||||||
cache:
|
cache:
|
||||||
<<: *pnpm_cache
|
<<: *pnpm_cache
|
||||||
policy: pull-push
|
policy: pull-push
|
||||||
|
|||||||
@@ -1,5 +1,18 @@
|
|||||||
# @openstapps/backend
|
# @openstapps/backend
|
||||||
|
|
||||||
|
## 3.3.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @openstapps/core@3.3.2
|
||||||
|
- @openstapps/core-tools@3.3.2
|
||||||
|
|
||||||
|
## 3.3.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 67ab1fd6: fix for geo.point mapping
|
||||||
|
|
||||||
## 3.3.0
|
## 3.3.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@openstapps/backend",
|
"name": "@openstapps/backend",
|
||||||
"description": "A reference implementation for a StApps backend",
|
"description": "A reference implementation for a StApps backend",
|
||||||
"version": "3.3.0",
|
"version": "3.3.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export function buildDistanceFilter(
|
|||||||
): QueryDslSpecificQueryContainer<'geo_distance'> {
|
): QueryDslSpecificQueryContainer<'geo_distance'> {
|
||||||
const geoObject: QueryDslGeoDistanceQuery = {
|
const geoObject: QueryDslGeoDistanceQuery = {
|
||||||
distance: `${filter.arguments.distance}m`,
|
distance: `${filter.arguments.distance}m`,
|
||||||
[`${filter.arguments.field}.point.coordinates`]: {
|
[`${filter.arguments.field}.point`]: {
|
||||||
lat: filter.arguments.position[1],
|
lat: filter.arguments.position[1],
|
||||||
lon: filter.arguments.position[0],
|
lon: filter.arguments.position[0],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export function buildDistanceSort(sort: SCDistanceSort): SortOptions {
|
|||||||
mode: 'avg',
|
mode: 'avg',
|
||||||
order: sort.order,
|
order: sort.order,
|
||||||
unit: 'm',
|
unit: 'm',
|
||||||
[`${sort.arguments.field}.point.coordinates`]: {
|
[`${sort.arguments.field}.point`]: {
|
||||||
lat: sort.arguments.position[1],
|
lat: sort.arguments.position[1],
|
||||||
lon: sort.arguments.position[0],
|
lon: sort.arguments.position[0],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -466,7 +466,7 @@ describe('Query', function () {
|
|||||||
const expectedFilter: QueryDslSpecificQueryContainer<'geo_distance'> = {
|
const expectedFilter: QueryDslSpecificQueryContainer<'geo_distance'> = {
|
||||||
geo_distance: {
|
geo_distance: {
|
||||||
'distance': '1000m',
|
'distance': '1000m',
|
||||||
'geo.point.coordinates': {
|
'geo.point': {
|
||||||
lat: 8.123,
|
lat: 8.123,
|
||||||
lon: 50.123,
|
lon: 50.123,
|
||||||
},
|
},
|
||||||
@@ -636,7 +636,7 @@ describe('Query', function () {
|
|||||||
'mode': 'avg',
|
'mode': 'avg',
|
||||||
'order': 'desc',
|
'order': 'desc',
|
||||||
'unit': 'm',
|
'unit': 'm',
|
||||||
'geo.point.coordinates': {
|
'geo.point': {
|
||||||
lat: 50.123,
|
lat: 50.123,
|
||||||
lon: 8.123,
|
lon: 8.123,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @openstapps/minimal-connector
|
# @openstapps/minimal-connector
|
||||||
|
|
||||||
|
## 3.3.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @openstapps/core@3.3.2
|
||||||
|
- @openstapps/api@3.3.2
|
||||||
|
|
||||||
## 3.3.0
|
## 3.3.0
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@openstapps/minimal-connector",
|
"name": "@openstapps/minimal-connector",
|
||||||
"description": "This is a minimal connector which serves as an example",
|
"description": "This is a minimal connector which serves as an example",
|
||||||
"version": "3.3.0",
|
"version": "3.3.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"license": "GPL-3.0-only",
|
"license": "GPL-3.0-only",
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
# @openstapps/minimal-plugin
|
# @openstapps/minimal-plugin
|
||||||
|
|
||||||
|
## 3.3.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @openstapps/core@3.3.2
|
||||||
|
- @openstapps/core-tools@3.3.2
|
||||||
|
- @openstapps/api-plugin@3.3.2
|
||||||
|
- @openstapps/api@3.3.2
|
||||||
|
|
||||||
## 3.3.0
|
## 3.3.0
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@openstapps/minimal-plugin",
|
"name": "@openstapps/minimal-plugin",
|
||||||
"description": "Minimal Plugin",
|
"description": "Minimal Plugin",
|
||||||
"version": "3.3.0",
|
"version": "3.3.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"license": "GPL-3.0-only",
|
"license": "GPL-3.0-only",
|
||||||
|
|||||||
129
flake.nix
129
flake.nix
@@ -4,68 +4,71 @@
|
|||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
};
|
};
|
||||||
outputs = {
|
outputs =
|
||||||
self,
|
{
|
||||||
nixpkgs,
|
self,
|
||||||
flake-utils,
|
nixpkgs,
|
||||||
}: let
|
flake-utils,
|
||||||
aapt2buildToolsVersion = "33.0.2";
|
}:
|
||||||
in
|
let
|
||||||
flake-utils.lib.eachDefaultSystem (system: let
|
aapt2buildToolsVersion = "33.0.2";
|
||||||
pkgs = import nixpkgs {
|
in
|
||||||
inherit system;
|
flake-utils.lib.eachDefaultSystem (
|
||||||
overlays = [
|
system:
|
||||||
(final: prev: rec {
|
let
|
||||||
fontMin = prev.python311.withPackages (ps: with ps; [brotli fonttools] ++ (with fonttools.optional-dependencies; [woff]));
|
pkgs = import nixpkgs {
|
||||||
android = prev.androidenv.composeAndroidPackages {
|
inherit system;
|
||||||
buildToolsVersions = ["30.0.3" aapt2buildToolsVersion];
|
config = {
|
||||||
platformVersions = ["33"];
|
allowUnfree = true;
|
||||||
};
|
android_sdk.accept_license = true;
|
||||||
cypress = prev.cypress.overrideAttrs (cyPrev: rec {
|
};
|
||||||
version = "13.2.0";
|
|
||||||
src = prev.fetchzip {
|
|
||||||
url = "https://cdn.cypress.io/desktop/${version}/linux-x64/cypress.zip";
|
|
||||||
hash = "sha256-9o0nprGcJhudS1LNm+T7Vf0Dwd1RBauYKI+w1FBQ3ZM=";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
nodejs = prev.nodejs_18;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
android_sdk.accept_license = true;
|
|
||||||
};
|
};
|
||||||
};
|
fontMin = pkgs.python311.withPackages (
|
||||||
androidFhs = pkgs.buildFHSUserEnv {
|
ps:
|
||||||
name = "android-env";
|
with ps;
|
||||||
targetPkgs = pkgs: with pkgs; [];
|
[
|
||||||
runScript = "bash";
|
brotli
|
||||||
profile = ''
|
fonttools
|
||||||
export ALLOW_NINJA_ENV=true
|
]
|
||||||
export USE_CCACHE=1
|
++ (with fonttools.optional-dependencies; [ woff ])
|
||||||
export LD_LIBRARY_PATH=/usr/lib:/usr/lib32
|
);
|
||||||
'';
|
android = pkgs.androidenv.composeAndroidPackages {
|
||||||
};
|
buildToolsVersions = [
|
||||||
in {
|
"30.0.3"
|
||||||
devShell = pkgs.mkShell rec {
|
aapt2buildToolsVersion
|
||||||
nativeBuildInputs = [androidFhs];
|
];
|
||||||
buildInputs = with pkgs; [
|
platformVersions = [ "33" ];
|
||||||
nodejs
|
};
|
||||||
corepack
|
androidJdk = pkgs.jdk17;
|
||||||
# tools
|
cypress = pkgs.cypress.overrideAttrs (cyPrev: rec {
|
||||||
curl
|
version = "13.2.0";
|
||||||
jq
|
src = pkgs.fetchzip {
|
||||||
fontMin
|
url = "https://cdn.cypress.io/desktop/${version}/linux-x64/cypress.zip";
|
||||||
cypress
|
hash = "sha256-9o0nprGcJhudS1LNm+T7Vf0Dwd1RBauYKI+w1FBQ3ZM=";
|
||||||
# android
|
};
|
||||||
jdk17
|
});
|
||||||
android.androidsdk
|
in
|
||||||
];
|
{
|
||||||
ANDROID_JAVA_HOME = "${pkgs.jdk.home}";
|
devShell = pkgs.mkShell rec {
|
||||||
ANDROID_SDK_ROOT = "${pkgs.android.androidsdk}/libexec/android-sdk";
|
buildInputs = [
|
||||||
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${aapt2buildToolsVersion}/aapt2";
|
pkgs.nodejs_18
|
||||||
CYPRESS_INSTALL_BINARY = "0";
|
pkgs.corepack
|
||||||
CYPRESS_RUN_BINARY = "${pkgs.cypress}/bin/Cypress";
|
# tools
|
||||||
};
|
pkgs.curl
|
||||||
});
|
pkgs.jq
|
||||||
|
fontMin
|
||||||
|
cypress
|
||||||
|
# android
|
||||||
|
androidJdk
|
||||||
|
android.androidsdk
|
||||||
|
];
|
||||||
|
ANDROID_JAVA_HOME = "${androidJdk.home}";
|
||||||
|
ANDROID_SDK_ROOT = "${android.androidsdk}/libexec/android-sdk";
|
||||||
|
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${aapt2buildToolsVersion}/aapt2";
|
||||||
|
CYPRESS_INSTALL_BINARY = "0";
|
||||||
|
CYPRESS_RUN_BINARY = "${cypress}/bin/Cypress";
|
||||||
|
CHROME_BIN = pkgs.lib.getExe pkgs.chromium;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# @openstapps/app
|
# @openstapps/app
|
||||||
|
|
||||||
|
## 3.3.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 7afc24f1: fixed config version comparison
|
||||||
|
- @openstapps/core@3.3.2
|
||||||
|
- @openstapps/api@3.3.2
|
||||||
|
|
||||||
## 3.3.0
|
## 3.3.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
FROM node:18-alpine3.18
|
FROM node:18-alpine3.18
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY www/ /app/www
|
COPY www/browser /app/www/browser
|
||||||
COPY package.json /app
|
COPY package.json /app
|
||||||
|
|
||||||
EXPOSE 8100
|
EXPOSE 8100
|
||||||
|
|
||||||
RUN npm install -g http-server
|
RUN npm install -g http-server
|
||||||
CMD http-server www --p 8100
|
CMD http-server www/browser --p 8100
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
namespace "de.anyschool.app"
|
namespace "de.anyschool.app"
|
||||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
compileSdk rootProject.ext.compileSdkVersion
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "de.anyschool.app"
|
applicationId "de.anyschool.app"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:8.0.0'
|
classpath 'com.android.tools.build:gradle:8.2.1'
|
||||||
classpath 'com.google.gms:google-services:4.3.15'
|
classpath 'com.google.gms:google-services:4.4.0'
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
|||||||
@@ -1,57 +1,57 @@
|
|||||||
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
|
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
|
||||||
include ':capacitor-android'
|
include ':capacitor-android'
|
||||||
project(':capacitor-android').projectDir = new File('../../../node_modules/.pnpm/@capacitor+android@5.7.3_@capacitor+core@5.7.3/node_modules/@capacitor/android/capacitor')
|
project(':capacitor-android').projectDir = new File('../../../node_modules/.pnpm/@capacitor+android@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/android/capacitor')
|
||||||
|
|
||||||
include ':capacitor-community-screen-brightness'
|
include ':capacitor-community-screen-brightness'
|
||||||
project(':capacitor-community-screen-brightness').projectDir = new File('../../../node_modules/.pnpm/@capacitor-community+screen-brightness@6.0.0_@capacitor+core@5.7.3/node_modules/@capacitor-community/screen-brightness/android')
|
project(':capacitor-community-screen-brightness').projectDir = new File('../../../node_modules/.pnpm/@capacitor-community+screen-brightness@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor-community/screen-brightness/android')
|
||||||
|
|
||||||
include ':capacitor-app'
|
include ':capacitor-app'
|
||||||
project(':capacitor-app').projectDir = new File('../../../node_modules/.pnpm/@capacitor+app@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/app/android')
|
project(':capacitor-app').projectDir = new File('../../../node_modules/.pnpm/@capacitor+app@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/app/android')
|
||||||
|
|
||||||
include ':capacitor-browser'
|
include ':capacitor-browser'
|
||||||
project(':capacitor-browser').projectDir = new File('../../../node_modules/.pnpm/@capacitor+browser@5.2.0_@capacitor+core@5.7.3/node_modules/@capacitor/browser/android')
|
project(':capacitor-browser').projectDir = new File('../../../node_modules/.pnpm/@capacitor+browser@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/browser/android')
|
||||||
|
|
||||||
include ':capacitor-clipboard'
|
include ':capacitor-clipboard'
|
||||||
project(':capacitor-clipboard').projectDir = new File('../../../node_modules/.pnpm/@capacitor+clipboard@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/clipboard/android')
|
project(':capacitor-clipboard').projectDir = new File('../../../node_modules/.pnpm/@capacitor+clipboard@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/clipboard/android')
|
||||||
|
|
||||||
include ':capacitor-device'
|
include ':capacitor-device'
|
||||||
project(':capacitor-device').projectDir = new File('../../../node_modules/.pnpm/@capacitor+device@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/device/android')
|
project(':capacitor-device').projectDir = new File('../../../node_modules/.pnpm/@capacitor+device@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/device/android')
|
||||||
|
|
||||||
include ':capacitor-dialog'
|
include ':capacitor-dialog'
|
||||||
project(':capacitor-dialog').projectDir = new File('../../../node_modules/.pnpm/@capacitor+dialog@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/dialog/android')
|
project(':capacitor-dialog').projectDir = new File('../../../node_modules/.pnpm/@capacitor+dialog@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/dialog/android')
|
||||||
|
|
||||||
include ':capacitor-filesystem'
|
include ':capacitor-filesystem'
|
||||||
project(':capacitor-filesystem').projectDir = new File('../../../node_modules/.pnpm/@capacitor+filesystem@5.2.1_@capacitor+core@5.7.3/node_modules/@capacitor/filesystem/android')
|
project(':capacitor-filesystem').projectDir = new File('../../../node_modules/.pnpm/@capacitor+filesystem@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/filesystem/android')
|
||||||
|
|
||||||
include ':capacitor-geolocation'
|
include ':capacitor-geolocation'
|
||||||
project(':capacitor-geolocation').projectDir = new File('../../../node_modules/.pnpm/@capacitor+geolocation@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/geolocation/android')
|
project(':capacitor-geolocation').projectDir = new File('../../../node_modules/.pnpm/@capacitor+geolocation@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/geolocation/android')
|
||||||
|
|
||||||
include ':capacitor-haptics'
|
include ':capacitor-haptics'
|
||||||
project(':capacitor-haptics').projectDir = new File('../../../node_modules/.pnpm/@capacitor+haptics@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/haptics/android')
|
project(':capacitor-haptics').projectDir = new File('../../../node_modules/.pnpm/@capacitor+haptics@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/haptics/android')
|
||||||
|
|
||||||
include ':capacitor-keyboard'
|
include ':capacitor-keyboard'
|
||||||
project(':capacitor-keyboard').projectDir = new File('../../../node_modules/.pnpm/@capacitor+keyboard@5.0.8_@capacitor+core@5.7.3/node_modules/@capacitor/keyboard/android')
|
project(':capacitor-keyboard').projectDir = new File('../../../node_modules/.pnpm/@capacitor+keyboard@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/keyboard/android')
|
||||||
|
|
||||||
include ':capacitor-local-notifications'
|
include ':capacitor-local-notifications'
|
||||||
project(':capacitor-local-notifications').projectDir = new File('../../../node_modules/.pnpm/@capacitor+local-notifications@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/local-notifications/android')
|
project(':capacitor-local-notifications').projectDir = new File('../../../node_modules/.pnpm/@capacitor+local-notifications@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/local-notifications/android')
|
||||||
|
|
||||||
include ':capacitor-network'
|
include ':capacitor-network'
|
||||||
project(':capacitor-network').projectDir = new File('../../../node_modules/.pnpm/@capacitor+network@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/network/android')
|
project(':capacitor-network').projectDir = new File('../../../node_modules/.pnpm/@capacitor+network@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/network/android')
|
||||||
|
|
||||||
include ':capacitor-preferences'
|
include ':capacitor-preferences'
|
||||||
project(':capacitor-preferences').projectDir = new File('../../../node_modules/.pnpm/@capacitor+preferences@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/preferences/android')
|
project(':capacitor-preferences').projectDir = new File('../../../node_modules/.pnpm/@capacitor+preferences@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/preferences/android')
|
||||||
|
|
||||||
include ':capacitor-screen-orientation'
|
include ':capacitor-screen-orientation'
|
||||||
project(':capacitor-screen-orientation').projectDir = new File('../../../node_modules/.pnpm/@capacitor+screen-orientation@6.0.0_@capacitor+core@5.7.3/node_modules/@capacitor/screen-orientation/android')
|
project(':capacitor-screen-orientation').projectDir = new File('../../../node_modules/.pnpm/@capacitor+screen-orientation@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/screen-orientation/android')
|
||||||
|
|
||||||
include ':capacitor-share'
|
include ':capacitor-share'
|
||||||
project(':capacitor-share').projectDir = new File('../../../node_modules/.pnpm/@capacitor+share@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/share/android')
|
project(':capacitor-share').projectDir = new File('../../../node_modules/.pnpm/@capacitor+share@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/share/android')
|
||||||
|
|
||||||
include ':capacitor-splash-screen'
|
include ':capacitor-splash-screen'
|
||||||
project(':capacitor-splash-screen').projectDir = new File('../../../node_modules/.pnpm/@capacitor+splash-screen@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/splash-screen/android')
|
project(':capacitor-splash-screen').projectDir = new File('../../../node_modules/.pnpm/@capacitor+splash-screen@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/splash-screen/android')
|
||||||
|
|
||||||
include ':transistorsoft-capacitor-background-fetch'
|
include ':transistorsoft-capacitor-background-fetch'
|
||||||
project(':transistorsoft-capacitor-background-fetch').projectDir = new File('../../../node_modules/.pnpm/@transistorsoft+capacitor-background-fetch@5.2.0_@capacitor+core@5.7.3/node_modules/@transistorsoft/capacitor-background-fetch/android')
|
project(':transistorsoft-capacitor-background-fetch').projectDir = new File('../../../node_modules/.pnpm/@transistorsoft+capacitor-background-fetch@5.2.0_@capacitor+core@6.1.1/node_modules/@transistorsoft/capacitor-background-fetch/android')
|
||||||
|
|
||||||
include ':capacitor-secure-storage-plugin'
|
include ':capacitor-secure-storage-plugin'
|
||||||
project(':capacitor-secure-storage-plugin').projectDir = new File('../../../node_modules/.pnpm/capacitor-secure-storage-plugin@0.9.0_@capacitor+core@5.7.3/node_modules/capacitor-secure-storage-plugin/android')
|
project(':capacitor-secure-storage-plugin').projectDir = new File('../../../node_modules/.pnpm/capacitor-secure-storage-plugin@0.9.0_@capacitor+core@6.1.1/node_modules/capacitor-secure-storage-plugin/android')
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
ext {
|
ext {
|
||||||
minSdkVersion = 22
|
minSdkVersion = 22
|
||||||
compileSdkVersion = 33
|
compileSdkVersion = 34
|
||||||
targetSdkVersion = 33
|
targetSdkVersion = 34
|
||||||
androidxActivityVersion = '1.7.0'
|
androidxActivityVersion = '1.8.0'
|
||||||
androidxAppCompatVersion = '1.6.1'
|
androidxAppCompatVersion = '1.6.1'
|
||||||
androidxCoordinatorLayoutVersion = '1.2.0'
|
androidxCoordinatorLayoutVersion = '1.2.0'
|
||||||
androidxCoreVersion = '1.10.0'
|
androidxCoreVersion = '1.12.0'
|
||||||
androidxFragmentVersion = '1.5.6'
|
androidxFragmentVersion = '1.6.2'
|
||||||
coreSplashScreenVersion = '1.0.0'
|
coreSplashScreenVersion = '1.0.1'
|
||||||
androidxWebkitVersion = '1.6.1'
|
androidxWebkitVersion = '1.9.0'
|
||||||
junitVersion = '4.13.2'
|
junitVersion = '4.13.2'
|
||||||
androidxJunitVersion = '1.1.5'
|
androidxJunitVersion = '1.1.5'
|
||||||
androidxEspressoCoreVersion = '3.5.1'
|
androidxEspressoCoreVersion = '3.5.1'
|
||||||
|
|||||||
@@ -11,12 +11,12 @@
|
|||||||
"schematics": {},
|
"schematics": {},
|
||||||
"architect": {
|
"architect": {
|
||||||
"build": {
|
"build": {
|
||||||
"builder": "@angular-devkit/build-angular:browser",
|
"builder": "@angular-devkit/build-angular:application",
|
||||||
"options": {
|
"options": {
|
||||||
"outputPath": "www",
|
"outputPath": "www",
|
||||||
"index": "src/index.html",
|
"index": "src/index.html",
|
||||||
"main": "src/main.ts",
|
"browser": "src/main.ts",
|
||||||
"polyfills": "zone.js",
|
"polyfills": ["zone.js", "src/ion-icons.js"],
|
||||||
"tsConfig": "tsconfig.app.json",
|
"tsConfig": "tsconfig.app.json",
|
||||||
"allowedCommonJsDependencies": [
|
"allowedCommonJsDependencies": [
|
||||||
"moment",
|
"moment",
|
||||||
@@ -67,9 +67,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"development": {
|
"development": {
|
||||||
"buildOptimizer": false,
|
|
||||||
"optimization": false,
|
"optimization": false,
|
||||||
"vendorChunk": true,
|
|
||||||
"extractLicenses": false,
|
"extractLicenses": false,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"namedChunks": true
|
"namedChunks": true
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import {CapacitorConfig} from '@capacitor/cli';
|
|||||||
const config: CapacitorConfig = {
|
const config: CapacitorConfig = {
|
||||||
appId: 'de.anyschool.app',
|
appId: 'de.anyschool.app',
|
||||||
appName: 'StApps',
|
appName: 'StApps',
|
||||||
webDir: 'www',
|
webDir: 'www/browser',
|
||||||
cordova: {
|
cordova: {
|
||||||
preferences: {
|
preferences: {
|
||||||
'AndroidXEnabled': 'true',
|
'AndroidXEnabled': 'true',
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
require_relative '../../../../node_modules/.pnpm/@capacitor+ios@5.7.3_@capacitor+core@5.7.3/node_modules/@capacitor/ios/scripts/pods_helpers'
|
require_relative '../../../../node_modules/.pnpm/@capacitor+ios@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/ios/scripts/pods_helpers'
|
||||||
|
|
||||||
platform :ios, '13.0'
|
platform :ios, '13.0'
|
||||||
use_frameworks!
|
use_frameworks!
|
||||||
@@ -9,26 +9,26 @@ use_frameworks!
|
|||||||
install! 'cocoapods', :disable_input_output_paths => true
|
install! 'cocoapods', :disable_input_output_paths => true
|
||||||
|
|
||||||
def capacitor_pods
|
def capacitor_pods
|
||||||
pod 'Capacitor', :path => '../../../../node_modules/.pnpm/@capacitor+ios@5.7.3_@capacitor+core@5.7.3/node_modules/@capacitor/ios'
|
pod 'Capacitor', :path => '../../../../node_modules/.pnpm/@capacitor+ios@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/ios'
|
||||||
pod 'CapacitorCordova', :path => '../../../../node_modules/.pnpm/@capacitor+ios@5.7.3_@capacitor+core@5.7.3/node_modules/@capacitor/ios'
|
pod 'CapacitorCordova', :path => '../../../../node_modules/.pnpm/@capacitor+ios@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/ios'
|
||||||
pod 'CapacitorCommunityScreenBrightness', :path => '../../../../node_modules/.pnpm/@capacitor-community+screen-brightness@6.0.0_@capacitor+core@5.7.3/node_modules/@capacitor-community/screen-brightness'
|
pod 'CapacitorCommunityScreenBrightness', :path => '../../../../node_modules/.pnpm/@capacitor-community+screen-brightness@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor-community/screen-brightness'
|
||||||
pod 'CapacitorApp', :path => '../../../../node_modules/.pnpm/@capacitor+app@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/app'
|
pod 'CapacitorApp', :path => '../../../../node_modules/.pnpm/@capacitor+app@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/app'
|
||||||
pod 'CapacitorBrowser', :path => '../../../../node_modules/.pnpm/@capacitor+browser@5.2.0_@capacitor+core@5.7.3/node_modules/@capacitor/browser'
|
pod 'CapacitorBrowser', :path => '../../../../node_modules/.pnpm/@capacitor+browser@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/browser'
|
||||||
pod 'CapacitorClipboard', :path => '../../../../node_modules/.pnpm/@capacitor+clipboard@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/clipboard'
|
pod 'CapacitorClipboard', :path => '../../../../node_modules/.pnpm/@capacitor+clipboard@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/clipboard'
|
||||||
pod 'CapacitorDevice', :path => '../../../../node_modules/.pnpm/@capacitor+device@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/device'
|
pod 'CapacitorDevice', :path => '../../../../node_modules/.pnpm/@capacitor+device@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/device'
|
||||||
pod 'CapacitorDialog', :path => '../../../../node_modules/.pnpm/@capacitor+dialog@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/dialog'
|
pod 'CapacitorDialog', :path => '../../../../node_modules/.pnpm/@capacitor+dialog@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/dialog'
|
||||||
pod 'CapacitorFilesystem', :path => '../../../../node_modules/.pnpm/@capacitor+filesystem@5.2.1_@capacitor+core@5.7.3/node_modules/@capacitor/filesystem'
|
pod 'CapacitorFilesystem', :path => '../../../../node_modules/.pnpm/@capacitor+filesystem@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/filesystem'
|
||||||
pod 'CapacitorGeolocation', :path => '../../../../node_modules/.pnpm/@capacitor+geolocation@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/geolocation'
|
pod 'CapacitorGeolocation', :path => '../../../../node_modules/.pnpm/@capacitor+geolocation@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/geolocation'
|
||||||
pod 'CapacitorHaptics', :path => '../../../../node_modules/.pnpm/@capacitor+haptics@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/haptics'
|
pod 'CapacitorHaptics', :path => '../../../../node_modules/.pnpm/@capacitor+haptics@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/haptics'
|
||||||
pod 'CapacitorKeyboard', :path => '../../../../node_modules/.pnpm/@capacitor+keyboard@5.0.8_@capacitor+core@5.7.3/node_modules/@capacitor/keyboard'
|
pod 'CapacitorKeyboard', :path => '../../../../node_modules/.pnpm/@capacitor+keyboard@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/keyboard'
|
||||||
pod 'CapacitorLocalNotifications', :path => '../../../../node_modules/.pnpm/@capacitor+local-notifications@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/local-notifications'
|
pod 'CapacitorLocalNotifications', :path => '../../../../node_modules/.pnpm/@capacitor+local-notifications@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/local-notifications'
|
||||||
pod 'CapacitorNetwork', :path => '../../../../node_modules/.pnpm/@capacitor+network@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/network'
|
pod 'CapacitorNetwork', :path => '../../../../node_modules/.pnpm/@capacitor+network@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/network'
|
||||||
pod 'CapacitorPreferences', :path => '../../../../node_modules/.pnpm/@capacitor+preferences@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/preferences'
|
pod 'CapacitorPreferences', :path => '../../../../node_modules/.pnpm/@capacitor+preferences@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/preferences'
|
||||||
pod 'CapacitorScreenOrientation', :path => '../../../../node_modules/.pnpm/@capacitor+screen-orientation@6.0.0_@capacitor+core@5.7.3/node_modules/@capacitor/screen-orientation'
|
pod 'CapacitorScreenOrientation', :path => '../../../../node_modules/.pnpm/@capacitor+screen-orientation@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/screen-orientation'
|
||||||
pod 'CapacitorShare', :path => '../../../../node_modules/.pnpm/@capacitor+share@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/share'
|
pod 'CapacitorShare', :path => '../../../../node_modules/.pnpm/@capacitor+share@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/share'
|
||||||
pod 'CapacitorSplashScreen', :path => '../../../../node_modules/.pnpm/@capacitor+splash-screen@5.0.7_@capacitor+core@5.7.3/node_modules/@capacitor/splash-screen'
|
pod 'CapacitorSplashScreen', :path => '../../../../node_modules/.pnpm/@capacitor+splash-screen@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/splash-screen'
|
||||||
pod 'TransistorsoftCapacitorBackgroundFetch', :path => '../../../../node_modules/.pnpm/@transistorsoft+capacitor-background-fetch@5.2.0_@capacitor+core@5.7.3/node_modules/@transistorsoft/capacitor-background-fetch'
|
pod 'TransistorsoftCapacitorBackgroundFetch', :path => '../../../../node_modules/.pnpm/@transistorsoft+capacitor-background-fetch@5.2.0_@capacitor+core@6.1.1/node_modules/@transistorsoft/capacitor-background-fetch'
|
||||||
pod 'CapacitorSecureStoragePlugin', :path => '../../../../node_modules/.pnpm/capacitor-secure-storage-plugin@0.9.0_@capacitor+core@5.7.3/node_modules/capacitor-secure-storage-plugin'
|
pod 'CapacitorSecureStoragePlugin', :path => '../../../../node_modules/.pnpm/capacitor-secure-storage-plugin@0.9.0_@capacitor+core@6.1.1/node_modules/capacitor-secure-storage-plugin'
|
||||||
pod 'CordovaPlugins', :path => '../capacitor-cordova-ios-plugins'
|
pod 'CordovaPlugins', :path => '../capacitor-cordova-ios-plugins'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,64 +1,70 @@
|
|||||||
PODS:
|
PODS:
|
||||||
- Capacitor (5.5.0):
|
- Capacitor (6.1.1):
|
||||||
- CapacitorCordova
|
- CapacitorCordova
|
||||||
- CapacitorApp (5.0.6):
|
- CapacitorApp (6.0.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorBrowser (5.1.0):
|
- CapacitorBrowser (6.0.1):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorClipboard (5.0.6):
|
- CapacitorClipboard (6.0.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorCordova (5.5.0)
|
- CapacitorCommunityScreenBrightness (6.0.0):
|
||||||
- CapacitorDevice (5.0.6):
|
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorDialog (5.0.6):
|
- CapacitorCordova (6.1.1)
|
||||||
|
- CapacitorDevice (6.0.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorFilesystem (5.1.4):
|
- CapacitorDialog (6.0.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorGeolocation (5.0.6):
|
- CapacitorFilesystem (6.0.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorHaptics (5.0.6):
|
- CapacitorGeolocation (6.0.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorKeyboard (5.0.6):
|
- CapacitorHaptics (6.0.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorLocalNotifications (5.0.6):
|
- CapacitorKeyboard (6.0.1):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorNetwork (5.0.6):
|
- CapacitorLocalNotifications (6.0.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorPreferences (5.0.6):
|
- CapacitorNetwork (6.0.1):
|
||||||
|
- Capacitor
|
||||||
|
- CapacitorPreferences (6.0.1):
|
||||||
|
- Capacitor
|
||||||
|
- CapacitorScreenOrientation (6.0.1):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorSecureStoragePlugin (0.9.0):
|
- CapacitorSecureStoragePlugin (0.9.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- SwiftKeychainWrapper
|
- SwiftKeychainWrapper
|
||||||
- CapacitorShare (5.0.6):
|
- CapacitorShare (6.0.1):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorSplashScreen (5.0.6):
|
- CapacitorSplashScreen (6.0.1):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CordovaPlugins (5.5.0):
|
- CordovaPlugins (6.1.1):
|
||||||
- CapacitorCordova
|
- CapacitorCordova
|
||||||
- SwiftKeychainWrapper (4.0.1)
|
- SwiftKeychainWrapper (4.0.1)
|
||||||
- TransistorsoftCapacitorBackgroundFetch (5.1.1):
|
- TransistorsoftCapacitorBackgroundFetch (5.2.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- "Capacitor (from `../../../../node_modules/.pnpm/@capacitor+ios@5.5.0_@capacitor+core@5.5.0/node_modules/@capacitor/ios`)"
|
- "Capacitor (from `../../../../node_modules/.pnpm/@capacitor+ios@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/ios`)"
|
||||||
- "CapacitorApp (from `../../../../node_modules/.pnpm/@capacitor+app@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/app`)"
|
- "CapacitorApp (from `../../../../node_modules/.pnpm/@capacitor+app@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/app`)"
|
||||||
- "CapacitorBrowser (from `../../../../node_modules/.pnpm/@capacitor+browser@5.1.0_@capacitor+core@5.5.0/node_modules/@capacitor/browser`)"
|
- "CapacitorBrowser (from `../../../../node_modules/.pnpm/@capacitor+browser@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/browser`)"
|
||||||
- "CapacitorClipboard (from `../../../../node_modules/.pnpm/@capacitor+clipboard@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/clipboard`)"
|
- "CapacitorClipboard (from `../../../../node_modules/.pnpm/@capacitor+clipboard@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/clipboard`)"
|
||||||
- "CapacitorCordova (from `../../../../node_modules/.pnpm/@capacitor+ios@5.5.0_@capacitor+core@5.5.0/node_modules/@capacitor/ios`)"
|
- "CapacitorCommunityScreenBrightness (from `../../../../node_modules/.pnpm/@capacitor-community+screen-brightness@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor-community/screen-brightness`)"
|
||||||
- "CapacitorDevice (from `../../../../node_modules/.pnpm/@capacitor+device@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/device`)"
|
- "CapacitorCordova (from `../../../../node_modules/.pnpm/@capacitor+ios@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/ios`)"
|
||||||
- "CapacitorDialog (from `../../../../node_modules/.pnpm/@capacitor+dialog@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/dialog`)"
|
- "CapacitorDevice (from `../../../../node_modules/.pnpm/@capacitor+device@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/device`)"
|
||||||
- "CapacitorFilesystem (from `../../../../node_modules/.pnpm/@capacitor+filesystem@5.1.4_@capacitor+core@5.5.0/node_modules/@capacitor/filesystem`)"
|
- "CapacitorDialog (from `../../../../node_modules/.pnpm/@capacitor+dialog@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/dialog`)"
|
||||||
- "CapacitorGeolocation (from `../../../../node_modules/.pnpm/@capacitor+geolocation@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/geolocation`)"
|
- "CapacitorFilesystem (from `../../../../node_modules/.pnpm/@capacitor+filesystem@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/filesystem`)"
|
||||||
- "CapacitorHaptics (from `../../../../node_modules/.pnpm/@capacitor+haptics@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/haptics`)"
|
- "CapacitorGeolocation (from `../../../../node_modules/.pnpm/@capacitor+geolocation@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/geolocation`)"
|
||||||
- "CapacitorKeyboard (from `../../../../node_modules/.pnpm/@capacitor+keyboard@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/keyboard`)"
|
- "CapacitorHaptics (from `../../../../node_modules/.pnpm/@capacitor+haptics@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/haptics`)"
|
||||||
- "CapacitorLocalNotifications (from `../../../../node_modules/.pnpm/@capacitor+local-notifications@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/local-notifications`)"
|
- "CapacitorKeyboard (from `../../../../node_modules/.pnpm/@capacitor+keyboard@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/keyboard`)"
|
||||||
- "CapacitorNetwork (from `../../../../node_modules/.pnpm/@capacitor+network@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/network`)"
|
- "CapacitorLocalNotifications (from `../../../../node_modules/.pnpm/@capacitor+local-notifications@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/local-notifications`)"
|
||||||
- "CapacitorPreferences (from `../../../../node_modules/.pnpm/@capacitor+preferences@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/preferences`)"
|
- "CapacitorNetwork (from `../../../../node_modules/.pnpm/@capacitor+network@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/network`)"
|
||||||
- "CapacitorSecureStoragePlugin (from `../../../../node_modules/.pnpm/capacitor-secure-storage-plugin@0.9.0_@capacitor+core@5.5.0/node_modules/capacitor-secure-storage-plugin`)"
|
- "CapacitorPreferences (from `../../../../node_modules/.pnpm/@capacitor+preferences@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/preferences`)"
|
||||||
- "CapacitorShare (from `../../../../node_modules/.pnpm/@capacitor+share@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/share`)"
|
- "CapacitorScreenOrientation (from `../../../../node_modules/.pnpm/@capacitor+screen-orientation@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/screen-orientation`)"
|
||||||
- "CapacitorSplashScreen (from `../../../../node_modules/.pnpm/@capacitor+splash-screen@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/splash-screen`)"
|
- "CapacitorSecureStoragePlugin (from `../../../../node_modules/.pnpm/capacitor-secure-storage-plugin@0.9.0_@capacitor+core@6.1.1/node_modules/capacitor-secure-storage-plugin`)"
|
||||||
|
- "CapacitorShare (from `../../../../node_modules/.pnpm/@capacitor+share@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/share`)"
|
||||||
|
- "CapacitorSplashScreen (from `../../../../node_modules/.pnpm/@capacitor+splash-screen@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/splash-screen`)"
|
||||||
- CordovaPlugins (from `../capacitor-cordova-ios-plugins`)
|
- CordovaPlugins (from `../capacitor-cordova-ios-plugins`)
|
||||||
- "TransistorsoftCapacitorBackgroundFetch (from `../../../../node_modules/.pnpm/@transistorsoft+capacitor-background-fetch@5.1.1_@capacitor+core@5.5.0/node_modules/@transistorsoft/capacitor-background-fetch`)"
|
- "TransistorsoftCapacitorBackgroundFetch (from `../../../../node_modules/.pnpm/@transistorsoft+capacitor-background-fetch@5.2.0_@capacitor+core@6.1.1/node_modules/@transistorsoft/capacitor-background-fetch`)"
|
||||||
|
|
||||||
SPEC REPOS:
|
SPEC REPOS:
|
||||||
trunk:
|
trunk:
|
||||||
@@ -66,66 +72,72 @@ SPEC REPOS:
|
|||||||
|
|
||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
Capacitor:
|
Capacitor:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+ios@5.5.0_@capacitor+core@5.5.0/node_modules/@capacitor/ios"
|
:path: "../../../../node_modules/.pnpm/@capacitor+ios@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/ios"
|
||||||
CapacitorApp:
|
CapacitorApp:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+app@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/app"
|
:path: "../../../../node_modules/.pnpm/@capacitor+app@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/app"
|
||||||
CapacitorBrowser:
|
CapacitorBrowser:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+browser@5.1.0_@capacitor+core@5.5.0/node_modules/@capacitor/browser"
|
:path: "../../../../node_modules/.pnpm/@capacitor+browser@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/browser"
|
||||||
CapacitorClipboard:
|
CapacitorClipboard:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+clipboard@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/clipboard"
|
:path: "../../../../node_modules/.pnpm/@capacitor+clipboard@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/clipboard"
|
||||||
|
CapacitorCommunityScreenBrightness:
|
||||||
|
:path: "../../../../node_modules/.pnpm/@capacitor-community+screen-brightness@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor-community/screen-brightness"
|
||||||
CapacitorCordova:
|
CapacitorCordova:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+ios@5.5.0_@capacitor+core@5.5.0/node_modules/@capacitor/ios"
|
:path: "../../../../node_modules/.pnpm/@capacitor+ios@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/ios"
|
||||||
CapacitorDevice:
|
CapacitorDevice:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+device@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/device"
|
:path: "../../../../node_modules/.pnpm/@capacitor+device@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/device"
|
||||||
CapacitorDialog:
|
CapacitorDialog:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+dialog@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/dialog"
|
:path: "../../../../node_modules/.pnpm/@capacitor+dialog@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/dialog"
|
||||||
CapacitorFilesystem:
|
CapacitorFilesystem:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+filesystem@5.1.4_@capacitor+core@5.5.0/node_modules/@capacitor/filesystem"
|
:path: "../../../../node_modules/.pnpm/@capacitor+filesystem@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/filesystem"
|
||||||
CapacitorGeolocation:
|
CapacitorGeolocation:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+geolocation@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/geolocation"
|
:path: "../../../../node_modules/.pnpm/@capacitor+geolocation@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/geolocation"
|
||||||
CapacitorHaptics:
|
CapacitorHaptics:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+haptics@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/haptics"
|
:path: "../../../../node_modules/.pnpm/@capacitor+haptics@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/haptics"
|
||||||
CapacitorKeyboard:
|
CapacitorKeyboard:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+keyboard@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/keyboard"
|
:path: "../../../../node_modules/.pnpm/@capacitor+keyboard@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/keyboard"
|
||||||
CapacitorLocalNotifications:
|
CapacitorLocalNotifications:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+local-notifications@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/local-notifications"
|
:path: "../../../../node_modules/.pnpm/@capacitor+local-notifications@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/local-notifications"
|
||||||
CapacitorNetwork:
|
CapacitorNetwork:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+network@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/network"
|
:path: "../../../../node_modules/.pnpm/@capacitor+network@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/network"
|
||||||
CapacitorPreferences:
|
CapacitorPreferences:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+preferences@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/preferences"
|
:path: "../../../../node_modules/.pnpm/@capacitor+preferences@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/preferences"
|
||||||
|
CapacitorScreenOrientation:
|
||||||
|
:path: "../../../../node_modules/.pnpm/@capacitor+screen-orientation@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/screen-orientation"
|
||||||
CapacitorSecureStoragePlugin:
|
CapacitorSecureStoragePlugin:
|
||||||
:path: "../../../../node_modules/.pnpm/capacitor-secure-storage-plugin@0.9.0_@capacitor+core@5.5.0/node_modules/capacitor-secure-storage-plugin"
|
:path: "../../../../node_modules/.pnpm/capacitor-secure-storage-plugin@0.9.0_@capacitor+core@6.1.1/node_modules/capacitor-secure-storage-plugin"
|
||||||
CapacitorShare:
|
CapacitorShare:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+share@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/share"
|
:path: "../../../../node_modules/.pnpm/@capacitor+share@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/share"
|
||||||
CapacitorSplashScreen:
|
CapacitorSplashScreen:
|
||||||
:path: "../../../../node_modules/.pnpm/@capacitor+splash-screen@5.0.6_@capacitor+core@5.5.0/node_modules/@capacitor/splash-screen"
|
:path: "../../../../node_modules/.pnpm/@capacitor+splash-screen@6.0.1_@capacitor+core@6.1.1/node_modules/@capacitor/splash-screen"
|
||||||
CordovaPlugins:
|
CordovaPlugins:
|
||||||
:path: "../capacitor-cordova-ios-plugins"
|
:path: "../capacitor-cordova-ios-plugins"
|
||||||
TransistorsoftCapacitorBackgroundFetch:
|
TransistorsoftCapacitorBackgroundFetch:
|
||||||
:path: "../../../../node_modules/.pnpm/@transistorsoft+capacitor-background-fetch@5.1.1_@capacitor+core@5.5.0/node_modules/@transistorsoft/capacitor-background-fetch"
|
:path: "../../../../node_modules/.pnpm/@transistorsoft+capacitor-background-fetch@5.2.0_@capacitor+core@6.1.1/node_modules/@transistorsoft/capacitor-background-fetch"
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
Capacitor: 57890b363df14d5d2d5d8461aa23e886cb34da2a
|
Capacitor: 8941aba4364ba9d1b22188569001f2ce45cc2b00
|
||||||
CapacitorApp: 024e1b1bea5f883d79f6330d309bc441c88ad04a
|
CapacitorApp: 9d53aec7101f7b030a950c5bdc4df8612576b279
|
||||||
CapacitorBrowser: 7a0fb6a1011abfaaf2dfedfd8248f942a8eda3d6
|
CapacitorBrowser: 473c7fd70ddbe541608ff09ec1be14da0078279e
|
||||||
CapacitorClipboard: 77edf49827ea21da2a9c05c690a4a6a4d07199c4
|
CapacitorClipboard: 80282f684154124b9019ebf401235b70b0cf4994
|
||||||
CapacitorCordova: 3d3908a3d208a11a75f9df3b18c4405c4de76e1d
|
CapacitorCommunityScreenBrightness: 250184917bd0738a681c026a9513e18ddb0cb49b
|
||||||
CapacitorDevice: 2c968f98a1ec4d22357418c1521e7ddc46c675e6
|
CapacitorCordova: 8f2cc8d8d3619c566e9418fe8772064a94266106
|
||||||
CapacitorDialog: 0f3c15dfe9414b83bc64aef4078f1b92bcfead26
|
CapacitorDevice: f8fd88f9edd1261c55a109f32015b09bbbfdc4a0
|
||||||
CapacitorFilesystem: af704badfbc69f6f8623d9ed313e5490e3723dcb
|
CapacitorDialog: 64aa82840ee5e9c066f9e1a49c1e186afd3f24d2
|
||||||
CapacitorGeolocation: 7be5f77abc205c0efe319fff8587a7183e7b0240
|
CapacitorFilesystem: 60e59ba274c234a979e7a3be2552feaadcee4263
|
||||||
CapacitorHaptics: 1fffc1217c7e64a472d7845be50fb0c2f7d4204c
|
CapacitorGeolocation: 1f12bbe372b65116e851bd8e3a94cf0ef9bacebb
|
||||||
CapacitorKeyboard: b978154b024a5f65e044908e37d15b7de58b9d12
|
CapacitorHaptics: 9ebc9363f0e9b8eb4295088a0b474530acf1859b
|
||||||
CapacitorLocalNotifications: c2d8b14794064fd4814b1d6c4ddbac8029afa295
|
CapacitorKeyboard: 5f32a712adf41e07a61caafb82cf29fb6d8ba123
|
||||||
CapacitorNetwork: d80b3e79bef6ec37640ee2806c19771f07ff2d0c
|
CapacitorLocalNotifications: 4ab68f0be5f697a579558fadd307d823a9ec1c26
|
||||||
CapacitorPreferences: f03954bcb0ff09c792909e46bff88e3183c16b10
|
CapacitorNetwork: 5c94acfdddc22043f2ffaff224ce9b4aa5a179f0
|
||||||
|
CapacitorPreferences: 72909b165bc7807103778ddbb86d5d8ce06abf71
|
||||||
|
CapacitorScreenOrientation: 3d4965dcbda5d901b6a48350a5d270ad7d404e05
|
||||||
CapacitorSecureStoragePlugin: e91d7df060f2495a1acff9583641a6953e3aacba
|
CapacitorSecureStoragePlugin: e91d7df060f2495a1acff9583641a6953e3aacba
|
||||||
CapacitorShare: cd41743331cb71d217c029de54b681cbd91e0fcc
|
CapacitorShare: 02222f2457ff003e642370a9c1ecd101baaa27c8
|
||||||
CapacitorSplashScreen: 5fa2ab5e46cf5cc530cf16a51c80c7a986579ccd
|
CapacitorSplashScreen: 61645214e8f955ff2b80f16a6a3648960fe4c89f
|
||||||
CordovaPlugins: de5669381702d76ed5b1d442177a6a5fc3252a9d
|
CordovaPlugins: 1078156cfc354dd440b38ce4062e69fd9b07033c
|
||||||
SwiftKeychainWrapper: 807ba1d63c33a7d0613288512399cd1eda1e470c
|
SwiftKeychainWrapper: 807ba1d63c33a7d0613288512399cd1eda1e470c
|
||||||
TransistorsoftCapacitorBackgroundFetch: ce4b3e01b898cef516e68485d2160a078016ee97
|
TransistorsoftCapacitorBackgroundFetch: f130c5dcb6048401e74cc531e691e1d513045366
|
||||||
|
|
||||||
PODFILE CHECKSUM: 229278f2c257e8ab555325c7115b2e187e8e628d
|
PODFILE CHECKSUM: d0561b89b66368df409c77587e3e02b48e737203
|
||||||
|
|
||||||
COCOAPODS: 1.13.0
|
COCOAPODS: 1.15.2
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@openstapps/app",
|
"name": "@openstapps/app",
|
||||||
"description": "The generic app tailored to fulfill needs of German universities, written using Ionic Framework.",
|
"description": "The generic app tailored to fulfill needs of German universities, written using Ionic Framework.",
|
||||||
"version": "3.3.0",
|
"version": "3.3.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"license": "GPL-3.0-only",
|
"license": "GPL-3.0-only",
|
||||||
"author": "Karl-Philipp Wulfert <krlwlfrt@gmail.com>",
|
"author": "Karl-Philipp Wulfert <krlwlfrt@gmail.com>",
|
||||||
@@ -14,12 +14,9 @@
|
|||||||
"Thea Schöbl <dev@theaninova.de>"
|
"Thea Schöbl <dev@theaninova.de>"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"analyze": "webpack-bundle-analyzer www/stats.json",
|
"build": "pnpm check-icons && ng build --configuration=production",
|
||||||
"build": "pnpm check-icons && ng build --configuration=production --stats-json && webpack-bundle-analyzer www/stats.json --mode static --report www/bundle-info.html --no-open",
|
|
||||||
"build:analyze": "npm run build:stats && npm run analyze",
|
|
||||||
"build:android": "ionic capacitor build android --no-open && cd android && ./gradlew clean assemble && cd ..",
|
"build:android": "ionic capacitor build android --no-open && cd android && ./gradlew clean assemble && cd ..",
|
||||||
"build:prod": "ng build --configuration=production",
|
"build:prod": "ng build --configuration=production",
|
||||||
"build:stats": "ng build --configuration=production --stats-json",
|
|
||||||
"changelog": "conventional-changelog -p angular -i src/assets/about/CHANGELOG.md -s -r 0",
|
"changelog": "conventional-changelog -p angular -i src/assets/about/CHANGELOG.md -s -r 0",
|
||||||
"check-icons": "node scripts/check-icon-correctness.mjs",
|
"check-icons": "node scripts/check-icon-correctness.mjs",
|
||||||
"chromium:no-cors": "chromium --disable-web-security --user-data-dir=\".browser-data/chromium\"",
|
"chromium:no-cors": "chromium --disable-web-security --user-data-dir=\".browser-data/chromium\"",
|
||||||
@@ -40,7 +37,7 @@
|
|||||||
"lint:fix": "eslint --fix -c .eslintrc.json --ignore-path .eslintignore --ext .ts,.html src/ && stylelint --fix \"**/*.scss\"",
|
"lint:fix": "eslint --fix -c .eslintrc.json --ignore-path .eslintignore --ext .ts,.html src/ && stylelint --fix \"**/*.scss\"",
|
||||||
"minify-icons": "node scripts/minify-icon-font.mjs",
|
"minify-icons": "node scripts/minify-icon-font.mjs",
|
||||||
"postinstall": "jetify && echo \"skipping jetify in production mode\"",
|
"postinstall": "jetify && echo \"skipping jetify in production mode\"",
|
||||||
"preview": "http-server www --p 8101 -o",
|
"preview": "http-server www/browser --p 8101 -o",
|
||||||
"push": "git push && git push origin \"v$npm_package_version\"",
|
"push": "git push && git push origin \"v$npm_package_version\"",
|
||||||
"resources:ios": "capacitor-assets generate --ios --iconBackgroundColor $(grep -oE \"^@include ion-color\\(primary, #[a-fA-F0-9]{3,6}\" src/theme/colors.scss | grep -oE \"#[a-fA-F0-9]{3,6}\") --splashBackgroundColor $(grep -oE \"^@include ion-color\\(primary, #[a-fA-F0-9]{3,6}\" src/theme/colors.scss | grep -oE \"#[a-fA-F0-9]{3,6}\")",
|
"resources:ios": "capacitor-assets generate --ios --iconBackgroundColor $(grep -oE \"^@include ion-color\\(primary, #[a-fA-F0-9]{3,6}\" src/theme/colors.scss | grep -oE \"#[a-fA-F0-9]{3,6}\") --splashBackgroundColor $(grep -oE \"^@include ion-color\\(primary, #[a-fA-F0-9]{3,6}\" src/theme/colors.scss | grep -oE \"#[a-fA-F0-9]{3,6}\")",
|
||||||
"run:android": "ionic capacitor run android --livereload --external",
|
"run:android": "ionic capacitor run android --livereload --external",
|
||||||
@@ -62,22 +59,22 @@
|
|||||||
"@awesome-cordova-plugins/calendar": "6.6.0",
|
"@awesome-cordova-plugins/calendar": "6.6.0",
|
||||||
"@awesome-cordova-plugins/core": "6.6.0",
|
"@awesome-cordova-plugins/core": "6.6.0",
|
||||||
"@capacitor-community/screen-brightness": "6.0.0",
|
"@capacitor-community/screen-brightness": "6.0.0",
|
||||||
"@capacitor/app": "5.0.7",
|
"@capacitor/app": "6.0.0",
|
||||||
"@capacitor/browser": "5.2.0",
|
"@capacitor/browser": "6.0.1",
|
||||||
"@capacitor/clipboard": "5.0.7",
|
"@capacitor/clipboard": "6.0.0",
|
||||||
"@capacitor/core": "5.7.3",
|
"@capacitor/core": "6.1.1",
|
||||||
"@capacitor/device": "5.0.7",
|
"@capacitor/device": "6.0.0",
|
||||||
"@capacitor/dialog": "5.0.7",
|
"@capacitor/dialog": "6.0.0",
|
||||||
"@capacitor/filesystem": "5.2.1",
|
"@capacitor/filesystem": "6.0.0",
|
||||||
"@capacitor/geolocation": "5.0.7",
|
"@capacitor/geolocation": "6.0.0",
|
||||||
"@capacitor/haptics": "5.0.7",
|
"@capacitor/haptics": "6.0.0",
|
||||||
"@capacitor/keyboard": "5.0.8",
|
"@capacitor/keyboard": "6.0.1",
|
||||||
"@capacitor/local-notifications": "5.0.7",
|
"@capacitor/local-notifications": "6.0.0",
|
||||||
"@capacitor/network": "5.0.7",
|
"@capacitor/network": "6.0.1",
|
||||||
"@capacitor/preferences": "5.0.7",
|
"@capacitor/preferences": "6.0.1",
|
||||||
"@capacitor/screen-orientation": "6.0.0",
|
"@capacitor/screen-orientation": "6.0.1",
|
||||||
"@capacitor/share": "5.0.7",
|
"@capacitor/share": "6.0.1",
|
||||||
"@capacitor/splash-screen": "5.0.7",
|
"@capacitor/splash-screen": "6.0.1",
|
||||||
"@ionic-native/core": "5.36.0",
|
"@ionic-native/core": "5.36.0",
|
||||||
"@ionic/angular": "7.8.0",
|
"@ionic/angular": "7.8.0",
|
||||||
"@ionic/storage-angular": "4.0.0",
|
"@ionic/storage-angular": "4.0.0",
|
||||||
@@ -97,6 +94,7 @@
|
|||||||
"form-data": "4.0.0",
|
"form-data": "4.0.0",
|
||||||
"geojson": "0.5.0",
|
"geojson": "0.5.0",
|
||||||
"ionic-appauth": "0.9.0",
|
"ionic-appauth": "0.9.0",
|
||||||
|
"ionicons": "7.4.0",
|
||||||
"jsonpath-plus": "6.0.1",
|
"jsonpath-plus": "6.0.1",
|
||||||
"maplibre-gl": "4.0.2",
|
"maplibre-gl": "4.0.2",
|
||||||
"material-symbols": "0.17.1",
|
"material-symbols": "0.17.1",
|
||||||
@@ -129,10 +127,10 @@
|
|||||||
"@angular/language-server": "17.3.0",
|
"@angular/language-server": "17.3.0",
|
||||||
"@angular/language-service": "17.3.0",
|
"@angular/language-service": "17.3.0",
|
||||||
"@angular/platform-browser-dynamic": "17.3.0",
|
"@angular/platform-browser-dynamic": "17.3.0",
|
||||||
"@capacitor/android": "5.7.3",
|
"@capacitor/android": "6.1.1",
|
||||||
"@capacitor/assets": "3.0.4",
|
"@capacitor/assets": "3.0.4",
|
||||||
"@capacitor/cli": "5.7.3",
|
"@capacitor/cli": "6.1.1",
|
||||||
"@capacitor/ios": "5.7.3",
|
"@capacitor/ios": "6.1.1",
|
||||||
"@compodoc/compodoc": "1.1.23",
|
"@compodoc/compodoc": "1.1.23",
|
||||||
"@cypress/schematic": "2.5.1",
|
"@cypress/schematic": "2.5.1",
|
||||||
"@ionic/angular-toolkit": "11.0.1",
|
"@ionic/angular-toolkit": "11.0.1",
|
||||||
@@ -181,8 +179,7 @@
|
|||||||
"stylelint-config-standard-scss": "13.0.0",
|
"stylelint-config-standard-scss": "13.0.0",
|
||||||
"surge": "0.23.1",
|
"surge": "0.23.1",
|
||||||
"ts-node": "10.9.2",
|
"ts-node": "10.9.2",
|
||||||
"typescript": "5.4.2",
|
"typescript": "5.4.2"
|
||||||
"webpack-bundle-analyzer": "4.10.1"
|
|
||||||
},
|
},
|
||||||
"cordova": {
|
"cordova": {
|
||||||
"plugins": {},
|
"plugins": {},
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {AnimationBuilder, AnimationController} from '@ionic/angular';
|
import {AnimationBuilder, AnimationController} from '@ionic/angular/standalone';
|
||||||
import {AnimationOptions} from '@ionic/angular/common/providers/nav-controller';
|
import {AnimationOptions} from '@ionic/angular/common/providers/nav-controller';
|
||||||
import {iosDuration, iosEasing, mdDuration, mdEasing} from './easings';
|
import {iosDuration, iosEasing, mdDuration, mdEasing} from './easings';
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
|
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
|
||||||
import {TestBed} from '@angular/core/testing';
|
import {TestBed} from '@angular/core/testing';
|
||||||
|
|
||||||
import {ModalController, Platform} from '@ionic/angular';
|
import {ModalController, Platform} from '@ionic/angular/standalone';
|
||||||
|
|
||||||
import {TranslateService} from '@ngx-translate/core';
|
import {TranslateService} from '@ngx-translate/core';
|
||||||
import {ThingTranslateService} from './translation/thing-translate.service';
|
import {ThingTranslateService} from './translation/thing-translate.service';
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
import {AfterContentInit, Component, NgZone} from '@angular/core';
|
import {AfterContentInit, Component, NgZone} from '@angular/core';
|
||||||
import {Router} from '@angular/router';
|
import {Router} from '@angular/router';
|
||||||
import {App, URLOpenListenerEvent} from '@capacitor/app';
|
import {App, URLOpenListenerEvent} from '@capacitor/app';
|
||||||
import {Platform, ToastController} from '@ionic/angular';
|
import {Platform, ToastController} from '@ionic/angular/standalone';
|
||||||
import {SettingsProvider} from './modules/settings/settings.provider';
|
import {SettingsProvider} from './modules/settings/settings.provider';
|
||||||
import {AuthHelperService} from './modules/auth/auth-helper.service';
|
import {AuthHelperService} from './modules/auth/auth-helper.service';
|
||||||
import {environment} from '../environments/environment';
|
import {environment} from '../environments/environment';
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import localeDe from '@angular/common/locales/de';
|
|||||||
import {APP_INITIALIZER, NgModule} from '@angular/core';
|
import {APP_INITIALIZER, NgModule} from '@angular/core';
|
||||||
import {BrowserModule} from '@angular/platform-browser';
|
import {BrowserModule} from '@angular/platform-browser';
|
||||||
import {RouteReuseStrategy} from '@angular/router';
|
import {RouteReuseStrategy} from '@angular/router';
|
||||||
import {IonicModule, IonicRouteStrategy, Platform} from '@ionic/angular';
|
import {IonicRouteStrategy, Platform, provideIonicAngular, IonApp} from '@ionic/angular/standalone';
|
||||||
import {TranslateLoader, TranslateModule, TranslateService} from '@ngx-translate/core';
|
import {TranslateLoader, TranslateModule, TranslateService} from '@ngx-translate/core';
|
||||||
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
|
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
@@ -61,7 +61,6 @@ import {RoutingStackService} from './util/routing-stack.service';
|
|||||||
import {SCLanguageCode, SCSettingValue} from '@openstapps/core';
|
import {SCLanguageCode, SCSettingValue} from '@openstapps/core';
|
||||||
import {DefaultAuthService} from './modules/auth/default-auth.service';
|
import {DefaultAuthService} from './modules/auth/default-auth.service';
|
||||||
import {PAIAAuthService} from './modules/auth/paia/paia-auth.service';
|
import {PAIAAuthService} from './modules/auth/paia/paia-auth.service';
|
||||||
import {IonIconModule} from './util/ion-icon/ion-icon.module';
|
|
||||||
import {NavigationModule} from './modules/menu/navigation/navigation.module';
|
import {NavigationModule} from './modules/menu/navigation/navigation.module';
|
||||||
import {browserFactory, SimpleBrowser} from './util/browser.factory';
|
import {browserFactory, SimpleBrowser} from './util/browser.factory';
|
||||||
import {getDateFnsLocale} from './translation/dfns-locale';
|
import {getDateFnsLocale} from './translation/dfns-locale';
|
||||||
@@ -156,8 +155,6 @@ export function createTranslateLoader(http: HttpClient) {
|
|||||||
DashboardModule,
|
DashboardModule,
|
||||||
DataModule,
|
DataModule,
|
||||||
HebisModule,
|
HebisModule,
|
||||||
IonicModule.forRoot(),
|
|
||||||
IonIconModule,
|
|
||||||
JobModule,
|
JobModule,
|
||||||
FavoritesModule,
|
FavoritesModule,
|
||||||
LibraryModule,
|
LibraryModule,
|
||||||
@@ -185,6 +182,7 @@ export function createTranslateLoader(http: HttpClient) {
|
|||||||
LoggerModule.forRoot({
|
LoggerModule.forRoot({
|
||||||
level: environment.production ? NgxLoggerLevel.FATAL : NgxLoggerLevel.TRACE,
|
level: environment.production ? NgxLoggerLevel.FATAL : NgxLoggerLevel.TRACE,
|
||||||
}),
|
}),
|
||||||
|
IonApp,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
@@ -221,6 +219,7 @@ export function createTranslateLoader(http: HttpClient) {
|
|||||||
useClass: ServiceHandlerInterceptor,
|
useClass: ServiceHandlerInterceptor,
|
||||||
multi: true,
|
multi: true,
|
||||||
},
|
},
|
||||||
|
provideIonicAngular(),
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class AppModule {
|
export class AppModule {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import {Component, OnInit} from '@angular/core';
|
import {Component, OnInit} from '@angular/core';
|
||||||
import {ModalController} from '@ionic/angular';
|
import {ModalController} from '@ionic/angular/standalone';
|
||||||
import {AboutLicenseModalComponent} from './about-license-modal.component';
|
import {AboutLicenseModalComponent} from './about-license-modal.component';
|
||||||
import licensesFile from 'src/assets/about/licenses.json';
|
import licensesFile from 'src/assets/about/licenses.json';
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import {RouterModule, Routes} from '@angular/router';
|
|||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
||||||
import {AboutPageComponent} from './about-page/about-page.component';
|
import {AboutPageComponent} from './about-page/about-page.component';
|
||||||
@@ -28,7 +27,30 @@ import {ScrollingModule} from '@angular/cdk/scrolling';
|
|||||||
import {AboutLicenseModalComponent} from './about-license-modal.component';
|
import {AboutLicenseModalComponent} from './about-license-modal.component';
|
||||||
import {AboutChangelogComponent} from './about-changelog.component';
|
import {AboutChangelogComponent} from './about-changelog.component';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
import {
|
||||||
|
IonBackButton,
|
||||||
|
IonButton,
|
||||||
|
IonButtons,
|
||||||
|
IonCard,
|
||||||
|
IonCardContent,
|
||||||
|
IonCardHeader,
|
||||||
|
IonCardSubtitle,
|
||||||
|
IonCardTitle,
|
||||||
|
IonChip,
|
||||||
|
IonCol,
|
||||||
|
IonContent,
|
||||||
|
IonGrid,
|
||||||
|
IonHeader,
|
||||||
|
IonLabel,
|
||||||
|
IonList,
|
||||||
|
IonRouterLink,
|
||||||
|
IonRow,
|
||||||
|
IonSkeletonText,
|
||||||
|
IonText,
|
||||||
|
IonTitle,
|
||||||
|
IonToolbar,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
const settingsRoutes: Routes = [
|
const settingsRoutes: Routes = [
|
||||||
{path: 'about', component: AboutPageComponent},
|
{path: 'about', component: AboutPageComponent},
|
||||||
@@ -52,9 +74,8 @@ const settingsRoutes: Routes = [
|
|||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
IonicModule.forRoot(),
|
|
||||||
TranslateModule.forChild(),
|
TranslateModule.forChild(),
|
||||||
ThingTranslateModule.forChild(),
|
ThingTranslateModule.forChild(),
|
||||||
RouterModule.forChild(settingsRoutes),
|
RouterModule.forChild(settingsRoutes),
|
||||||
@@ -62,6 +83,27 @@ const settingsRoutes: Routes = [
|
|||||||
DataModule,
|
DataModule,
|
||||||
ScrollingModule,
|
ScrollingModule,
|
||||||
UtilModule,
|
UtilModule,
|
||||||
|
IonRouterLink,
|
||||||
|
IonBackButton,
|
||||||
|
IonButton,
|
||||||
|
IonButtons,
|
||||||
|
IonText,
|
||||||
|
IonSkeletonText,
|
||||||
|
IonTitle,
|
||||||
|
IonToolbar,
|
||||||
|
IonHeader,
|
||||||
|
IonLabel,
|
||||||
|
IonGrid,
|
||||||
|
IonRow,
|
||||||
|
IonCol,
|
||||||
|
IonCard,
|
||||||
|
IonCardHeader,
|
||||||
|
IonCardTitle,
|
||||||
|
IonCardContent,
|
||||||
|
IonCardSubtitle,
|
||||||
|
IonChip,
|
||||||
|
IonList,
|
||||||
|
IonContent,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class AboutModule {}
|
export class AboutModule {}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import {Injectable} from '@angular/core';
|
import {Injectable} from '@angular/core';
|
||||||
import {StorageProvider} from '../storage/storage.provider';
|
import {StorageProvider} from '../storage/storage.provider';
|
||||||
import {ConfigProvider} from '../config/config.provider';
|
import {ConfigProvider} from '../config/config.provider';
|
||||||
import {ModalController} from '@ionic/angular';
|
import {ModalController} from '@ionic/angular/standalone';
|
||||||
import {Capacitor} from '@capacitor/core';
|
import {Capacitor} from '@capacitor/core';
|
||||||
import {ReleaseNotesComponent} from './release-notes.component';
|
import {ReleaseNotesComponent} from './release-notes.component';
|
||||||
import {SCAppVersionInfo} from '@openstapps/core';
|
import {SCAppVersionInfo} from '@openstapps/core';
|
||||||
|
|||||||
@@ -2,7 +2,14 @@ import {ChangeDetectionStrategy, Component, Input} from '@angular/core';
|
|||||||
import {SCAppVersionInfo} from '@openstapps/core';
|
import {SCAppVersionInfo} from '@openstapps/core';
|
||||||
import {MarkdownModule} from 'ngx-markdown';
|
import {MarkdownModule} from 'ngx-markdown';
|
||||||
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
||||||
import {IonicModule, ModalController} from '@ionic/angular';
|
import {
|
||||||
|
IonButton,
|
||||||
|
IonButtons,
|
||||||
|
IonHeader,
|
||||||
|
IonTitle,
|
||||||
|
IonToolbar,
|
||||||
|
ModalController,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
|
|
||||||
@@ -12,7 +19,17 @@ import {UtilModule} from '../../util/util.module';
|
|||||||
styleUrls: ['release-notes.scss'],
|
styleUrls: ['release-notes.scss'],
|
||||||
standalone: true,
|
standalone: true,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [UtilModule, MarkdownModule, ThingTranslateModule, IonicModule, TranslateModule],
|
imports: [
|
||||||
|
UtilModule,
|
||||||
|
MarkdownModule,
|
||||||
|
ThingTranslateModule,
|
||||||
|
TranslateModule,
|
||||||
|
IonButton,
|
||||||
|
IonButtons,
|
||||||
|
IonToolbar,
|
||||||
|
IonHeader,
|
||||||
|
IonTitle,
|
||||||
|
],
|
||||||
})
|
})
|
||||||
export class ReleaseNotesComponent {
|
export class ReleaseNotesComponent {
|
||||||
@Input() versionInfos: SCAppVersionInfo[];
|
@Input() versionInfos: SCAppVersionInfo[];
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import {AssessmentBaseInfoComponent} from './types/assessment/assessment-base-in
|
|||||||
import {AssessmentDetailComponent} from './types/assessment/assessment-detail.component';
|
import {AssessmentDetailComponent} from './types/assessment/assessment-detail.component';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {DataModule} from '../data/data.module';
|
import {DataModule} from '../data/data.module';
|
||||||
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
||||||
@@ -35,8 +34,25 @@ import {AssessmentsProvider} from './assessments.provider';
|
|||||||
import {AssessmentsSimpleDataListComponent} from './list/assessments-simple-data-list.component';
|
import {AssessmentsSimpleDataListComponent} from './list/assessments-simple-data-list.component';
|
||||||
import {ProtectedRoutes} from '../auth/protected.routes';
|
import {ProtectedRoutes} from '../auth/protected.routes';
|
||||||
import {AssessmentsTreeListComponent} from './list/assessments-tree-list.component';
|
import {AssessmentsTreeListComponent} from './list/assessments-tree-list.component';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
|
import {
|
||||||
|
IonBackButton,
|
||||||
|
IonButton,
|
||||||
|
IonButtons,
|
||||||
|
IonCard,
|
||||||
|
IonCardContent,
|
||||||
|
IonContent,
|
||||||
|
IonHeader,
|
||||||
|
IonItem,
|
||||||
|
IonLabel,
|
||||||
|
IonList,
|
||||||
|
IonNote,
|
||||||
|
IonSegment,
|
||||||
|
IonSegmentButton,
|
||||||
|
IonTitle,
|
||||||
|
IonToolbar,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
const routes: ProtectedRoutes = [
|
const routes: ProtectedRoutes = [
|
||||||
{
|
{
|
||||||
@@ -69,14 +85,28 @@ const routes: ProtectedRoutes = [
|
|||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
IonicModule,
|
|
||||||
RouterModule.forChild(routes),
|
RouterModule.forChild(routes),
|
||||||
TranslateModule,
|
TranslateModule,
|
||||||
DataModule,
|
DataModule,
|
||||||
ThingTranslateModule,
|
ThingTranslateModule,
|
||||||
MomentModule,
|
MomentModule,
|
||||||
UtilModule,
|
UtilModule,
|
||||||
|
IonBackButton,
|
||||||
|
IonList,
|
||||||
|
IonItem,
|
||||||
|
IonNote,
|
||||||
|
IonCardContent,
|
||||||
|
IonCard,
|
||||||
|
IonLabel,
|
||||||
|
IonSegment,
|
||||||
|
IonSegmentButton,
|
||||||
|
IonButtons,
|
||||||
|
IonTitle,
|
||||||
|
IonContent,
|
||||||
|
IonHeader,
|
||||||
|
IonToolbar,
|
||||||
|
IonButton,
|
||||||
],
|
],
|
||||||
providers: [AssessmentsProvider],
|
providers: [AssessmentsProvider],
|
||||||
exports: [],
|
exports: [],
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import {Component, DestroyRef, inject, Input, OnInit, ViewChild} from '@angular/
|
|||||||
import {ActivatedRoute} from '@angular/router';
|
import {ActivatedRoute} from '@angular/router';
|
||||||
import {AssessmentsProvider} from '../assessments.provider';
|
import {AssessmentsProvider} from '../assessments.provider';
|
||||||
import {DataDetailComponent, ExternalDataLoadEvent} from '../../data/detail/data-detail.component';
|
import {DataDetailComponent, ExternalDataLoadEvent} from '../../data/detail/data-detail.component';
|
||||||
import {NavController} from '@ionic/angular';
|
import {NavController} from '@ionic/angular/standalone';
|
||||||
import {DataRoutingService} from '../../data/data-routing.service';
|
import {DataRoutingService} from '../../data/data-routing.service';
|
||||||
import {SCAssessment} from '@openstapps/core';
|
import {SCAssessment} from '@openstapps/core';
|
||||||
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import {Component} from '@angular/core';
|
import {Component} from '@angular/core';
|
||||||
import {NavController} from '@ionic/angular';
|
import {NavController} from '@ionic/angular/standalone';
|
||||||
import {Router} from '@angular/router';
|
import {Router} from '@angular/router';
|
||||||
import {AuthActions, IAuthAction} from 'ionic-appauth';
|
import {AuthActions, IAuthAction} from 'ionic-appauth';
|
||||||
import {AuthHelperService} from '../../auth-helper.service';
|
import {AuthHelperService} from '../../auth-helper.service';
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import {StorageProvider} from '../storage/storage.provider';
|
|||||||
import {DefaultAuthService} from './default-auth.service';
|
import {DefaultAuthService} from './default-auth.service';
|
||||||
import {PAIAAuthService} from './paia/paia-auth.service';
|
import {PAIAAuthService} from './paia/paia-auth.service';
|
||||||
import {SimpleBrowser} from '../../util/browser.factory';
|
import {SimpleBrowser} from '../../util/browser.factory';
|
||||||
import {AlertController} from '@ionic/angular';
|
import {AlertController} from '@ionic/angular/standalone';
|
||||||
|
|
||||||
const AUTH_ORIGIN_PATH = 'stapps.auth.origin_path';
|
const AUTH_ORIGIN_PATH = 'stapps.auth.origin_path';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {Platform} from '@ionic/angular';
|
import {Platform} from '@ionic/angular/standalone';
|
||||||
import {Requestor, StorageBackend} from '@openid/appauth';
|
import {Requestor, StorageBackend} from '@openid/appauth';
|
||||||
import {storageFactory} from './factories';
|
import {storageFactory} from './factories';
|
||||||
import {Browser} from 'ionic-appauth';
|
import {Browser} from 'ionic-appauth';
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import {HttpClient} from '@angular/common/http';
|
import {HttpClient} from '@angular/common/http';
|
||||||
import {Platform} from '@ionic/angular';
|
import {Platform} from '@ionic/angular/standalone';
|
||||||
import {CapacitorRequestor} from '../capacitor-requestor';
|
import {CapacitorRequestor} from '../capacitor-requestor';
|
||||||
import {NgHttpService} from '../ng-http.service';
|
import {NgHttpService} from '../ng-http.service';
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {Platform} from '@ionic/angular';
|
import {Platform} from '@ionic/angular/standalone';
|
||||||
import {IonicStorage} from 'ionic-appauth/lib';
|
import {IonicStorage} from 'ionic-appauth/lib';
|
||||||
import {SafeCapacitorSecureStorage} from '../../storage/capacitor-secure-storage';
|
import {SafeCapacitorSecureStorage} from '../../storage/capacitor-secure-storage';
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
<div class="horizontal-flex">
|
<div class="horizontal-flex">
|
||||||
<ion-button fill="clear" (click)="export()">
|
<ion-button fill="clear" (click)="export()">
|
||||||
{{ 'share' | translate }}
|
{{ 'share' | translate }}
|
||||||
<ion-icon slot="end" md="share" ios="ios_share"></ion-icon>
|
<ion-icon slot="end" name="share"></ion-icon>
|
||||||
</ion-button>
|
</ion-button>
|
||||||
@if (isWeb) {
|
@if (isWeb) {
|
||||||
<ion-button fill="outline" (click)="download()">
|
<ion-button fill="outline" (click)="download()">
|
||||||
|
|||||||
@@ -18,26 +18,46 @@ import {AddEventReviewModalComponent} from './add-event-review-modal.component';
|
|||||||
import {Calendar} from '@awesome-cordova-plugins/calendar/ngx';
|
import {Calendar} from '@awesome-cordova-plugins/calendar/ngx';
|
||||||
import {CalendarService} from './calendar.service';
|
import {CalendarService} from './calendar.service';
|
||||||
import {ScheduleProvider} from './schedule.provider';
|
import {ScheduleProvider} from './schedule.provider';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {MomentModule} from 'ngx-moment';
|
import {MomentModule} from 'ngx-moment';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
import {
|
||||||
|
IonButton,
|
||||||
|
IonCardContent,
|
||||||
|
IonCardHeader,
|
||||||
|
IonCardTitle,
|
||||||
|
IonItem,
|
||||||
|
IonItemDivider,
|
||||||
|
IonItemGroup,
|
||||||
|
IonLabel,
|
||||||
|
IonList,
|
||||||
|
IonNote,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [AddEventReviewModalComponent],
|
declarations: [AddEventReviewModalComponent],
|
||||||
imports: [
|
imports: [
|
||||||
IonicModule.forRoot(),
|
|
||||||
TranslateModule.forChild(),
|
TranslateModule.forChild(),
|
||||||
ThingTranslateModule.forChild(),
|
ThingTranslateModule.forChild(),
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
CommonModule,
|
CommonModule,
|
||||||
MomentModule,
|
MomentModule,
|
||||||
UtilModule,
|
UtilModule,
|
||||||
|
IonButton,
|
||||||
|
IonItem,
|
||||||
|
IonNote,
|
||||||
|
IonLabel,
|
||||||
|
IonList,
|
||||||
|
IonItemGroup,
|
||||||
|
IonItemDivider,
|
||||||
|
IonCardContent,
|
||||||
|
IonCardTitle,
|
||||||
|
IonCardHeader,
|
||||||
],
|
],
|
||||||
exports: [],
|
exports: [],
|
||||||
providers: [Calendar, CalendarService, ScheduleProvider],
|
providers: [Calendar, CalendarService, ScheduleProvider],
|
||||||
|
|||||||
@@ -16,14 +16,29 @@ import {CommonModule} from '@angular/common';
|
|||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {RouterModule, Routes} from '@angular/router';
|
import {RouterModule, Routes} from '@angular/router';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {MomentModule} from 'ngx-moment';
|
import {MomentModule} from 'ngx-moment';
|
||||||
import {DataModule} from '../data/data.module';
|
import {DataModule} from '../data/data.module';
|
||||||
import {SettingsProvider} from '../settings/settings.provider';
|
import {SettingsProvider} from '../settings/settings.provider';
|
||||||
import {CatalogComponent} from './catalog.component';
|
import {CatalogComponent} from './catalog.component';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
import {
|
||||||
|
IonHeader,
|
||||||
|
IonToolbar,
|
||||||
|
IonButtons,
|
||||||
|
IonBackButton,
|
||||||
|
IonTitle,
|
||||||
|
IonSegment,
|
||||||
|
IonSegmentButton,
|
||||||
|
IonLabel,
|
||||||
|
IonContent,
|
||||||
|
IonList,
|
||||||
|
IonItem,
|
||||||
|
IonGrid,
|
||||||
|
IonRow,
|
||||||
|
IonCol,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
const catalogRoutes: Routes = [
|
const catalogRoutes: Routes = [
|
||||||
{path: 'catalog', component: CatalogComponent},
|
{path: 'catalog', component: CatalogComponent},
|
||||||
@@ -36,15 +51,28 @@ const catalogRoutes: Routes = [
|
|||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [CatalogComponent],
|
declarations: [CatalogComponent],
|
||||||
imports: [
|
imports: [
|
||||||
IonicModule.forRoot(),
|
|
||||||
FormsModule,
|
FormsModule,
|
||||||
TranslateModule.forChild(),
|
TranslateModule.forChild(),
|
||||||
RouterModule.forChild(catalogRoutes),
|
RouterModule.forChild(catalogRoutes),
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
CommonModule,
|
CommonModule,
|
||||||
MomentModule,
|
MomentModule,
|
||||||
DataModule,
|
DataModule,
|
||||||
UtilModule,
|
UtilModule,
|
||||||
|
IonHeader,
|
||||||
|
IonToolbar,
|
||||||
|
IonButtons,
|
||||||
|
IonBackButton,
|
||||||
|
IonTitle,
|
||||||
|
IonSegment,
|
||||||
|
IonSegmentButton,
|
||||||
|
IonLabel,
|
||||||
|
IonContent,
|
||||||
|
IonList,
|
||||||
|
IonItem,
|
||||||
|
IonGrid,
|
||||||
|
IonRow,
|
||||||
|
IonCol,
|
||||||
],
|
],
|
||||||
providers: [SettingsProvider],
|
providers: [SettingsProvider],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -132,6 +132,8 @@ describe('ConfigProvider', () => {
|
|||||||
wrongConfig.backend.SCVersion = '0.1.0';
|
wrongConfig.backend.SCVersion = '0.1.0';
|
||||||
storageProviderSpy.get.and.returnValue(Promise.resolve(wrongConfig));
|
storageProviderSpy.get.and.returnValue(Promise.resolve(wrongConfig));
|
||||||
spyOn(configProvider.client, 'handshake').and.returnValue(Promise.resolve(sampleIndexResponse));
|
spyOn(configProvider.client, 'handshake').and.returnValue(Promise.resolve(sampleIndexResponse));
|
||||||
|
// sets StApps core version which has a different major version
|
||||||
|
configProvider.scVersion = '1.0.0';
|
||||||
await configProvider.init();
|
await configProvider.init();
|
||||||
|
|
||||||
expect(ngxLogger.warn).toHaveBeenCalledWith(
|
expect(ngxLogger.warn).toHaveBeenCalledWith(
|
||||||
@@ -139,6 +141,19 @@ describe('ConfigProvider', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should load from storage if offline and same major version stored', async () => {
|
||||||
|
internetConnectionServiceMock = {offline$: new BehaviorSubject<boolean>(true)};
|
||||||
|
storageProviderSpy.has.and.returnValue(Promise.resolve(true));
|
||||||
|
const configInStorage = structuredClone(sampleIndexResponse);
|
||||||
|
configInStorage.backend.SCVersion = '1.0.0';
|
||||||
|
storageProviderSpy.get.and.returnValue(Promise.resolve(configInStorage));
|
||||||
|
// sets StApps core version which has the same major version
|
||||||
|
configProvider.scVersion = '1.1.1';
|
||||||
|
await configProvider.init();
|
||||||
|
|
||||||
|
expect(configProvider.getAnyValue('app')).toEqual(configInStorage.app);
|
||||||
|
});
|
||||||
|
|
||||||
it('should throw error on saved app configuration not available', async () => {
|
it('should throw error on saved app configuration not available', async () => {
|
||||||
storageProviderSpy.has.and.returnValue(Promise.resolve(false));
|
storageProviderSpy.has.and.returnValue(Promise.resolve(false));
|
||||||
// eslint-disable-next-line unicorn/error-message
|
// eslint-disable-next-line unicorn/error-message
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ export class ConfigProvider {
|
|||||||
this.config = await this.loadLocal();
|
this.config = await this.loadLocal();
|
||||||
this.firstSession = false;
|
this.firstSession = false;
|
||||||
this.logger.log(`initialised configuration from storage`);
|
this.logger.log(`initialised configuration from storage`);
|
||||||
if (this.config.backend.SCVersion !== this.scVersion) {
|
if (this.config.backend.SCVersion.split('.')[0] !== this.scVersion.split('.')[0]) {
|
||||||
loadError = new WrongConfigVersionInStorage(this.scVersion, this.config.backend.SCVersion);
|
loadError = new WrongConfigVersionInStorage(this.scVersion, this.config.backend.SCVersion);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {Animation, AnimationController} from '@ionic/angular';
|
import {Animation, AnimationController} from '@ionic/angular/standalone';
|
||||||
import {NgZone} from '@angular/core';
|
import {NgZone} from '@angular/core';
|
||||||
|
|
||||||
export class DashboardCollapse {
|
export class DashboardCollapse {
|
||||||
|
|||||||
@@ -118,10 +118,6 @@ ion-content {
|
|||||||
font-weight: var(--font-weight-semi-bold);
|
font-weight: var(--font-weight-semi-bold);
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover ::ng-deep stapps-icon {
|
|
||||||
--fill: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
a:last-child {
|
a:last-child {
|
||||||
@@ -159,4 +155,8 @@ ion-content {
|
|||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a:first-child:hover {
|
||||||
|
--fill: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import moment from 'moment';
|
|||||||
import {SCDateSeries, SCUuid} from '@openstapps/core';
|
import {SCDateSeries, SCUuid} from '@openstapps/core';
|
||||||
import {DataRoutingService} from '../data/data-routing.service';
|
import {DataRoutingService} from '../data/data-routing.service';
|
||||||
import {ScheduleProvider} from '../calendar/schedule.provider';
|
import {ScheduleProvider} from '../calendar/schedule.provider';
|
||||||
import {AnimationController, IonContent} from '@ionic/angular';
|
import {AnimationController, IonContent} from '@ionic/angular/standalone';
|
||||||
import {DashboardCollapse} from './dashboard-collapse';
|
import {DashboardCollapse} from './dashboard-collapse';
|
||||||
import {BreakpointObserver} from '@angular/cdk/layout';
|
import {BreakpointObserver} from '@angular/cdk/layout';
|
||||||
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
||||||
@@ -37,7 +37,7 @@ import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'app-dashboard',
|
selector: 'app-dashboard',
|
||||||
templateUrl: './dashboard.component.html',
|
templateUrl: './dashboard.component.html',
|
||||||
styleUrls: ['./dashboard.component.scss', '/dashboard.collapse.component.scss'],
|
styleUrls: ['./dashboard.component.scss', './dashboard.collapse.component.scss'],
|
||||||
})
|
})
|
||||||
export class DashboardComponent implements OnInit, OnDestroy, AfterViewInit {
|
export class DashboardComponent implements OnInit, OnDestroy, AfterViewInit {
|
||||||
@ViewChild('toolbar', {read: ElementRef}) toolbarRef: ElementRef;
|
@ViewChild('toolbar', {read: ElementRef}) toolbarRef: ElementRef;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import {CommonModule} from '@angular/common';
|
|||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {RouterModule, Routes} from '@angular/router';
|
import {RouterModule, Routes} from '@angular/router';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {SwiperModule} from 'swiper/angular';
|
import {SwiperModule} from 'swiper/angular';
|
||||||
import {TranslateModule, TranslatePipe} from '@ngx-translate/core';
|
import {TranslateModule, TranslatePipe} from '@ngx-translate/core';
|
||||||
import {MomentModule} from 'ngx-moment';
|
import {MomentModule} from 'ngx-moment';
|
||||||
@@ -30,10 +29,23 @@ import {MensaSectionContentComponent} from './sections/mensa-section/mensa-secti
|
|||||||
import {FavoritesSectionComponent} from './sections/favorites-section/favorites-section.component';
|
import {FavoritesSectionComponent} from './sections/favorites-section/favorites-section.component';
|
||||||
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
|
||||||
import {NewsModule} from '../news/news.module';
|
import {NewsModule} from '../news/news.module';
|
||||||
import {JobSectionComponent} from './sections/jobs-section/job-section.component';
|
import {JobSectionComponent} from './sections/jobs-section/job-section.component';
|
||||||
import {JobModule} from '../jobs/jobs.module';
|
import {JobModule} from '../jobs/jobs.module';
|
||||||
|
import {
|
||||||
|
IonHeader,
|
||||||
|
IonToolbar,
|
||||||
|
IonLabel,
|
||||||
|
IonImg,
|
||||||
|
IonContent,
|
||||||
|
IonButton,
|
||||||
|
IonItem,
|
||||||
|
IonThumbnail,
|
||||||
|
IonSearchbar,
|
||||||
|
IonRippleEffect,
|
||||||
|
IonRouterLink,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
const catalogRoutes: Routes = [
|
const catalogRoutes: Routes = [
|
||||||
{
|
{
|
||||||
@@ -56,8 +68,7 @@ const catalogRoutes: Routes = [
|
|||||||
JobSectionComponent,
|
JobSectionComponent,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
IonicModule.forRoot(),
|
IonIconDirective,
|
||||||
IonIconModule,
|
|
||||||
FormsModule,
|
FormsModule,
|
||||||
TranslateModule.forChild(),
|
TranslateModule.forChild(),
|
||||||
RouterModule.forChild(catalogRoutes),
|
RouterModule.forChild(catalogRoutes),
|
||||||
@@ -69,6 +80,17 @@ const catalogRoutes: Routes = [
|
|||||||
UtilModule,
|
UtilModule,
|
||||||
NewsModule,
|
NewsModule,
|
||||||
JobModule,
|
JobModule,
|
||||||
|
IonHeader,
|
||||||
|
IonToolbar,
|
||||||
|
IonImg,
|
||||||
|
IonContent,
|
||||||
|
IonButton,
|
||||||
|
IonItem,
|
||||||
|
IonLabel,
|
||||||
|
IonThumbnail,
|
||||||
|
IonSearchbar,
|
||||||
|
IonRippleEffect,
|
||||||
|
IonRouterLink,
|
||||||
],
|
],
|
||||||
providers: [SettingsProvider, TranslatePipe],
|
providers: [SettingsProvider, TranslatePipe],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -35,4 +35,6 @@ export class JobSectionComponent {
|
|||||||
from: 0,
|
from: 0,
|
||||||
})
|
})
|
||||||
.then((result: SCSearchResult) => result.data);
|
.then((result: SCSearchResult) => result.data);
|
||||||
|
|
||||||
|
constructor() {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {AnimationController} from '@ionic/angular';
|
import {AnimationController} from '@ionic/angular/standalone';
|
||||||
import {AnimationOptions} from '@ionic/angular/common/providers/nav-controller';
|
import {AnimationOptions} from '@ionic/angular/common/providers/nav-controller';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import {Component} from '@angular/core';
|
import {Component} from '@angular/core';
|
||||||
import {AnimationController} from '@ionic/angular';
|
import {AnimationController} from '@ionic/angular/standalone';
|
||||||
import {homePageSearchTransition} from './search-route-transition';
|
import {homePageSearchTransition} from './search-route-transition';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import {Component, DestroyRef, inject, Input, ViewChild} from '@angular/core';
|
import {Component, DestroyRef, inject, Input, ViewChild} from '@angular/core';
|
||||||
import {IonRouterOutlet, ModalController} from '@ionic/angular';
|
import {IonRouterOutlet, ModalController} from '@ionic/angular/standalone';
|
||||||
import {SCDateSeries, SCThing, SCThingType, SCUuid} from '@openstapps/core';
|
import {SCDateSeries, SCThing, SCThingType, SCUuid} from '@openstapps/core';
|
||||||
import {Subscription} from 'rxjs';
|
import {Subscription} from 'rxjs';
|
||||||
import {ScheduleProvider} from '../../../calendar/schedule.provider';
|
import {ScheduleProvider} from '../../../calendar/schedule.provider';
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import {ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
|
import {ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
|
||||||
import {ModalController} from '@ionic/angular';
|
import {ModalController} from '@ionic/angular/standalone';
|
||||||
import {SCDateSeries} from '@openstapps/core';
|
import {SCDateSeries} from '@openstapps/core';
|
||||||
import {
|
import {
|
||||||
DateSeriesRelevantData,
|
DateSeriesRelevantData,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import {Component, EventEmitter, Input, Output} from '@angular/core';
|
import {Component, EventEmitter, Input, Output} from '@angular/core';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows a chip filter
|
* Shows a chip filter
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -17,13 +17,55 @@ import {CommonModule} from '@angular/common';
|
|||||||
import {HttpClientModule} from '@angular/common/http';
|
import {HttpClientModule} from '@angular/common/http';
|
||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {IonicModule, Platform} from '@ionic/angular';
|
import {
|
||||||
|
IonAccordion,
|
||||||
|
IonButton,
|
||||||
|
IonCard,
|
||||||
|
IonCardHeader,
|
||||||
|
IonCardTitle,
|
||||||
|
IonCardContent,
|
||||||
|
IonAccordionGroup,
|
||||||
|
IonBreadcrumb,
|
||||||
|
IonBreadcrumbs,
|
||||||
|
IonButtons,
|
||||||
|
IonChip,
|
||||||
|
IonCol,
|
||||||
|
IonContent,
|
||||||
|
IonGrid,
|
||||||
|
IonHeader,
|
||||||
|
IonImg,
|
||||||
|
IonLabel,
|
||||||
|
IonList,
|
||||||
|
IonListHeader,
|
||||||
|
IonNote,
|
||||||
|
IonPopover,
|
||||||
|
IonRow,
|
||||||
|
IonSegment,
|
||||||
|
IonSegmentButton,
|
||||||
|
IonText,
|
||||||
|
IonThumbnail,
|
||||||
|
IonToolbar,
|
||||||
|
Platform,
|
||||||
|
IonMenuButton,
|
||||||
|
IonSearchbar,
|
||||||
|
IonTitle,
|
||||||
|
IonBackButton,
|
||||||
|
IonInfiniteScroll,
|
||||||
|
IonInfiniteScrollContent,
|
||||||
|
IonItem,
|
||||||
|
IonSkeletonText,
|
||||||
|
IonToast,
|
||||||
|
IonBadge,
|
||||||
|
IonCardSubtitle,
|
||||||
|
IonCheckbox,
|
||||||
|
IonFooter,
|
||||||
|
IonRouterLink,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {MarkdownModule} from 'ngx-markdown';
|
import {MarkdownModule} from 'ngx-markdown';
|
||||||
import {MomentModule} from 'ngx-moment';
|
import {MomentModule} from 'ngx-moment';
|
||||||
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
||||||
import {SimpleBrowser, browserFactory} from '../../util/browser.factory';
|
import {SimpleBrowser, browserFactory} from '../../util/browser.factory';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
|
||||||
import {RoutingStackService} from '../../util/routing-stack.service';
|
import {RoutingStackService} from '../../util/routing-stack.service';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
import {CalendarService} from '../calendar/calendar.service';
|
import {CalendarService} from '../calendar/calendar.service';
|
||||||
@@ -106,6 +148,7 @@ import {SemesterListItemComponent} from './types/semester/semester-list-item.com
|
|||||||
import {VideoDetailContentComponent} from './types/video/video-detail-content.component';
|
import {VideoDetailContentComponent} from './types/video/video-detail-content.component';
|
||||||
import {VideoListItemComponent} from './types/video/video-list-item.component';
|
import {VideoListItemComponent} from './types/video/video-list-item.component';
|
||||||
import {ShareButtonComponent} from './elements/share-button.component';
|
import {ShareButtonComponent} from './elements/share-button.component';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module for handling data
|
* Module for handling data
|
||||||
@@ -187,10 +230,9 @@ import {ShareButtonComponent} from './elements/share-button.component';
|
|||||||
FormsModule,
|
FormsModule,
|
||||||
MapWidgetComponent,
|
MapWidgetComponent,
|
||||||
HttpClientModule,
|
HttpClientModule,
|
||||||
IonicModule.forRoot(),
|
|
||||||
MarkdownModule.forRoot(),
|
MarkdownModule.forRoot(),
|
||||||
MenuModule,
|
MenuModule,
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
MomentModule.forRoot({
|
MomentModule.forRoot({
|
||||||
relativeTimeThresholdOptions: {
|
relativeTimeThresholdOptions: {
|
||||||
m: 59,
|
m: 59,
|
||||||
@@ -202,6 +244,47 @@ import {ShareButtonComponent} from './elements/share-button.component';
|
|||||||
ThingTranslateModule.forChild(),
|
ThingTranslateModule.forChild(),
|
||||||
UtilModule,
|
UtilModule,
|
||||||
GeoNavigationDirective,
|
GeoNavigationDirective,
|
||||||
|
IonButton,
|
||||||
|
IonCard,
|
||||||
|
IonCardHeader,
|
||||||
|
IonCardTitle,
|
||||||
|
IonCardContent,
|
||||||
|
IonCardSubtitle,
|
||||||
|
IonNote,
|
||||||
|
IonLabel,
|
||||||
|
IonGrid,
|
||||||
|
IonCol,
|
||||||
|
IonRow,
|
||||||
|
IonList,
|
||||||
|
IonSegment,
|
||||||
|
IonListHeader,
|
||||||
|
IonSegmentButton,
|
||||||
|
IonChip,
|
||||||
|
IonImg,
|
||||||
|
IonPopover,
|
||||||
|
IonThumbnail,
|
||||||
|
IonBreadcrumbs,
|
||||||
|
IonBreadcrumb,
|
||||||
|
IonAccordion,
|
||||||
|
IonAccordionGroup,
|
||||||
|
IonText,
|
||||||
|
IonContent,
|
||||||
|
IonButtons,
|
||||||
|
IonHeader,
|
||||||
|
IonToolbar,
|
||||||
|
IonMenuButton,
|
||||||
|
IonSearchbar,
|
||||||
|
IonTitle,
|
||||||
|
IonBackButton,
|
||||||
|
IonInfiniteScroll,
|
||||||
|
IonInfiniteScrollContent,
|
||||||
|
IonItem,
|
||||||
|
IonSkeletonText,
|
||||||
|
IonToast,
|
||||||
|
IonBadge,
|
||||||
|
IonCheckbox,
|
||||||
|
IonFooter,
|
||||||
|
IonRouterLink,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
CoordinatedSearchProvider,
|
CoordinatedSearchProvider,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
import {Injectable} from '@angular/core';
|
import {Injectable} from '@angular/core';
|
||||||
import {SCFeedbackRequestMetaData} from '@openstapps/core';
|
import {SCFeedbackRequestMetaData} from '@openstapps/core';
|
||||||
import {Platform} from '@ionic/angular';
|
import {Platform} from '@ionic/angular/standalone';
|
||||||
import {DataProvider} from './data.provider';
|
import {DataProvider} from './data.provider';
|
||||||
import {NavigationEnd, Router} from '@angular/router';
|
import {NavigationEnd, Router} from '@angular/router';
|
||||||
import {SettingsProvider} from '../settings/settings.provider';
|
import {SettingsProvider} from '../settings/settings.provider';
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
import {Component, Input, TemplateRef} from '@angular/core';
|
import {Component, Input, TemplateRef} from '@angular/core';
|
||||||
import {SCThings} from '@openstapps/core';
|
import {SCThings} from '@openstapps/core';
|
||||||
import {DataListContext} from '../list/data-list.component';
|
import {DataListContext} from '../list/data-list.component';
|
||||||
import {ModalController} from '@ionic/angular';
|
import {ModalController} from '@ionic/angular/standalone';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO
|
* TODO
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import {DataDetailComponent} from './data-detail.component';
|
|||||||
import {Observable, of} from 'rxjs';
|
import {Observable, of} from 'rxjs';
|
||||||
import {StorageProvider} from '../../storage/storage.provider';
|
import {StorageProvider} from '../../storage/storage.provider';
|
||||||
import {LoggerModule, NgxLoggerLevel} from 'ngx-logger';
|
import {LoggerModule, NgxLoggerLevel} from 'ngx-logger';
|
||||||
|
import {provideIonicAngular} from '@ionic/angular/standalone';
|
||||||
|
|
||||||
const translations: any = {data: {detail: {TITLE: 'Foo'}}};
|
const translations: any = {data: {detail: {TITLE: 'Foo'}}};
|
||||||
|
|
||||||
@@ -71,6 +72,7 @@ describe('DataDetailComponent', () => {
|
|||||||
LoggerModule.forRoot({level: NgxLoggerLevel.TRACE}),
|
LoggerModule.forRoot({level: NgxLoggerLevel.TRACE}),
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
|
provideIonicAngular(),
|
||||||
{
|
{
|
||||||
provide: ActivatedRoute,
|
provide: ActivatedRoute,
|
||||||
useValue: fakeActivatedRoute,
|
useValue: fakeActivatedRoute,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
import {Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef} from '@angular/core';
|
import {Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef} from '@angular/core';
|
||||||
import {ActivatedRoute, Router} from '@angular/router';
|
import {ActivatedRoute, Router} from '@angular/router';
|
||||||
import {ModalController} from '@ionic/angular';
|
import {ModalController} from '@ionic/angular/standalone';
|
||||||
import {LangChangeEvent, TranslateService} from '@ngx-translate/core';
|
import {LangChangeEvent, TranslateService} from '@ngx-translate/core';
|
||||||
import {SCLanguageCode, SCSaveableThing, SCThings, SCUuid} from '@openstapps/core';
|
import {SCLanguageCode, SCSaveableThing, SCThings, SCUuid} from '@openstapps/core';
|
||||||
import {DataProvider, DataScope} from '../data.provider';
|
import {DataProvider, DataScope} from '../data.provider';
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import {DataProvider, DataScope} from '../data.provider';
|
|||||||
import {fromEvent, Observable} from 'rxjs';
|
import {fromEvent, Observable} from 'rxjs';
|
||||||
import {map, startWith} from 'rxjs/operators';
|
import {map, startWith} from 'rxjs/operators';
|
||||||
import {DataRoutingService} from '../data-routing.service';
|
import {DataRoutingService} from '../data-routing.service';
|
||||||
import {NavController} from '@ionic/angular';
|
import {NavController} from '@ionic/angular/standalone';
|
||||||
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ ion-button {
|
|||||||
--background-hover: currentcolor;
|
--background-hover: currentcolor;
|
||||||
--background-focused: currentcolor;
|
--background-focused: currentcolor;
|
||||||
|
|
||||||
aspect-ratio: 1;
|
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,7 +26,7 @@ ion-button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (hover: hover) {
|
@media (hover: hover) {
|
||||||
ion-button:hover ::ng-deep stapps-icon {
|
ion-button:hover > ion-icon {
|
||||||
--fill: 1 !important;
|
--fill: 1 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
ion-button {
|
ion-button {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
||||||
&.button-disabled::ng-deep stapps-icon {
|
&.button-disabled {
|
||||||
--fill: 1;
|
--fill: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -39,17 +39,17 @@ ion-button {
|
|||||||
border-radius: var(--border-radius-default);
|
border-radius: var(--border-radius-default);
|
||||||
|
|
||||||
> ion-icon {
|
> ion-icon {
|
||||||
&:active::ng-deep stapps-icon,
|
&:active,
|
||||||
&:has(:checked)::ng-deep stapps-icon,
|
&:has(:checked),
|
||||||
&:has(:checked)::ng-deep ~ *::ng-deep stapps-icon,
|
&:has(:checked) ~ *,
|
||||||
&:active::ng-deep ~ *::ng-deep stapps-icon {
|
&:active ~ * {
|
||||||
--fill: 1;
|
--fill: 1;
|
||||||
|
|
||||||
color: var(--ion-color-dark);
|
color: var(--ion-color-dark);
|
||||||
}
|
}
|
||||||
@media (hover: hover) {
|
@media (hover: hover) {
|
||||||
&:hover ~ *::ng-deep stapps-icon,
|
&:hover ~ *,
|
||||||
&:hover::ng-deep stapps-icon {
|
&:hover {
|
||||||
--fill: 1;
|
--fill: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {Component, Input} from '@angular/core';
|
import {Component, Input} from '@angular/core';
|
||||||
import {ToastController} from '@ionic/angular';
|
import {ToastController} from '@ionic/angular/standalone';
|
||||||
import {environment} from '../../../../environments/environment';
|
import {environment} from '../../../../environments/environment';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
|||||||
@@ -33,9 +33,9 @@ ion-item {
|
|||||||
margin: var(--spacing-sm);
|
margin: var(--spacing-sm);
|
||||||
|
|
||||||
ion-thumbnail {
|
ion-thumbnail {
|
||||||
--ion-margin: var(--spacing-xs);
|
--size: 36px;
|
||||||
|
|
||||||
margin-block: auto;
|
margin: 0;
|
||||||
margin-inline: var(--spacing-md);
|
margin-inline: var(--spacing-md);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import {
|
|||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import {SCThings} from '@openstapps/core';
|
import {SCThings} from '@openstapps/core';
|
||||||
import {BehaviorSubject, Observable} from 'rxjs';
|
import {BehaviorSubject, Observable} from 'rxjs';
|
||||||
import {IonInfiniteScroll} from '@ionic/angular';
|
import {IonInfiniteScroll} from '@ionic/angular/standalone';
|
||||||
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
||||||
|
|
||||||
export interface DataListContext<T> {
|
export interface DataListContext<T> {
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type {AnimationBuilder} from '@ionic/angular';
|
import type {AnimationBuilder} from '@ionic/angular/standalone';
|
||||||
import {AnimationController} from '@ionic/angular';
|
import {AnimationController} from '@ionic/angular/standalone';
|
||||||
import type {AnimationOptions} from '@ionic/angular/common/providers/nav-controller';
|
import type {AnimationOptions} from '@ionic/angular/common/providers/nav-controller';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
import {Component, DestroyRef, inject, Input, OnInit} from '@angular/core';
|
import {Component, DestroyRef, inject, Input, OnInit} from '@angular/core';
|
||||||
import {ActivatedRoute, Router} from '@angular/router';
|
import {ActivatedRoute, Router} from '@angular/router';
|
||||||
import {Keyboard} from '@capacitor/keyboard';
|
import {Keyboard} from '@capacitor/keyboard';
|
||||||
import {AlertController, AnimationBuilder, AnimationController} from '@ionic/angular';
|
import {AlertController, AnimationBuilder, AnimationController} from '@ionic/angular/standalone';
|
||||||
import {Capacitor} from '@capacitor/core';
|
import {Capacitor} from '@capacitor/core';
|
||||||
import {
|
import {
|
||||||
SCFacet,
|
SCFacet,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import {AfterViewInit, Component, DestroyRef, inject, Input} from '@angular/core
|
|||||||
import {SCDish, SCISO8601Date, SCPlace} from '@openstapps/core';
|
import {SCDish, SCISO8601Date, SCPlace} from '@openstapps/core';
|
||||||
import {PlaceMensaService} from './place-mensa-service';
|
import {PlaceMensaService} from './place-mensa-service';
|
||||||
import {Router} from '@angular/router';
|
import {Router} from '@angular/router';
|
||||||
import {IonRouterOutlet} from '@ionic/angular';
|
import {IonRouterOutlet} from '@ionic/angular/standalone';
|
||||||
import {DataRoutingService} from '../../../../data-routing.service';
|
import {DataRoutingService} from '../../../../data-routing.service';
|
||||||
import {groupBy} from '@openstapps/collection-utils';
|
import {groupBy} from '@openstapps/collection-utils';
|
||||||
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import {Component, OnInit} from '@angular/core';
|
import {Component, OnInit} from '@angular/core';
|
||||||
import {AlertController, AnimationController} from '@ionic/angular';
|
import {AlertController, AnimationController} from '@ionic/angular/standalone';
|
||||||
import {ActivatedRoute, Router} from '@angular/router';
|
import {ActivatedRoute, Router} from '@angular/router';
|
||||||
import {NGXLogger} from 'ngx-logger';
|
import {NGXLogger} from 'ngx-logger';
|
||||||
import {debounceTime, distinctUntilChanged, startWith, take} from 'rxjs/operators';
|
import {debounceTime, distinctUntilChanged, startWith, take} from 'rxjs/operators';
|
||||||
|
|||||||
@@ -15,14 +15,25 @@
|
|||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {FavoritesPageComponent} from './favorites-page.component';
|
import {FavoritesPageComponent} from './favorites-page.component';
|
||||||
import {RouterModule, Routes} from '@angular/router';
|
import {RouterModule, Routes} from '@angular/router';
|
||||||
import {MenuModule} from '../menu/menu.module';
|
import {MenuModule} from '../menu/menu.module';
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {DataModule} from '../data/data.module';
|
import {DataModule} from '../data/data.module';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
import {
|
||||||
|
IonBackButton,
|
||||||
|
IonButton,
|
||||||
|
IonButtons,
|
||||||
|
IonContent,
|
||||||
|
IonHeader,
|
||||||
|
IonLabel,
|
||||||
|
IonMenuButton,
|
||||||
|
IonSearchbar,
|
||||||
|
IonTitle,
|
||||||
|
IonToolbar,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
const favoritesRoutes: Routes = [
|
const favoritesRoutes: Routes = [
|
||||||
{
|
{
|
||||||
@@ -35,13 +46,22 @@ const favoritesRoutes: Routes = [
|
|||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
IonicModule,
|
|
||||||
RouterModule.forChild(favoritesRoutes),
|
RouterModule.forChild(favoritesRoutes),
|
||||||
MenuModule,
|
MenuModule,
|
||||||
TranslateModule,
|
TranslateModule,
|
||||||
DataModule,
|
DataModule,
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
UtilModule,
|
UtilModule,
|
||||||
|
IonLabel,
|
||||||
|
IonHeader,
|
||||||
|
IonToolbar,
|
||||||
|
IonButtons,
|
||||||
|
IonContent,
|
||||||
|
IonButton,
|
||||||
|
IonMenuButton,
|
||||||
|
IonSearchbar,
|
||||||
|
IonTitle,
|
||||||
|
IonBackButton,
|
||||||
],
|
],
|
||||||
declarations: [FavoritesPageComponent],
|
declarations: [FavoritesPageComponent],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import {
|
|||||||
} from '@openstapps/core';
|
} from '@openstapps/core';
|
||||||
import {DataProvider} from '../data/data.provider';
|
import {DataProvider} from '../data/data.provider';
|
||||||
import {DebugDataCollectorService} from '../data/debug-data-collector.service';
|
import {DebugDataCollectorService} from '../data/debug-data-collector.service';
|
||||||
import {AlertController, ToastController} from '@ionic/angular';
|
import {AlertController, ToastController} from '@ionic/angular/standalone';
|
||||||
import {TranslateService} from '@ngx-translate/core';
|
import {TranslateService} from '@ngx-translate/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
|||||||
@@ -15,13 +15,30 @@
|
|||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {FeedbackPageComponent} from './feedback-page.component';
|
import {FeedbackPageComponent} from './feedback-page.component';
|
||||||
import {RouterModule, Routes} from '@angular/router';
|
import {RouterModule, Routes} from '@angular/router';
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {MarkdownModule} from 'ngx-markdown';
|
import {MarkdownModule} from 'ngx-markdown';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
import {
|
||||||
|
IonBackButton,
|
||||||
|
IonButton,
|
||||||
|
IonButtons,
|
||||||
|
IonCard,
|
||||||
|
IonCardContent,
|
||||||
|
IonCardTitle,
|
||||||
|
IonCheckbox,
|
||||||
|
IonHeader,
|
||||||
|
IonInput,
|
||||||
|
IonItem,
|
||||||
|
IonLabel,
|
||||||
|
IonSelect,
|
||||||
|
IonSelectOption,
|
||||||
|
IonTextarea,
|
||||||
|
IonTitle,
|
||||||
|
IonToolbar,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
const feedbackRoutes: Routes = [
|
const feedbackRoutes: Routes = [
|
||||||
{
|
{
|
||||||
@@ -34,12 +51,27 @@ const feedbackRoutes: Routes = [
|
|||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
IonicModule,
|
IonIconDirective,
|
||||||
IonIconModule,
|
|
||||||
RouterModule.forChild(feedbackRoutes),
|
RouterModule.forChild(feedbackRoutes),
|
||||||
TranslateModule,
|
TranslateModule,
|
||||||
MarkdownModule,
|
MarkdownModule,
|
||||||
UtilModule,
|
UtilModule,
|
||||||
|
IonBackButton,
|
||||||
|
IonCard,
|
||||||
|
IonCardContent,
|
||||||
|
IonButton,
|
||||||
|
IonItem,
|
||||||
|
IonLabel,
|
||||||
|
IonCardTitle,
|
||||||
|
IonCheckbox,
|
||||||
|
IonTextarea,
|
||||||
|
IonInput,
|
||||||
|
IonSelect,
|
||||||
|
IonSelectOption,
|
||||||
|
IonTitle,
|
||||||
|
IonButtons,
|
||||||
|
IonToolbar,
|
||||||
|
IonHeader,
|
||||||
],
|
],
|
||||||
declarations: [FeedbackPageComponent],
|
declarations: [FeedbackPageComponent],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import {StorageProvider} from '../../storage/storage.provider';
|
|||||||
import {DaiaDataProvider} from '../daia-data.provider';
|
import {DaiaDataProvider} from '../daia-data.provider';
|
||||||
import {ConfigProvider} from '../../config/config.provider';
|
import {ConfigProvider} from '../../config/config.provider';
|
||||||
import {LoggerTestingModule} from 'ngx-logger/testing';
|
import {LoggerTestingModule} from 'ngx-logger/testing';
|
||||||
|
import {provideIonicAngular} from '@ionic/angular/standalone';
|
||||||
|
|
||||||
const translations: any = {data: {detail: {TITLE: 'Foo'}}};
|
const translations: any = {data: {detail: {TITLE: 'Foo'}}};
|
||||||
|
|
||||||
@@ -74,6 +75,7 @@ describe('DaiaAvailabilityComponent', () => {
|
|||||||
LoggerTestingModule,
|
LoggerTestingModule,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
|
provideIonicAngular(),
|
||||||
{
|
{
|
||||||
provide: ActivatedRoute,
|
provide: ActivatedRoute,
|
||||||
useValue: fakeActivatedRoute,
|
useValue: fakeActivatedRoute,
|
||||||
|
|||||||
@@ -37,6 +37,6 @@ ion-grid {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ion-icon ::ng-deep stapps-icon {
|
ion-icon {
|
||||||
--fill: 1;
|
--fill: 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,9 +26,9 @@ import {HebisDataProvider} from '../hebis-data.provider';
|
|||||||
import {HebisDetailComponent} from './hebis-detail.component';
|
import {HebisDetailComponent} from './hebis-detail.component';
|
||||||
import {Observable, of} from 'rxjs';
|
import {Observable, of} from 'rxjs';
|
||||||
import {StorageProvider} from '../../storage/storage.provider';
|
import {StorageProvider} from '../../storage/storage.provider';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {IonIconModule} from '../../../util/ion-icon/ion-icon.module';
|
|
||||||
import {LoggerModule, NgxLoggerLevel} from 'ngx-logger';
|
import {LoggerModule, NgxLoggerLevel} from 'ngx-logger';
|
||||||
|
import {IonIconDirective} from '../../../util/ion-icon/ion-icon.directive';
|
||||||
|
import {provideIonicAngular} from '@ionic/angular/standalone';
|
||||||
|
|
||||||
const translations: any = {data: {detail: {TITLE: 'Foo'}}};
|
const translations: any = {data: {detail: {TITLE: 'Foo'}}};
|
||||||
|
|
||||||
@@ -68,14 +68,14 @@ describe('HebisDetailComponent', () => {
|
|||||||
RouterModule.forRoot([]),
|
RouterModule.forRoot([]),
|
||||||
HebisRoutingModule,
|
HebisRoutingModule,
|
||||||
HebisModule,
|
HebisModule,
|
||||||
IonicModule,
|
IonIconDirective,
|
||||||
IonIconModule,
|
|
||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
loader: {provide: TranslateLoader, useClass: TranslateFakeLoader},
|
loader: {provide: TranslateLoader, useClass: TranslateFakeLoader},
|
||||||
}),
|
}),
|
||||||
LoggerModule.forRoot({level: NgxLoggerLevel.TRACE}),
|
LoggerModule.forRoot({level: NgxLoggerLevel.TRACE}),
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
|
provideIonicAngular(),
|
||||||
{
|
{
|
||||||
provide: ActivatedRoute,
|
provide: ActivatedRoute,
|
||||||
useValue: fakeActivatedRoute,
|
useValue: fakeActivatedRoute,
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import {CommonModule} from '@angular/common';
|
|||||||
import {HttpClientModule} from '@angular/common/http';
|
import {HttpClientModule} from '@angular/common/http';
|
||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {MarkdownModule} from 'ngx-markdown';
|
import {MarkdownModule} from 'ngx-markdown';
|
||||||
import {MomentModule} from 'ngx-moment';
|
import {MomentModule} from 'ngx-moment';
|
||||||
@@ -34,8 +33,27 @@ import {HebisRoutingModule} from './hebis-routing.module';
|
|||||||
import {DataModule} from '../data/data.module';
|
import {DataModule} from '../data/data.module';
|
||||||
import {DaiaAvailabilityComponent} from './daia-availability/daia-availability.component';
|
import {DaiaAvailabilityComponent} from './daia-availability/daia-availability.component';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
|
||||||
import {DaiaHoldingComponent} from './daia-availability/daia-holding.component';
|
import {DaiaHoldingComponent} from './daia-availability/daia-holding.component';
|
||||||
|
import {
|
||||||
|
IonBackButton,
|
||||||
|
IonButton,
|
||||||
|
IonButtons,
|
||||||
|
IonCard,
|
||||||
|
IonCardContent,
|
||||||
|
IonCardHeader,
|
||||||
|
IonCol,
|
||||||
|
IonContent,
|
||||||
|
IonGrid,
|
||||||
|
IonHeader,
|
||||||
|
IonItem,
|
||||||
|
IonLabel,
|
||||||
|
IonNote,
|
||||||
|
IonRow,
|
||||||
|
IonThumbnail,
|
||||||
|
IonTitle,
|
||||||
|
IonToolbar,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module for handling data
|
* Module for handling data
|
||||||
@@ -53,9 +71,8 @@ import {DaiaHoldingComponent} from './daia-availability/daia-holding.component';
|
|||||||
DataModule,
|
DataModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
HebisRoutingModule,
|
HebisRoutingModule,
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
HttpClientModule,
|
HttpClientModule,
|
||||||
IonicModule.forRoot(),
|
|
||||||
MarkdownModule.forRoot(),
|
MarkdownModule.forRoot(),
|
||||||
MenuModule,
|
MenuModule,
|
||||||
MomentModule.forRoot({
|
MomentModule.forRoot({
|
||||||
@@ -68,6 +85,23 @@ import {DaiaHoldingComponent} from './daia-availability/daia-holding.component';
|
|||||||
TranslateModule.forChild(),
|
TranslateModule.forChild(),
|
||||||
ThingTranslateModule.forChild(),
|
ThingTranslateModule.forChild(),
|
||||||
UtilModule,
|
UtilModule,
|
||||||
|
IonBackButton,
|
||||||
|
IonLabel,
|
||||||
|
IonButton,
|
||||||
|
IonContent,
|
||||||
|
IonButtons,
|
||||||
|
IonTitle,
|
||||||
|
IonToolbar,
|
||||||
|
IonNote,
|
||||||
|
IonHeader,
|
||||||
|
IonGrid,
|
||||||
|
IonRow,
|
||||||
|
IonCol,
|
||||||
|
IonCard,
|
||||||
|
IonCardContent,
|
||||||
|
IonCardHeader,
|
||||||
|
IonItem,
|
||||||
|
IonThumbnail,
|
||||||
],
|
],
|
||||||
providers: [HebisDataProvider, DaiaDataProvider, StAppsWebHttpClient],
|
providers: [HebisDataProvider, DaiaDataProvider, StAppsWebHttpClient],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,25 +1,23 @@
|
|||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {MomentModule} from 'ngx-moment';
|
import {MomentModule} from 'ngx-moment';
|
||||||
import {DataModule} from '../data/data.module';
|
import {DataModule} from '../data/data.module';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
|
||||||
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
||||||
import {RouterModule, Routes} from '@angular/router';
|
import {RouterModule, Routes} from '@angular/router';
|
||||||
import {JobsPageComponent} from './page/jobs-page.component';
|
import {JobsPageComponent} from './page/jobs-page.component';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
const jobsRoutes: Routes = [{path: 'jobs', component: JobsPageComponent}];
|
const jobsRoutes: Routes = [{path: 'jobs', component: JobsPageComponent}];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [JobsPageComponent],
|
declarations: [JobsPageComponent],
|
||||||
imports: [
|
imports: [
|
||||||
IonicModule.forRoot(),
|
|
||||||
ThingTranslateModule.forChild(),
|
ThingTranslateModule.forChild(),
|
||||||
TranslateModule.forChild(),
|
TranslateModule.forChild(),
|
||||||
RouterModule.forChild(jobsRoutes),
|
RouterModule.forChild(jobsRoutes),
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
CommonModule,
|
CommonModule,
|
||||||
MomentModule,
|
MomentModule,
|
||||||
DataModule,
|
DataModule,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import {Component, EventEmitter, Input, Output} from '@angular/core';
|
import {Component, EventEmitter, Input, Output} from '@angular/core';
|
||||||
import {DocumentAction, PAIADocument, PAIADocumentStatus} from '../../../types';
|
import {DocumentAction, PAIADocument, PAIADocumentStatus, PAIADocumentVisualStatus} from '../../../types';
|
||||||
import {LibraryAccountService} from '../../library-account.service';
|
import {LibraryAccountService} from '../../library-account.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@@ -27,12 +27,15 @@ export class PAIAItemComponent {
|
|||||||
|
|
||||||
renewable: boolean;
|
renewable: boolean;
|
||||||
|
|
||||||
|
visualStatus?: PAIADocumentVisualStatus;
|
||||||
|
|
||||||
constructor(private readonly libraryAccountService: LibraryAccountService) {}
|
constructor(private readonly libraryAccountService: LibraryAccountService) {}
|
||||||
|
|
||||||
@Input()
|
@Input()
|
||||||
set item(value: PAIADocument) {
|
set item(value: PAIADocument) {
|
||||||
this._item = value;
|
this._item = value;
|
||||||
void this.setRenewable();
|
void this.setRenewable();
|
||||||
|
this.visualStatus = this.getVisualStatus(Number(this.item.status));
|
||||||
}
|
}
|
||||||
|
|
||||||
get item(): PAIADocument {
|
get item(): PAIADocument {
|
||||||
@@ -56,4 +59,18 @@ export class PAIAItemComponent {
|
|||||||
const isActive = await this.libraryAccountService.isActivePatron();
|
const isActive = await this.libraryAccountService.isActivePatron();
|
||||||
this.renewable = isActive && Number(this.item.status) === PAIADocumentStatus.Held;
|
this.renewable = isActive && Number(this.item.status) === PAIADocumentStatus.Held;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getVisualStatus(status: PAIADocumentStatus): PAIADocumentVisualStatus | undefined {
|
||||||
|
switch (status) {
|
||||||
|
case PAIADocumentStatus.Ordered: {
|
||||||
|
return {color: 'warning', status: status, statusText: 'ordered'};
|
||||||
|
}
|
||||||
|
case PAIADocumentStatus.Provided: {
|
||||||
|
return {color: 'success', status: status, statusText: 'ready'};
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,10 +14,16 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<!-- TODO: text not selectable in Chrome, bugfix needed https://github.com/ionic-team/ionic-framework/issues/24956 -->
|
|
||||||
<ion-label class="ion-text-wrap">
|
<ion-label class="ion-text-wrap">
|
||||||
@if (item.about) {
|
@if (item.about) {
|
||||||
<h2 class="name">{{ item.about }}</h2>
|
<h2 class="name">
|
||||||
|
@if (visualStatus) {
|
||||||
|
<ion-badge [color]="visualStatus.color" slot="start">
|
||||||
|
{{ 'library.account.pages' + '.' + listName + '.' + visualStatus.statusText | translate }}
|
||||||
|
</ion-badge>
|
||||||
|
}
|
||||||
|
{{ item.about }}
|
||||||
|
</h2>
|
||||||
}
|
}
|
||||||
@for (property of propertiesToShow; track property) {
|
@for (property of propertiesToShow; track property) {
|
||||||
@if (item[property]) {
|
@if (item[property]) {
|
||||||
|
|||||||
@@ -12,3 +12,6 @@
|
|||||||
* You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
ion-badge {
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|||||||
@@ -35,23 +35,13 @@
|
|||||||
@switch (activeSegment) {
|
@switch (activeSegment) {
|
||||||
@case ('orders') {
|
@case ('orders') {
|
||||||
@for (hold of paiaDocuments; track hold) {
|
@for (hold of paiaDocuments; track hold) {
|
||||||
@if (toNumber(hold.status) === paiaDocumentStatus.Provided) {
|
<stapps-paia-item
|
||||||
<stapps-paia-item
|
[item]="hold"
|
||||||
[item]="hold"
|
[propertiesToShow]="['label', 'storage']"
|
||||||
[propertiesToShow]="['label', 'storage']"
|
(documentAction)="onDocumentAction($event)"
|
||||||
(documentAction)="onDocumentAction($event)"
|
listName="holds"
|
||||||
listName="holds"
|
>
|
||||||
>
|
</stapps-paia-item>
|
||||||
</stapps-paia-item>
|
|
||||||
} @else {
|
|
||||||
<stapps-paia-item
|
|
||||||
[item]="hold"
|
|
||||||
[propertiesToShow]="['label']"
|
|
||||||
(documentAction)="onDocumentAction($event)"
|
|
||||||
listName="holds"
|
|
||||||
>
|
|
||||||
</stapps-paia-item>
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@case ('reservations') {
|
@case ('reservations') {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ import {PAIATokenResponse} from '../../auth/paia/paia-token-response';
|
|||||||
import {AuthHelperService} from '../../auth/auth-helper.service';
|
import {AuthHelperService} from '../../auth/auth-helper.service';
|
||||||
import {ConfigProvider} from '../../config/config.provider';
|
import {ConfigProvider} from '../../config/config.provider';
|
||||||
import {TranslateService} from '@ngx-translate/core';
|
import {TranslateService} from '@ngx-translate/core';
|
||||||
import {AlertController, ToastController} from '@ionic/angular';
|
import {AlertController, ToastController} from '@ionic/angular/standalone';
|
||||||
import {HebisSearchResponse} from '../../hebis/protocol/response';
|
import {HebisSearchResponse} from '../../hebis/protocol/response';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ import {PAIAPatron} from '../../types';
|
|||||||
export class ProfilePageComponent {
|
export class ProfilePageComponent {
|
||||||
patron?: PAIAPatron;
|
patron?: PAIAPatron;
|
||||||
|
|
||||||
propertiesToShow: (keyof PAIAPatron)[] = ['id', 'name', 'email', 'address', 'expires'];
|
|
||||||
|
|
||||||
constructor(private readonly libraryAccountService: LibraryAccountService) {}
|
constructor(private readonly libraryAccountService: LibraryAccountService) {}
|
||||||
|
|
||||||
async ionViewWillEnter(): Promise<void> {
|
async ionViewWillEnter(): Promise<void> {
|
||||||
|
|||||||
@@ -26,27 +26,45 @@
|
|||||||
<ion-card>
|
<ion-card>
|
||||||
<ion-card-content>
|
<ion-card-content>
|
||||||
<ion-grid>
|
<ion-grid>
|
||||||
@for (property of propertiesToShow; track property) {
|
<ion-row>
|
||||||
@if (patron[property]) {
|
<ion-col> {{ 'library.account.pages.profile.labels.id' | translate }}: </ion-col>
|
||||||
<ion-row>
|
<ion-col>
|
||||||
<ion-col>
|
{{ patron.id }}
|
||||||
{{ 'library.account.pages.profile.labels' + '.' + property | translate }}:
|
</ion-col>
|
||||||
</ion-col>
|
</ion-row>
|
||||||
<ion-col>
|
<ion-row>
|
||||||
@if (!['expires'].includes(property)) {
|
<ion-col> {{ 'library.account.pages.profile.labels.name' | translate }}: </ion-col>
|
||||||
{{ patron[property] }}
|
<ion-col> {{ patron.name_details?.title ?? '' }} {{ patron.name }} </ion-col>
|
||||||
} @else {
|
</ion-row>
|
||||||
@if (isUnlimitedExpiry(patron['expires'])) {
|
@if (patron.email) {
|
||||||
{{ 'library.account.pages.profile.values.unlimited' | translate }}
|
<ion-row>
|
||||||
} @else {
|
<ion-col> {{ 'library.account.pages.profile.labels.email' | translate }}: </ion-col>
|
||||||
{{ 'library.account.pages.profile.values.expires' | translate }}: {{
|
<ion-col>
|
||||||
patron['expires'] | amDateFormat: 'll'
|
{{ patron.email }}
|
||||||
}}
|
</ion-col>
|
||||||
}
|
</ion-row>
|
||||||
}
|
}
|
||||||
</ion-col>
|
@if (patron.address) {
|
||||||
</ion-row>
|
<ion-row>
|
||||||
}
|
<ion-col> {{ 'library.account.pages.profile.labels.address' | translate }}: </ion-col>
|
||||||
|
<ion-col>
|
||||||
|
{{ patron.address }}
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
}
|
||||||
|
@if (patron.expires) {
|
||||||
|
<ion-row>
|
||||||
|
<ion-col> {{ 'library.account.pages.profile.labels.expires' | translate }}: </ion-col>
|
||||||
|
<ion-col>
|
||||||
|
@if (isUnlimitedExpiry(patron.expires)) {
|
||||||
|
{{ 'library.account.pages.profile.values.unlimited' | translate }}
|
||||||
|
} @else {
|
||||||
|
{{ 'library.account.pages.profile.values.expires' | translate }}: {{
|
||||||
|
patron.expires | amDateFormat: 'll'
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
}
|
}
|
||||||
</ion-grid>
|
</ion-grid>
|
||||||
</ion-card-content>
|
</ion-card-content>
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {RouterModule, Routes} from '@angular/router';
|
import {RouterModule, Routes} from '@angular/router';
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {LibraryAccountPageComponent} from './account/account.page';
|
import {LibraryAccountPageComponent} from './account/account.page';
|
||||||
@@ -32,7 +31,28 @@ import {MomentModule} from 'ngx-moment';
|
|||||||
import {FeeItemComponent} from './account/elements/fee-item/fee-item.component';
|
import {FeeItemComponent} from './account/elements/fee-item/fee-item.component';
|
||||||
import {DataModule} from '../data/data.module';
|
import {DataModule} from '../data/data.module';
|
||||||
import {UtilModule} from '../../util/util.module';
|
import {UtilModule} from '../../util/util.module';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
import {
|
||||||
|
IonHeader,
|
||||||
|
IonToolbar,
|
||||||
|
IonButtons,
|
||||||
|
IonBackButton,
|
||||||
|
IonTitle,
|
||||||
|
IonContent,
|
||||||
|
IonSkeletonText,
|
||||||
|
IonItem,
|
||||||
|
IonGrid,
|
||||||
|
IonCol,
|
||||||
|
IonRow,
|
||||||
|
IonLabel,
|
||||||
|
IonCard,
|
||||||
|
IonCardContent,
|
||||||
|
IonList,
|
||||||
|
IonSegment,
|
||||||
|
IonSegmentButton,
|
||||||
|
IonButton,
|
||||||
|
IonBadge,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
const routes: ProtectedRoutes | Routes = [
|
const routes: ProtectedRoutes | Routes = [
|
||||||
{
|
{
|
||||||
@@ -71,13 +91,31 @@ const routes: ProtectedRoutes | Routes = [
|
|||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
IonicModule,
|
IonIconDirective,
|
||||||
IonIconModule,
|
|
||||||
RouterModule.forChild(routes),
|
RouterModule.forChild(routes),
|
||||||
TranslateModule,
|
TranslateModule,
|
||||||
MomentModule,
|
MomentModule,
|
||||||
DataModule,
|
DataModule,
|
||||||
UtilModule,
|
UtilModule,
|
||||||
|
IonHeader,
|
||||||
|
IonBadge,
|
||||||
|
IonToolbar,
|
||||||
|
IonButtons,
|
||||||
|
IonBackButton,
|
||||||
|
IonTitle,
|
||||||
|
IonContent,
|
||||||
|
IonSkeletonText,
|
||||||
|
IonItem,
|
||||||
|
IonGrid,
|
||||||
|
IonCol,
|
||||||
|
IonRow,
|
||||||
|
IonLabel,
|
||||||
|
IonCard,
|
||||||
|
IonCardContent,
|
||||||
|
IonList,
|
||||||
|
IonSegment,
|
||||||
|
IonSegmentButton,
|
||||||
|
IonButton,
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
LibraryAccountPageComponent,
|
LibraryAccountPageComponent,
|
||||||
|
|||||||
@@ -22,6 +22,13 @@ export interface PAIAPatron {
|
|||||||
status?: PAIAPatronStatus;
|
status?: PAIAPatronStatus;
|
||||||
type?: string;
|
type?: string;
|
||||||
note?: string;
|
note?: string;
|
||||||
|
// HeBIS specific property (not in PAIA documentation)
|
||||||
|
name_details?: {
|
||||||
|
firstname?: string;
|
||||||
|
lastname?: string;
|
||||||
|
gender?: string;
|
||||||
|
title?: string;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum PAIAPatronStatus {
|
export enum PAIAPatronStatus {
|
||||||
@@ -88,3 +95,9 @@ export interface DocumentAction {
|
|||||||
action: 'cancel' | 'renew';
|
action: 'cancel' | 'renew';
|
||||||
doc: PAIADocument;
|
doc: PAIADocument;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface PAIADocumentVisualStatus {
|
||||||
|
color: 'warning' | 'success';
|
||||||
|
status: PAIADocumentStatus;
|
||||||
|
statusText: 'ordered' | 'ready';
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import {animate, style, transition, trigger} from '@angular/animations';
|
import {animate, style, transition, trigger} from '@angular/animations';
|
||||||
import {AsyncPipe} from '@angular/common';
|
import {AsyncPipe} from '@angular/common';
|
||||||
import {ChangeDetectionStrategy, Component, Input, inject} from '@angular/core';
|
import {ChangeDetectionStrategy, Component, Input, inject} from '@angular/core';
|
||||||
import {IonicModule} from '@ionic/angular';
|
import {IonButton} from '@ionic/angular/standalone';
|
||||||
import {MapService} from '@maplibre/ngx-maplibre-gl';
|
import {MapService} from '@maplibre/ngx-maplibre-gl';
|
||||||
import {map, delay, Subject, race, mergeWith} from 'rxjs';
|
import {map, delay, Subject, race, mergeWith} from 'rxjs';
|
||||||
import {IonIconModule} from 'src/app/util/ion-icon/ion-icon.module';
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'stapps-map-attribution',
|
selector: 'stapps-map-attribution',
|
||||||
@@ -12,7 +12,7 @@ import {IonIconModule} from 'src/app/util/ion-icon/ion-icon.module';
|
|||||||
styleUrl: './attribution.scss',
|
styleUrl: './attribution.scss',
|
||||||
standalone: true,
|
standalone: true,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [IonicModule, IonIconModule, AsyncPipe],
|
imports: [IonIconDirective, AsyncPipe, IonButton],
|
||||||
animations: [
|
animations: [
|
||||||
trigger('fade', [
|
trigger('fade', [
|
||||||
transition(':enter', [
|
transition(':enter', [
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import {AsyncPipe} from '@angular/common';
|
import {AsyncPipe} from '@angular/common';
|
||||||
import {ChangeDetectionStrategy, Component} from '@angular/core';
|
import {ChangeDetectionStrategy, Component} from '@angular/core';
|
||||||
import {IonicModule} from '@ionic/angular';
|
import {IonFabButton} from '@ionic/angular/standalone';
|
||||||
import {MapService} from '@maplibre/ngx-maplibre-gl';
|
import {MapService} from '@maplibre/ngx-maplibre-gl';
|
||||||
import {MapEventType} from 'maplibre-gl';
|
import {MapEventType} from 'maplibre-gl';
|
||||||
import {map, mergeMap, fromEventPattern, merge} from 'rxjs';
|
import {map, mergeMap, fromEventPattern, merge} from 'rxjs';
|
||||||
import {IonIconModule} from 'src/app/util/ion-icon/ion-icon.module';
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'stapps-compass-control',
|
selector: 'stapps-compass-control',
|
||||||
@@ -12,7 +12,7 @@ import {IonIconModule} from 'src/app/util/ion-icon/ion-icon.module';
|
|||||||
styleUrl: './compass-control.scss',
|
styleUrl: './compass-control.scss',
|
||||||
standalone: true,
|
standalone: true,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [AsyncPipe, IonicModule, IonIconModule],
|
imports: [AsyncPipe, IonIconDirective, IonFabButton],
|
||||||
})
|
})
|
||||||
export class CompassControlComponent {
|
export class CompassControlComponent {
|
||||||
transform = this.mapService.mapCreated$.pipe(
|
transform = this.mapService.mapCreated$.pipe(
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ import {
|
|||||||
OnDestroy,
|
OnDestroy,
|
||||||
ViewChild,
|
ViewChild,
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import {IonicModule} from '@ionic/angular';
|
import {IonFabButton} from '@ionic/angular/standalone';
|
||||||
import {MapService} from '@maplibre/ngx-maplibre-gl';
|
import {MapService} from '@maplibre/ngx-maplibre-gl';
|
||||||
import {FitBoundsOptions, GeolocateControl, GeolocateControlOptions} from 'maplibre-gl';
|
import {FitBoundsOptions, GeolocateControl, GeolocateControlOptions} from 'maplibre-gl';
|
||||||
import {Map as MapLibre} from 'maplibre-gl';
|
import {Map as MapLibre} from 'maplibre-gl';
|
||||||
import {BehaviorSubject} from 'rxjs';
|
import {BehaviorSubject} from 'rxjs';
|
||||||
import {IonIconModule} from 'src/app/util/ion-icon/ion-icon.module';
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
type WatchState = InstanceType<typeof GeolocateControl>['_watchState'];
|
type WatchState = InstanceType<typeof GeolocateControl>['_watchState'];
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ class CustomGeolocateControl extends GeolocateControl {
|
|||||||
styleUrl: './geolocate-control.scss',
|
styleUrl: './geolocate-control.scss',
|
||||||
standalone: true,
|
standalone: true,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [AsyncPipe, IonicModule, IonIconModule],
|
imports: [AsyncPipe, IonIconDirective, IonFabButton],
|
||||||
})
|
})
|
||||||
export class GeolocateControlComponent implements AfterContentInit, OnDestroy {
|
export class GeolocateControlComponent implements AfterContentInit, OnDestroy {
|
||||||
@Input() position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
@Input() position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import {ChangeDetectionStrategy, Component, HostBinding, Input, OnInit, Optional} from '@angular/core';
|
import {ChangeDetectionStrategy, Component, HostBinding, Input, OnInit, Optional} from '@angular/core';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {IonIconModule} from 'src/app/util/ion-icon/ion-icon.module';
|
|
||||||
import {MapIconDirective} from '../map-icon.directive';
|
import {MapIconDirective} from '../map-icon.directive';
|
||||||
import {Feature, Point} from 'geojson';
|
import {Feature, Point} from 'geojson';
|
||||||
import {SCFeatureProperties} from '../feature-collection.pipe';
|
import {SCFeatureProperties} from '../feature-collection.pipe';
|
||||||
import {MapDataProvider} from '../map-data.provider';
|
import {MapDataProvider} from '../map-data.provider';
|
||||||
import {DataRoutingService} from '../../data/data-routing.service';
|
import {DataRoutingService} from '../../data/data-routing.service';
|
||||||
import {AddWordBreakOpportunitiesPipe} from '../../../util/word-break-opportunities.pipe';
|
import {AddWordBreakOpportunitiesPipe} from '../../../util/word-break-opportunities.pipe';
|
||||||
|
import {IonButton, IonLabel} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'stapps-poi-marker',
|
selector: 'stapps-poi-marker',
|
||||||
@@ -14,7 +14,7 @@ import {AddWordBreakOpportunitiesPipe} from '../../../util/word-break-opportunit
|
|||||||
styleUrl: './poi-marker.scss',
|
styleUrl: './poi-marker.scss',
|
||||||
standalone: true,
|
standalone: true,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [IonicModule, IonIconModule, MapIconDirective, AddWordBreakOpportunitiesPipe],
|
imports: [IonIconDirective, MapIconDirective, AddWordBreakOpportunitiesPipe, IonLabel, IonButton],
|
||||||
})
|
})
|
||||||
export class PoiMarkerComponent implements OnInit {
|
export class PoiMarkerComponent implements OnInit {
|
||||||
@Input({required: true}) feature: Feature<Point, SCFeatureProperties>;
|
@Input({required: true}) feature: Feature<Point, SCFeatureProperties>;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import {Directive, HostListener, Input} from '@angular/core';
|
import {Directive, HostListener, Input} from '@angular/core';
|
||||||
import {SCPlaceWithoutReferences, SCThings, SCThingWithoutReferences} from '@openstapps/core';
|
import {SCPlaceWithoutReferences, SCThings, SCThingWithoutReferences} from '@openstapps/core';
|
||||||
import {Device} from '@capacitor/device';
|
import {Device} from '@capacitor/device';
|
||||||
import {ActionSheetController, ActionSheetOptions, ToastController} from '@ionic/angular';
|
import {ActionSheetController, ActionSheetOptions, ToastController} from '@ionic/angular/standalone';
|
||||||
import {TranslateService} from '@ngx-translate/core';
|
import {TranslateService} from '@ngx-translate/core';
|
||||||
import {ThingTranslateService} from '../../translation/thing-translate.service';
|
import {ThingTranslateService} from '../../translation/thing-translate.service';
|
||||||
import {Clipboard} from '@capacitor/clipboard';
|
import {Clipboard} from '@capacitor/clipboard';
|
||||||
|
|||||||
@@ -12,8 +12,8 @@
|
|||||||
* You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import type {AnimationBuilder} from '@ionic/angular';
|
import type {AnimationBuilder} from '@ionic/angular/standalone';
|
||||||
import {AnimationController} from '@ionic/angular';
|
import {AnimationController} from '@ionic/angular/standalone';
|
||||||
import type {AnimationOptions} from '@ionic/angular/common/providers/nav-controller';
|
import type {AnimationOptions} from '@ionic/angular/common/providers/nav-controller';
|
||||||
import {iosDuration, iosEasing, mdDuration, mdEasing} from 'src/app/animation/easings';
|
import {iosDuration, iosEasing, mdDuration, mdEasing} from 'src/app/animation/easings';
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import {ChangeDetectionStrategy, Component} from '@angular/core';
|
import {ChangeDetectionStrategy, Component} from '@angular/core';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {LngLatBoundsLike, MapLibreEvent} from 'maplibre-gl';
|
import {LngLatBoundsLike, MapLibreEvent} from 'maplibre-gl';
|
||||||
import {
|
import {
|
||||||
ControlComponent,
|
ControlComponent,
|
||||||
@@ -28,7 +27,6 @@ import {MediaQueryPipe} from '../../util/media-query.pipe';
|
|||||||
import {MapStyleDirective} from './map-style.directive';
|
import {MapStyleDirective} from './map-style.directive';
|
||||||
import {DataProvider} from '../data/data.provider';
|
import {DataProvider} from '../data/data.provider';
|
||||||
import {SCSearchFilter, SCThingType} from '@openstapps/core';
|
import {SCSearchFilter, SCThingType} from '@openstapps/core';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
|
||||||
import {DataModule} from '../data/data.module';
|
import {DataModule} from '../data/data.module';
|
||||||
import {AsyncPipe} from '@angular/common';
|
import {AsyncPipe} from '@angular/common';
|
||||||
import {GeolocateControlComponent} from './controls/geolocate-control.component';
|
import {GeolocateControlComponent} from './controls/geolocate-control.component';
|
||||||
@@ -40,6 +38,8 @@ import {BuildingMarkersComponent} from './elements/building-markers.component';
|
|||||||
import {PoiMarkersComponent} from './elements/poi-markers.component';
|
import {PoiMarkersComponent} from './elements/poi-markers.component';
|
||||||
import {AttributionComponent} from './controls/attribution.component';
|
import {AttributionComponent} from './controls/attribution.component';
|
||||||
import {filter, map} from 'rxjs';
|
import {filter, map} from 'rxjs';
|
||||||
|
import {IonButton, IonContent, IonLabel, IonRouterLink} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The main page of the map
|
* The main page of the map
|
||||||
@@ -65,8 +65,7 @@ import {filter, map} from 'rxjs';
|
|||||||
DataModule,
|
DataModule,
|
||||||
GeolocateControlComponent,
|
GeolocateControlComponent,
|
||||||
GeolocateControlDirective,
|
GeolocateControlDirective,
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
IonicModule,
|
|
||||||
MapAuto3dDirective,
|
MapAuto3dDirective,
|
||||||
MapComponent,
|
MapComponent,
|
||||||
MapSizeFixDirective,
|
MapSizeFixDirective,
|
||||||
@@ -78,6 +77,10 @@ import {filter, map} from 'rxjs';
|
|||||||
ThingPoiFeatureCollectionPipe,
|
ThingPoiFeatureCollectionPipe,
|
||||||
ThingPolygonFeatureCollectionPipe,
|
ThingPolygonFeatureCollectionPipe,
|
||||||
TranslateModule,
|
TranslateModule,
|
||||||
|
IonContent,
|
||||||
|
IonLabel,
|
||||||
|
IonRouterLink,
|
||||||
|
IonButton,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class MapPageComponent {
|
export class MapPageComponent {
|
||||||
|
|||||||
@@ -15,11 +15,10 @@
|
|||||||
import {ChangeDetectionStrategy, Component, HostBinding, Input, inject} from '@angular/core';
|
import {ChangeDetectionStrategy, Component, HostBinding, Input, inject} from '@angular/core';
|
||||||
import {RouterLink} from '@angular/router';
|
import {RouterLink} from '@angular/router';
|
||||||
import {ControlComponent, MapComponent, MarkerComponent} from '@maplibre/ngx-maplibre-gl';
|
import {ControlComponent, MapComponent, MarkerComponent} from '@maplibre/ngx-maplibre-gl';
|
||||||
import {AnimationController, IonicModule} from '@ionic/angular';
|
import {AnimationController, IonRouterLink} from '@ionic/angular/standalone';
|
||||||
import {GeoNavigationDirective} from './geo-navigation.directive';
|
import {GeoNavigationDirective} from './geo-navigation.directive';
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
|
||||||
import {MapAuto3dDirective} from './map-auto-3d.directive';
|
import {MapAuto3dDirective} from './map-auto-3d.directive';
|
||||||
import {MediaQueryPipe} from 'src/app/util/media-query.pipe';
|
import {MediaQueryPipe} from 'src/app/util/media-query.pipe';
|
||||||
import {MapStyleDirective} from './map-style.directive';
|
import {MapStyleDirective} from './map-style.directive';
|
||||||
@@ -31,6 +30,7 @@ import {BuildingMarkersComponent} from './elements/building-markers.component';
|
|||||||
import {ThingBoundsPipe} from './thing-bounds.pipe';
|
import {ThingBoundsPipe} from './thing-bounds.pipe';
|
||||||
import {AttributionComponent} from './controls/attribution.component';
|
import {AttributionComponent} from './controls/attribution.component';
|
||||||
import {mapMaximizeAnimation} from './map-maximize-animation';
|
import {mapMaximizeAnimation} from './map-maximize-animation';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The map widget (needs a container with explicit size)
|
* The map widget (needs a container with explicit size)
|
||||||
@@ -47,8 +47,7 @@ import {mapMaximizeAnimation} from './map-maximize-animation';
|
|||||||
CommonModule,
|
CommonModule,
|
||||||
ControlComponent,
|
ControlComponent,
|
||||||
GeoNavigationDirective,
|
GeoNavigationDirective,
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
IonicModule,
|
|
||||||
MapAuto3dDirective,
|
MapAuto3dDirective,
|
||||||
MapComponent,
|
MapComponent,
|
||||||
MapSizeFixDirective,
|
MapSizeFixDirective,
|
||||||
@@ -61,6 +60,7 @@ import {mapMaximizeAnimation} from './map-maximize-animation';
|
|||||||
ThingPoiFeatureCollectionPipe,
|
ThingPoiFeatureCollectionPipe,
|
||||||
ThingPolygonFeatureCollectionPipe,
|
ThingPolygonFeatureCollectionPipe,
|
||||||
TranslateModule,
|
TranslateModule,
|
||||||
|
IonRouterLink,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class MapWidgetComponent {
|
export class MapWidgetComponent {
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import {APP_BASE_HREF, CommonModule, Location, LocationStrategy, PathLocationStr
|
|||||||
import {ComponentFixture, TestBed} from '@angular/core/testing';
|
import {ComponentFixture, TestBed} from '@angular/core/testing';
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {ChildrenOutletContexts, RouterModule, UrlSerializer} from '@angular/router';
|
import {ChildrenOutletContexts, RouterModule, UrlSerializer} from '@angular/router';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {SCFacet, SCThingType} from '@openstapps/core';
|
import {SCFacet, SCThingType} from '@openstapps/core';
|
||||||
import {ContextMenuComponent} from './context-menu.component';
|
import {ContextMenuComponent} from './context-menu.component';
|
||||||
@@ -26,6 +25,7 @@ import {ContextMenuService} from './context-menu.service';
|
|||||||
import {FilterContext, SortContext} from './context-type';
|
import {FilterContext, SortContext} from './context-type';
|
||||||
import {Component} from '@angular/core';
|
import {Component} from '@angular/core';
|
||||||
import {By} from '@angular/platform-browser';
|
import {By} from '@angular/platform-browser';
|
||||||
|
import {provideIonicAngular} from '@ionic/angular/standalone';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
template: `<ion-content id="foo"></ion-content><stapps-context contentId="foo"></stapps-context> `,
|
template: `<ion-content id="foo"></ion-content><stapps-context contentId="foo"></stapps-context> `,
|
||||||
@@ -40,6 +40,7 @@ describe('ContextMenuComponent', async () => {
|
|||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
declarations: [ContextMenuComponent, ContextMenuContainerComponent],
|
declarations: [ContextMenuComponent, ContextMenuContainerComponent],
|
||||||
providers: [
|
providers: [
|
||||||
|
provideIonicAngular(),
|
||||||
ChildrenOutletContexts,
|
ChildrenOutletContexts,
|
||||||
Location,
|
Location,
|
||||||
UrlSerializer,
|
UrlSerializer,
|
||||||
@@ -49,7 +50,6 @@ describe('ContextMenuComponent', async () => {
|
|||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
FormsModule,
|
FormsModule,
|
||||||
IonicModule.forRoot(),
|
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
CommonModule,
|
CommonModule,
|
||||||
SettingsModule,
|
SettingsModule,
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
</ion-list>
|
</ion-list>
|
||||||
<!-- Filter Context -->
|
<!-- Filter Context -->
|
||||||
@if (filterOption) {
|
@if (filterOption) {
|
||||||
<div class="context-filter">
|
<form class="context-filter">
|
||||||
<ion-list-header>
|
<ion-list-header>
|
||||||
<ion-icon name="filter_list"></ion-icon>
|
<ion-icon name="filter_list"></ion-icon>
|
||||||
<ion-title>{{ 'menu.context.filter.title' | translate | titlecase }}</ion-title>
|
<ion-title>{{ 'menu.context.filter.title' | translate | titlecase }}</ion-title>
|
||||||
@@ -80,6 +80,7 @@
|
|||||||
<ion-checkbox
|
<ion-checkbox
|
||||||
[(ngModel)]="bucket.checked"
|
[(ngModel)]="bucket.checked"
|
||||||
(ngModelChange)="filterChanged()"
|
(ngModelChange)="filterChanged()"
|
||||||
|
[name]="facet.onlyOnType + '-' + facet.field + '-' + bucket.key"
|
||||||
[value]="{
|
[value]="{
|
||||||
field: facet.field,
|
field: facet.field,
|
||||||
value: bucket.key,
|
value: bucket.key,
|
||||||
@@ -107,7 +108,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</ion-list>
|
</ion-list>
|
||||||
}
|
}
|
||||||
</div>
|
</form>
|
||||||
}
|
}
|
||||||
</ion-content>
|
</ion-content>
|
||||||
</ion-menu>
|
</ion-menu>
|
||||||
|
|||||||
@@ -17,12 +17,28 @@ import {NgModule} from '@angular/core';
|
|||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {RouterModule} from '@angular/router';
|
import {RouterModule} from '@angular/router';
|
||||||
import {LayoutModule} from '@angular/cdk/layout';
|
import {LayoutModule} from '@angular/cdk/layout';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {SettingsModule} from '../settings/settings.module';
|
import {SettingsModule} from '../settings/settings.module';
|
||||||
import {ContextMenuComponent} from './context/context-menu.component';
|
import {ContextMenuComponent} from './context/context-menu.component';
|
||||||
import {ContextMenuService} from './context/context-menu.service';
|
import {ContextMenuService} from './context/context-menu.service';
|
||||||
import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
import {
|
||||||
|
IonButton,
|
||||||
|
IonCheckbox,
|
||||||
|
IonContent,
|
||||||
|
IonItem,
|
||||||
|
IonLabel,
|
||||||
|
IonList,
|
||||||
|
IonListHeader,
|
||||||
|
IonMenu,
|
||||||
|
IonMenuToggle,
|
||||||
|
IonRadio,
|
||||||
|
IonRadioGroup,
|
||||||
|
IonTabBar,
|
||||||
|
IonTabButton,
|
||||||
|
IonTitle,
|
||||||
|
IonToolbar,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Menu module
|
* Menu module
|
||||||
@@ -32,13 +48,27 @@ import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
|
|||||||
exports: [ContextMenuComponent],
|
exports: [ContextMenuComponent],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
IonIconModule,
|
IonIconDirective,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
IonicModule.forRoot(),
|
|
||||||
RouterModule,
|
RouterModule,
|
||||||
SettingsModule,
|
SettingsModule,
|
||||||
TranslateModule.forChild(),
|
TranslateModule.forChild(),
|
||||||
LayoutModule,
|
LayoutModule,
|
||||||
|
IonLabel,
|
||||||
|
IonTabButton,
|
||||||
|
IonTabBar,
|
||||||
|
IonMenu,
|
||||||
|
IonMenuToggle,
|
||||||
|
IonButton,
|
||||||
|
IonCheckbox,
|
||||||
|
IonItem,
|
||||||
|
IonList,
|
||||||
|
IonListHeader,
|
||||||
|
IonTitle,
|
||||||
|
IonRadio,
|
||||||
|
IonRadioGroup,
|
||||||
|
IonContent,
|
||||||
|
IonToolbar,
|
||||||
],
|
],
|
||||||
providers: [ContextMenuService],
|
providers: [ContextMenuService],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -17,15 +17,49 @@ import {RootLinkDirective} from './root-link.directive';
|
|||||||
import {NavigationComponent} from './navigation.component';
|
import {NavigationComponent} from './navigation.component';
|
||||||
import {TabsComponent} from './tabs.component';
|
import {TabsComponent} from './tabs.component';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {IonicModule} from '@ionic/angular';
|
|
||||||
import {IonIconModule} from '../../../util/ion-icon/ion-icon.module';
|
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {RouterModule} from '@angular/router';
|
import {RouterModule} from '@angular/router';
|
||||||
import {OfflineNoticeComponent} from './offline-notice.component';
|
import {OfflineNoticeComponent} from './offline-notice.component';
|
||||||
|
import {
|
||||||
|
IonButton,
|
||||||
|
IonButtons,
|
||||||
|
IonContent,
|
||||||
|
IonHeader,
|
||||||
|
IonImg,
|
||||||
|
IonLabel,
|
||||||
|
IonList,
|
||||||
|
IonMenu,
|
||||||
|
IonMenuToggle,
|
||||||
|
IonRouterOutlet,
|
||||||
|
IonSplitPane,
|
||||||
|
IonTabBar,
|
||||||
|
IonTabButton,
|
||||||
|
IonToolbar,
|
||||||
|
} from '@ionic/angular/standalone';
|
||||||
|
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [RootLinkDirective, NavigationComponent, TabsComponent, OfflineNoticeComponent],
|
declarations: [RootLinkDirective, NavigationComponent, TabsComponent, OfflineNoticeComponent],
|
||||||
imports: [CommonModule, IonicModule, IonIconModule, TranslateModule, RouterModule],
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
IonIconDirective,
|
||||||
|
TranslateModule,
|
||||||
|
RouterModule,
|
||||||
|
IonLabel,
|
||||||
|
IonTabBar,
|
||||||
|
IonTabButton,
|
||||||
|
IonMenuToggle,
|
||||||
|
IonButton,
|
||||||
|
IonRouterOutlet,
|
||||||
|
IonList,
|
||||||
|
IonContent,
|
||||||
|
IonImg,
|
||||||
|
IonButtons,
|
||||||
|
IonHeader,
|
||||||
|
IonMenu,
|
||||||
|
IonToolbar,
|
||||||
|
IonSplitPane,
|
||||||
|
],
|
||||||
exports: [TabsComponent, RootLinkDirective, NavigationComponent],
|
exports: [TabsComponent, RootLinkDirective, NavigationComponent],
|
||||||
})
|
})
|
||||||
export class NavigationModule {}
|
export class NavigationModule {}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user