Updated map alliance docs & ci/cd
Some checks failed
Build Website / Tag Version (push) Blocked by required conditions
Build Functions / Build NPM Project (push) Successful in 15s
Build Website / Build NPM Project (push) Has been cancelled

This commit is contained in:
Zakary Timson 2023-12-06 16:25:50 -05:00
parent 9f22092097
commit b2833febc0
16 changed files with 173 additions and 8590 deletions

View File

@ -1,67 +0,0 @@
version: 2
jobs:
build:
docker:
- image: circleci/node:12-browsers
working_directory: ~/repo
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
- v1-dependencies-
- run:
name: Install Dependancies
command: yarn install
- save_cache:
key: v1-dependencies-{{ checksum "package.json" }}
paths:
- node_modules
- run:
name: Build
command: yarn build --prod
- persist_to_workspace:
root: ~/repo
paths:
- node_modules
- dist/MapAlliance
- store_artifacts:
path: dist/MapAlliance
deploy:
docker:
- image: circleci/node:10.9-browsers
working_directory: ~/repo
steps:
- checkout
- attach_workspace:
at: ./
- run:
name: Deploy
command: yarn deploy
workflows:
version: 2
build_and_deply:
jobs:
- build
- deploy:
requires:
- build
filters:
branches:
only: master

24
.github/workflows/functions.yaml vendored Normal file
View File

@ -0,0 +1,24 @@
name: Build Functions
run-name: Build Functions
on:
push:
paths:
- 'functions/**'
jobs:
build:
name: Build NPM Project
runs-on: ubuntu-latest
container: node
steps:
- name: Clone Repository
uses: ztimson/actions/clone@develop
- name: Install Dependencies
run: npm i
working-directory: functions
- name: Build Project
run: npm run build
working-directory: functions

47
.github/workflows/website.yaml vendored Normal file
View File

@ -0,0 +1,47 @@
name: Build Website
run-name: Build Website
on:
push:
paths-ignore:
- 'functions/**'
jobs:
build:
name: Build NPM Project
runs-on: ubuntu-latest
container: node
steps:
- name: Clone Repository
uses: ztimson/actions/clone@develop
- name: Install Dependencies
run: npm i
- name: Build Project
run: npm run build
- name: Upload Artifacts
if: ${{inputs.artifacts}} != "false"
uses: actions/upload-artifact@v3
with:
name: website
path: dist
retention-days: 7
tag:
name: Tag Version
needs: build
runs-on: ubuntu-latest
container: node
steps:
- name: Clone Repository
uses: ztimson/actions/clone@develop
- name: Get Version Number
run: echo "VERSION=$(cat package.json | grep version | grep -Eo ':.+' | grep -Eo '[[:alnum:]\.\/\-]+')" >> $GITHUB_ENV
- name: Tag Version
uses: ztimson/actions/tag@develop
with:
tag: ${{env.VERSION}}

2
.gitignore vendored
View File

@ -8,7 +8,7 @@
/bazel-out
# dependencies
/node_modules
node_modules
# profiling files
chrome-profiler-events.json

11
LICENSE Normal file
View File

@ -0,0 +1,11 @@
Copyright (c) 2023 Zakary Timson
All Rights Reserved.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/dist" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -1,27 +1,80 @@
# MapAlliance
<!-- Header -->
<div id="top" align="center">
<br />
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.0.4.
<!-- Logo -->
<img src="./src/assets/images/logo.png" alt="Logo" width="200" height="200">
## Development server
<!-- Title -->
### Template
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
<!-- Description -->
Map Collaboration Tool
## Code scaffolding
<!-- Repo badges -->
[![Version](https://img.shields.io/badge/dynamic/json.svg?label=Version&style=for-the-badge&url=https://git.zakscode.com/api/v1/repos/ztimson/map-alliance/tags&query=$[0].name)](https://git.zakscode.com/ztimson/map-alliance/tags)
[![Pull Requests](https://img.shields.io/badge/dynamic/json.svg?label=Pull%20Requests&style=for-the-badge&url=https://git.zakscode.com/api/v1/repos/ztimson/map-alliance&query=open_pr_counter)](https://git.zakscode.com/ztimson/map-alliance/pulls)
[![Issues](https://img.shields.io/badge/dynamic/json.svg?label=Issues&style=for-the-badge&url=https://git.zakscode.com/api/v1/repos/ztimson/map-alliance&query=open_issues_count)](https://git.zakscode.com/ztimson/map-alliance/issues)
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
<!-- Links -->
## Build
---
<div>
<a href="https://git.zakscode.com/ztimson/map-alliance/releases" target="_blank">Release Notes</a>
<a href="https://git.zakscode.com/ztimson/map-alliance/issues/new?template=.github%2fissue_template%2fbug.md" target="_blank">Report a Bug</a>
<a href="https://git.zakscode.com/ztimson/map-alliance/issues/new?template=.github%2fissue_template%2fenhancement.md" target="_blank">Request a Feature</a>
</div>
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
---
</div>
## Running unit tests
## Table of Contents
- [Map Alliance](#top)
- [About](#about)
- [Demo](#demo)
- [Built With](#built-with)
- [Setup](#setup)
- [Development](#development)
- [License](#license)
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
## About
## Running end-to-end tests
Map Alliance is a map editing & collaboration tool. It provides several tile sets from multiple satellite image providers. From there users can
markup the map with shapes & notations.
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
Maps are saved to a unique URL. To access or share any map, you just need to share the URL to your map. Anyone viewing the map will have their position synced & displayed on the map.
## Further help
This was built using Angular & Firebase's Firestore.
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
### Demo
Website: https://maps.zakscode.com
### Built With
[![Angular](https://img.shields.io/badge/Angular-DD0031?style=for-the-badge&logo=angular)](https://angular.io/)
[![Firebase](https://img.shields.io/badge/Firebase-FFFFFF?style=for-the-badge&logo=firebase)](https://firebase.google.com/)
[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge&logo=typescript&logoColor=white)](https://typescriptlang.org/)
## Setup
<details>
<summary>
<h3 id="development" style="display: inline">
Development
</h3>
</summary>
#### Prerequisites
- [Node.js](https://nodejs.org/en/download)
#### Instructions
1. Install the dependencies: `npm install`
2. Start the Angular server: `npm run start`
3. Open [http://localhost:4200](http://localhost:4200)
</details>
## License
Copyright © 2023 Zakary Timson | All Rights Reserved
See the [license](./LICENSE) for more information.

View File

@ -21,7 +21,7 @@
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"tsConfig": "tsconfig.json",
"aot": false,
"assets": [
"src/assets",
@ -30,7 +30,6 @@
"styles": [
"./node_modules/bootstrap-scss/bootstrap.scss",
"./node_modules/leaflet/dist/leaflet.css",
"src/material-theme.scss",
"src/styles.scss"
],
"scripts": [
@ -84,12 +83,6 @@
"browserTarget": "MapAlliance:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "MapAlliance:build"
}
}
}
}

View File

@ -1,8 +0,0 @@
## Compiled JavaScript files
**/*.js
**/*.js.map
# Typescript v1 declaration files
typings/
node_modules/

View File

@ -1,115 +0,0 @@
{
"rules": {
// -- Strict errors --
// These lint rules are likely always a good idea.
// Force function overloads to be declared together. This ensures readers understand APIs.
"adjacent-overload-signatures": true,
// Do not allow the subtle/obscure comma operator.
"ban-comma-operator": true,
// Do not allow internal modules or namespaces . These are deprecated in favor of ES6 modules.
"no-namespace": true,
// Do not allow parameters to be reassigned. To avoid bugs, developers should instead assign new values to new vars.
"no-parameter-reassignment": true,
// Force the use of ES6-style imports instead of /// <reference path=> imports.
"no-reference": true,
// Do not allow type assertions that do nothing. This is a big warning that the developer may not understand the
// code currently being edited (they may be incorrectly handling a different type case that does not exist).
"no-unnecessary-type-assertion": true,
// Disallow nonsensical label usage.
"label-position": true,
// Disallows the (often typo) syntax if (var1 = var2). Replace with if (var2) { var1 = var2 }.
"no-conditional-assignment": true,
// Disallows constructors for primitive types (e.g. new Number('123'), though Number('123') is still allowed).
"no-construct": true,
// Do not allow super() to be called twice in a constructor.
"no-duplicate-super": true,
// Do not allow the same case to appear more than once in a switch block.
"no-duplicate-switch-case": true,
// Do not allow a variable to be declared more than once in the same block. Consider function parameters in this
// rule.
"no-duplicate-variable": [true, "check-parameters"],
// Disallows a variable definition in an inner scope from shadowing a variable in an outer scope. Developers should
// instead use a separate variable name.
"no-shadowed-variable": true,
// Empty blocks are almost never needed. Allow the one general exception: empty catch blocks.
"no-empty": [true, "allow-empty-catch"],
// Functions must either be handled directly (e.g. with a catch() handler) or returned to another function.
// This is a major source of errors in Cloud Functions and the team strongly recommends leaving this rule on.
"no-floating-promises": true,
// Do not allow any imports for modules that are not in package.json. These will almost certainly fail when
// deployed.
"no-implicit-dependencies": true,
// The 'this' keyword can only be used inside of classes.
"no-invalid-this": true,
// Do not allow strings to be thrown because they will not include stack traces. Throw Errors instead.
"no-string-throw": true,
// Disallow control flow statements, such as return, continue, break, and throw in finally blocks.
"no-unsafe-finally": true,
// Expressions must always return a value. Avoids common errors like const myValue = functionReturningVoid();
"no-void-expression": [true, "ignore-arrow-function-shorthand"],
// Disallow duplicate imports in the same file.
"no-duplicate-imports": true,
// -- Strong Warnings --
// These rules should almost never be needed, but may be included due to legacy code.
// They are left as a warning to avoid frustration with blocked deploys when the developer
// understand the warning and wants to deploy anyway.
// Warn when an empty interface is defined. These are generally not useful.
"no-empty-interface": {"severity": "warning"},
// Warn when an import will have side effects.
"no-import-side-effect": {"severity": "warning"},
// Warn when variables are defined with var. Var has subtle meaning that can lead to bugs. Strongly prefer const for
// most values and let for values that will change.
"no-var-keyword": {"severity": "warning"},
// Prefer === and !== over == and !=. The latter operators support overloads that are often accidental.
"triple-equals": {"severity": "warning"},
// Warn when using deprecated APIs.
"deprecation": {"severity": "warning"},
// -- Light Warnings --
// These rules are intended to help developers use better style. Simpler code has fewer bugs. These would be "info"
// if TSLint supported such a level.
// prefer for( ... of ... ) to an index loop when the index is only used to fetch an object from an array.
// (Even better: check out utils like .map if transforming an array!)
"prefer-for-of": {"severity": "warning"},
// Warns if function overloads could be unified into a single function with optional or rest parameters.
"unified-signatures": {"severity": "warning"},
// Prefer const for values that will not change. This better documents code.
"prefer-const": {"severity": "warning"},
// Multi-line object literals and function calls should have a trailing comma. This helps avoid merge conflicts.
"trailing-comma": {"severity": "warning"}
},
"defaultSeverity": "error"
}

View File

@ -24,8 +24,7 @@
<meta name="twitter:image" content="/assets/icons/icon-512x512.png">
<link rel="icon" type="image/x-icon" href="/assets/images/logo.png">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500|Material+Icons" rel="stylesheet">
<link rel="manifest" href="manifest.webmanifest">
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDFtvCY6nH_HUoTBNf_5b-E8nRweSLYtxE" async defer></script>

View File

@ -1,11 +0,0 @@
@import '../node_modules/@angular/material/theming';
@include mat-core();
$custom-theme-primary: mat-palette($mat-blue, 600);
$custom-theme-accent: mat-palette($mat-red, 600);
$custom-theme-warn: mat-palette($mat-orange, 600);
$custom-theme: mat-light-theme($custom-theme-primary, $custom-theme-accent, $custom-theme-warn);
@include angular-material-theme($custom-theme);

View File

@ -1,3 +1,15 @@
@import '../node_modules/@angular/material/theming';
@include mat-core();
$custom-theme-primary: mat-palette($mat-blue, 600);
$custom-theme-accent: mat-palette($mat-red, 600);
$custom-theme-warn: mat-palette($mat-orange, 600);
$custom-theme: mat-light-theme($custom-theme-primary, $custom-theme-accent, $custom-theme-warn);
@include angular-material-theme($custom-theme);
:focus {
outline: none !important;
}

View File

@ -1,15 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"resolveJsonModule": true,
"types": []
},
"include": [
"src/**/*.ts"
],
"exclude": [
"src/test.ts",
"src/**/*.spec.ts"
]
}

View File

@ -2,15 +2,14 @@
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"outDir": "./out-tsc/app",
"resolveJsonModule": true,
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"module": "esnext",
"moduleResolution": "node",
"experimentalDecorators": true,
"module": "esnext",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"typeRoots": [
@ -19,6 +18,13 @@
"lib": [
"es2018",
"dom"
],
"include": [
"src/**/*.ts"
],
"exclude": [
"src/test.ts",
"src/**/*.spec.ts"
]
}
}

8334
yarn.lock

File diff suppressed because it is too large Load Diff