Merge remote-tracking branch 'origin/master' into RebeccaBranch

build-validation
Rebecca Hollis 5 years ago
commit 4c8dd34f03

1772
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -9,7 +9,7 @@
"url": "git://github.com/username/repository.git"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"test": "mocha -r ts-node/register tests/**/*-test.ts",
"clean": "gulp clean",
"build": "gulp",
"start": "npm run build && electron ./build",
@ -42,15 +42,21 @@
"bootstrap": "^4.5.3"
},
"devDependencies": {
"@types/jquery": "^3.5.1",
"@types/mocha": "^8.0.3",
"@types/chai": "^4.2.14",
"devtron": "^1.4.0",
"electron": "^7.2.4",
"electron-settings": "^3.0.7",
"electron-shortcut-normalizer": "^1.0.0",
"electron-packager": "^15.1.0",
"@types/jquery": "^3.5.1",
"gulp": "^4.0.2",
"gulp-typescript": "^6.0.0-alpha.1",
"gulp-exec": "^5.0.0",
"del": "^6.0.0"
"del": "^6.0.0",
"chai": "^4.2.0",
"mocha": "^8.2.0",
"nyc": "^15.1.0",
"ts-node": "^9.0.0"
}
}

@ -1,3 +1,3 @@
{
"pdf": "pdf-icon.svg"
".pdf": "pdf-icon.svg"
}

@ -1,25 +1,28 @@
<!doctype html>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<head>
<meta charset="UTF-8">
<title>Landing page</title>
<link rel="stylesheet" type="text/css" href="styles/bootstrap.css">
<link rel="stylesheet" type="text/css" href="styles/default.css">
<!-- <meta http-equiv="Content-Security-Policy" content="script-src 'self';">-->
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="styles/bootstrap.css">
</head>
<body>
<div class="h2">
Welcome to the landing page for JDSfaulkner resources
</div>
<div>
<ul class="list-unstyled d-inline-block debug-green" id="container"></ul>
<title>Resources</title>
</head>
<body>
<h1>Resources</h1>
</body>
<!-- Option 2: jQuery, Popper.js, and Bootstrap JS
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script>
-->
<script>let $ = require('jquery');</script>
<script>require('popper.js')</script>
<script>require('bootstrap')</script>
<br>
<br>
<a href="second.html">Go to the second page</a>
<br><br>
</div>
</body>
<script>let $ = require('jquery');</script>
<script>require('popper.js')</script>
<script>require('bootstrap')</script>
<script src="scripts/index_app.js"></script>
</html>

@ -4,8 +4,9 @@ const factory = require(path.join(appDir, 'viewFactory'))
function loadDocuments() {
let container = document.querySelector("#container");
let fileName = "voicemail-and-vacation-responder.pdf";
factory.buildFileCard(fileName, container, true)
factory.buildDefaultWebCards(container)
factory.buildFileCard(fileName, container, true);
factory.buildDefaultWebCards(container);
}
loadDocuments();

@ -0,0 +1,3 @@
function loadTSTarget(name) {
require(`../../util/${name}`);
}

@ -3,11 +3,32 @@
<head>
<meta charset="UTF-8">
<title>Landing page</title>
<link rel="stylesheet" type="text/css" href="styles/default.css">
<link rel="stylesheet" type="text/css" href="styles/gridutil.css">
</head>
<body>
Welcome to the second page
<br>
<br>
<a href="index.html">Testing first Page</a>
<body style="display:inline-block;">
<div class="grid3">
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
</div>
<br/>
<div class="grid3">
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
<div class="grid-item">CONTENT</div>
</div>
</body>
<script src="scripts/tsUtil.js"></script>
<script>loadTSTarget("gridUtil.js")</script>
</html>

@ -0,0 +1,10 @@
.grid3{
border: 1px solid red;
display: inline-block;
overflow: hidden;
}
.grid-item{
position: absolute;
z-index: 3;
}

@ -10,18 +10,38 @@ export class Configurator {
getFileExtensionToImageMap(): Object {
if (!fileExtensionToImage) {
fileExtensionToImage = this.loadConfigMap("file-extensions.json");
fileExtensionToImage = this.loadAppConfig("file-extensions.json");
}
return fileExtensionToImage;
};
loadConfigMap(fileName: string): object {
loadAppConfig(fileName: string): object {
let filePath = this.fileutils.getPathToConfig(fileName);
let fileBuffer = fs.readFileSync(filePath);
let content = fileBuffer.toString('utf8')
return JSON.parse(content)
}
loadUserConfig(fileName: string): object {
let userConfigPath = this.fileutils.getPathToUserDir(fileName);
if (!fs.existsSync(userConfigPath)) {
return {};
} else {
let content = fs.readFileSync(userConfigPath);
return JSON.parse(content);
}
}
saveUserConfig(fileName: string, obj: any) {
let userConfigPath = this.fileutils.getPathToUserDir(fileName);
let content = JSON.stringify(obj);
fs.writeFile(userConfigPath, content, (err) => {
if (err) {
console.log(err);
throw err;
}
});
}
}
@ -47,7 +67,20 @@ export class FileUtils {
}
getFileExtension(fileName: string): string {
return fileName.substr(fileName.lastIndexOf(".")+1)
return path.extname(fileName);
}
getPathToUserDir(fileName: string): string {
let dirPath = path.join(__dirname, "..", "user");
let filePath = path.join(dirPath, fileName);
this.touchDir(dirPath);
return filePath;
}
touchDir(dirPath: string) {
if (!fs.existsSync(dirPath)) {
fs.mkdirSync(dirPath);
}
}
}

@ -0,0 +1,70 @@
function arrangeGrids() {
let $ = require('jquery');
let grids = $(".grid3");
for (let i = 0, l = grids.length; i < l; i++) {
let grid = grids[i];
arrangeGrid(grid, 3);
}
}
function arrangeGrid(grid: HTMLElement, width: number) {
let children = grid.children;
for (let i = 0, l = children.length; i < l; i++) {
if (0 === i) {
placeZero(children[i] as HTMLElement);
continue;
}
let sibling = children[i - 1];
let child = children[i];
if (0 === (i % width)) {
let rowBegin = children[i - width];
placeUnder(rowBegin as HTMLElement, child as HTMLElement, 15);
} else {
placeRight(sibling as HTMLElement, child as HTMLElement, 15);
}
}
}
function placeZero(anchor: HTMLElement) {
let posX = anchor.offsetLeft;
let posY = anchor.offsetTop;
anchor.style.left = `${posX}px`
anchor.style.top = `${posY}px`;
}
function placeRight(anchor: HTMLElement, satellite: HTMLElement, spacing: number) {
let posX = anchor.offsetLeft;
let posY = anchor.offsetTop;
let finalX = posX + anchor.clientWidth + spacing;
let finalY = posY;
satellite.style.left = `${finalX}px`
satellite.style.top = `${finalY}px`;
let childX = finalX + satellite.clientWidth - satellite.parentElement.offsetLeft;
if (childX > satellite.parentElement.clientWidth) {
console.log(`setting parent width to ${childX}`)
satellite.parentElement.style.width = `${childX}px`;
}
}
function placeUnder(anchor: HTMLElement, satellite: HTMLElement, spacing: number) {
let posX = anchor.offsetLeft;
let posY = anchor.offsetTop;
let finalX = posX;
let finalY = posY + anchor.clientHeight + spacing;
satellite.style.left = `${finalX}px`
satellite.style.top = `${finalY}px`;
let childY = finalY + satellite.clientHeight - satellite.parentElement.offsetTop;
if (childY > satellite.parentElement.clientHeight) {
console.log(`setting parent height to ${childY}`)
satellite.parentElement.style.height = `${childY}px`;
}
}
arrangeGrids();

@ -0,0 +1,20 @@
export module HTMLUtil {
export function getElementXinParent(elem: HTMLElement, parent: HTMLElement): number {
let styleLeft = elem.style.left;
if (0 === styleLeft.length) {
return parent.offsetLeft;
} else {
return parent.offsetLeft+parseInt(styleLeft);
}
}
export function getElementYInParent(elem: HTMLElement, parent: HTMLElement): number {
let styleTop = elem.style.top;
if (0 === styleTop.length) {
return parent.offsetTop;
} else {
return parent.offsetTop + parseInt(styleTop);
}
}
}

@ -19,6 +19,14 @@ export class CardModel {
}
export function buildFileCard(filePath: string, elem: Element, append: boolean = false, $: any = require('jquery')) {
let conf = config.loadUserConfig("user.json");
console.log(conf);
let links = conf['links'];
if (!links) {
links = [];
}
links.push("www.fark.com");
config.saveUserConfig("user.json", conf);
let model = new CardModel(getImagePathFromDocumentName(filePath), fileNameToPrettyString(filePath));
loadTemplateSingle("file-card.mustache", model, (content: string, id: string) => {
let snip = $(content);
@ -38,7 +46,7 @@ export function buildFileCard(filePath: string, elem: Element, append: boolean =
}
export function buildDefaultWebCards(elem: Element) {
let userPrefs = config.loadConfigMap("user.json");
let userPrefs = config.loadAppConfig("user.json");
let links = userPrefs['default-links'];
let $ = require('jquery')
for (let i = 0, l = links.length; i < l; i++) {
@ -48,8 +56,6 @@ export function buildDefaultWebCards(elem: Element) {
}
export function buildWebCard(urlText: string, elem: Element, append: boolean = false, $: any = require('jquery')) {
console.log("adding " + urlText)
let url = new URL(urlText);
let favicon = WebUtils.getFaviconUrl(url);
let model = new CardModel(favicon, urlText);
@ -65,14 +71,12 @@ export function buildWebCard(urlText: string, elem: Element, append: boolean = f
$.get(url.toString(), (data, status) => {
try {
if ('success' === status) {
console.log(`get ${url.toString()} was successful`);
resolve($(data).filter('title').text());
}
} catch (a) {
console.error("Error while attempting to fetch page title", a)
}
}).fail((failure) => {
console.log(`get ${url.toString()} failed ${failure}`)
reject(failure);
})
}).then((value: string) => {
@ -104,7 +108,9 @@ function fileNameToPrettyString(fileName: string): string {
}
function getImagePathFromDocumentName(name: string): string {
return fu.getPathToImage(config.getFileExtensionToImageMap()[fu.getFileExtension(name)])
let ext = fu.getFileExtension(name);
let thumbnail = config.getFileExtensionToImageMap()[ext];
return fu.getPathToImage(thumbnail);
}
function launchDocument(filename: string) {

@ -0,0 +1,5 @@
describe('default', ()=>{
it('print', ()=>{
console.log("okay?")
})
})
Loading…
Cancel
Save