Templates to pug, simplify script

...and link to the repo from the front page.
This commit is contained in:
Daniel J. Summers 2017-07-31 20:25:22 -05:00
parent 7462c816f5
commit 1cca89eb40
13 changed files with 510 additions and 322 deletions

350
package-lock.json generated
View File

@ -1,5 +1,5 @@
{
"name": "pwj-vue",
"name": "djs-consulting",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
@ -43,6 +43,21 @@
}
}
},
"acorn-globals": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz",
"integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=",
"requires": {
"acorn": "4.0.13"
},
"dependencies": {
"acorn": {
"version": "4.0.13",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
"integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c="
}
}
},
"acorn-jsx": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
@ -104,7 +119,6 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
"integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
"dev": true,
"requires": {
"kind-of": "3.2.2",
"longest": "1.0.1",
@ -120,8 +134,7 @@
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
},
"ansi-escapes": {
"version": "1.4.0",
@ -235,6 +248,11 @@
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
},
"asn1": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
@ -1496,7 +1514,6 @@
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
"integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
"dev": true,
"requires": {
"align-text": "0.1.4",
"lazy-cache": "1.0.4"
@ -1542,6 +1559,14 @@
"supports-color": "4.2.1"
}
},
"character-parser": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
"integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=",
"requires": {
"is-regex": "1.0.4"
}
},
"chokidar": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
@ -1657,7 +1682,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
"integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
"dev": true,
"requires": {
"center-align": "0.1.3",
"right-align": "0.1.3",
@ -1667,8 +1691,7 @@
"wordwrap": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
"dev": true
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
}
}
},
@ -1887,6 +1910,22 @@
}
}
},
"constantinople": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.0.tgz",
"integrity": "sha1-dWnKqKo/jVk11i4fqW+fcCzYHHk=",
"requires": {
"acorn": "3.3.0",
"is-expression": "2.1.0"
},
"dependencies": {
"acorn": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
"integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
}
}
},
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
@ -2455,8 +2494,7 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
},
"deep-eql": {
"version": "0.1.3",
@ -2591,6 +2629,11 @@
"isarray": "1.0.0"
}
},
"doctypes": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
"integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk="
},
"dom-converter": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
@ -3767,8 +3810,7 @@
"function-bind": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz",
"integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=",
"dev": true
"integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E="
},
"generate-function": {
"version": "2.0.0",
@ -3890,8 +3932,7 @@
"graceful-readlink": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
"integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
"dev": true
"integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
},
"growl": {
"version": "1.9.2",
@ -3978,7 +4019,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
"integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
"dev": true,
"requires": {
"function-bind": "1.1.0"
}
@ -4469,8 +4509,7 @@
"is-buffer": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
"integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
"dev": true
"integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw="
},
"is-builtin-module": {
"version": "1.0.0",
@ -4502,6 +4541,22 @@
"is-primitive": "2.0.0"
}
},
"is-expression": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-expression/-/is-expression-2.1.0.tgz",
"integrity": "sha1-kb6dR968/vB3l36XIr5tz7RGXvA=",
"requires": {
"acorn": "3.3.0",
"object-assign": "4.1.1"
},
"dependencies": {
"acorn": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
"integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
}
}
},
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@ -4604,12 +4659,25 @@
"integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
"dev": true
},
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"is-property": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
"dev": true
},
"is-regex": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
"requires": {
"has": "1.0.1"
}
},
"is-resolvable": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz",
@ -4794,6 +4862,11 @@
"nopt": "3.0.6"
}
},
"js-stringify": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
"integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds="
},
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
@ -4909,6 +4982,15 @@
}
}
},
"jstransformer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
"integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=",
"requires": {
"is-promise": "2.1.0",
"promise": "7.3.1"
}
},
"karma": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz",
@ -5097,7 +5179,6 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "1.1.5"
}
@ -5114,8 +5195,7 @@
"lazy-cache": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
"integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
"dev": true
"integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
},
"lcid": {
"version": "1.0.0",
@ -5507,8 +5587,7 @@
"longest": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
"dev": true
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
},
"loose-envify": {
"version": "1.3.1",
@ -6095,8 +6174,7 @@
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"object-component": {
"version": "0.0.3",
@ -6475,8 +6553,7 @@
"path-parse": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
"integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
"dev": true
"integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
},
"path-to-regexp": {
"version": "0.1.7",
@ -8555,6 +8632,14 @@
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
"dev": true
},
"promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"requires": {
"asap": "2.0.6"
}
},
"proto-list": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
@ -8620,6 +8705,180 @@
"randombytes": "2.0.5"
}
},
"pug": {
"version": "2.0.0-rc.2",
"resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-rc.2.tgz",
"integrity": "sha1-B4RVJ3kKssa+Z9z16x8xgECB8Eo=",
"requires": {
"pug-code-gen": "1.1.1",
"pug-filters": "2.1.3",
"pug-lexer": "3.1.0",
"pug-linker": "3.0.1",
"pug-load": "2.0.7",
"pug-parser": "3.0.0",
"pug-runtime": "2.0.3",
"pug-strip-comments": "1.0.2"
}
},
"pug-attrs": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.2.tgz",
"integrity": "sha1-i+KyIlVo/6ddG4Zpgr/59BEa/8s=",
"requires": {
"constantinople": "3.1.0",
"js-stringify": "1.0.2",
"pug-runtime": "2.0.3"
}
},
"pug-code-gen": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-1.1.1.tgz",
"integrity": "sha1-HPcnRO8qA56uajNAyqoRBYcSWOg=",
"requires": {
"constantinople": "3.1.0",
"doctypes": "1.1.0",
"js-stringify": "1.0.2",
"pug-attrs": "2.0.2",
"pug-error": "1.3.2",
"pug-runtime": "2.0.3",
"void-elements": "2.0.1",
"with": "5.1.1"
}
},
"pug-error": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz",
"integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY="
},
"pug-filters": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-2.1.3.tgz",
"integrity": "sha1-1ZdnoiDeeX3XVUifZoNM+aqDqlQ=",
"requires": {
"clean-css": "3.4.28",
"constantinople": "3.1.0",
"jstransformer": "1.0.0",
"pug-error": "1.3.2",
"pug-walk": "1.1.3",
"resolve": "1.3.3",
"uglify-js": "2.8.29"
},
"dependencies": {
"clean-css": {
"version": "3.4.28",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
"integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
"requires": {
"commander": "2.8.1",
"source-map": "0.4.4"
}
},
"commander": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
"integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
"requires": {
"graceful-readlink": "1.0.1"
}
},
"source-map": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"requires": {
"amdefine": "1.0.1"
}
},
"uglify-js": {
"version": "2.8.29",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
"integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
"requires": {
"source-map": "0.5.6",
"uglify-to-browserify": "1.0.2",
"yargs": "3.10.0"
},
"dependencies": {
"source-map": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
"integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI="
}
}
}
}
},
"pug-lexer": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-3.1.0.tgz",
"integrity": "sha1-/QhzdtSmdbT1n4/vQiiDQ06VgaI=",
"requires": {
"character-parser": "2.2.0",
"is-expression": "3.0.0",
"pug-error": "1.3.2"
},
"dependencies": {
"acorn": {
"version": "4.0.13",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
"integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c="
},
"is-expression": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz",
"integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=",
"requires": {
"acorn": "4.0.13",
"object-assign": "4.1.1"
}
}
}
},
"pug-linker": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.1.tgz",
"integrity": "sha1-uj+P8hPKjzowSFm0T+0Tynud+hk=",
"requires": {
"pug-error": "1.3.2",
"pug-walk": "1.1.3"
}
},
"pug-load": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.7.tgz",
"integrity": "sha1-Ux0MbhFUYBDphGMNA99AY2fS3nc=",
"requires": {
"object-assign": "4.1.1",
"pug-walk": "1.1.3"
}
},
"pug-parser": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-3.0.0.tgz",
"integrity": "sha1-N8YZ3YAPZCGHzk1s4aFkzddUh6M=",
"requires": {
"pug-error": "1.3.2",
"token-stream": "0.0.1"
}
},
"pug-runtime": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.3.tgz",
"integrity": "sha1-mBYmB7D86eJU1CfzOYelrucWi9o="
},
"pug-strip-comments": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.2.tgz",
"integrity": "sha1-0xOvoBvMN0mA4TmeI+vy65vchRM=",
"requires": {
"pug-error": "1.3.2"
}
},
"pug-walk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.3.tgz",
"integrity": "sha1-181bI9s8qHxjbIaglz+c2OAwQ2w="
},
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
@ -9031,8 +9290,7 @@
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
},
"repeating": {
"version": "2.0.1",
@ -9120,7 +9378,6 @@
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz",
"integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=",
"dev": true,
"requires": {
"path-parse": "1.0.5"
}
@ -9145,7 +9402,6 @@
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
"integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
"dev": true,
"requires": {
"align-text": "0.1.4"
}
@ -9968,6 +10224,11 @@
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
"dev": true
},
"token-stream": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz",
"integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo="
},
"toposort": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz",
@ -10068,7 +10329,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
"integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
"dev": true,
"optional": true
},
"ultron": {
@ -10255,8 +10515,7 @@
"void-elements": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
"integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
"dev": true
"integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
},
"vue": {
"version": "2.4.2",
@ -10666,8 +10925,23 @@
"window-size": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
"integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
"dev": true
"integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
},
"with": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz",
"integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=",
"requires": {
"acorn": "3.3.0",
"acorn-globals": "3.1.0"
},
"dependencies": {
"acorn": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
"integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
}
}
},
"wordwrap": {
"version": "1.0.0",
@ -10756,8 +11030,6 @@
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
"integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
"dev": true,
"optional": true,
"requires": {
"camelcase": "1.2.1",
"cliui": "2.1.0",
@ -10768,9 +11040,7 @@
"camelcase": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
"integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
"dev": true,
"optional": true
"integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
}
}
},

View File

@ -14,6 +14,7 @@
"lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
},
"dependencies": {
"pug": "^2.0.0-rc.2",
"vue": "^2.3.3",
"vue-router": "^2.6.0"
},

View File

@ -1,22 +1,18 @@
<template>
<div id="app">
<header>
<router-link to="/">
<img src="/static/djs-consulting.png" alt="DJS Consulting" title="DJS Consulting" />
</router-link>
<img src="/static/slogan.png" alt="Your Web Design, Hosting, and Application Solution Source"
title="Your web design, hosting, and application solution source!" />
<span>&nbsp;</span>
</header>
<div id="content">
<router-view></router-view>
</div>
<footer>
<span>A <strong><a href="/">DJS Consulting</a></strong> original design</span>
<span style="flex-grow:3;">&nbsp;</span>
<span>Secured by <strong><a href="//letsencrypt.org">Let's Encrypt</a></strong></span>
</footer>
</div>
<template lang="pug">
#app
header
router-link(to="/"): img(src="/static/djs-consulting.png" alt="DJS Consulting" title="DJS Consulting")
img(src="/static/slogan.png" alt="Your Web Design, Hosting, and Application Solution Source"
title="Your web design, hosting, and application solution source!")
span &nbsp;
#content
router-view
footer
span.
A #[strong: router-link(to="/") DJS Consulting] original design
span(style="flex-grow:3;") &nbsp;
span.
Secured by #[strong: a(href="//letsencrypt.org") Let's Encrypt]
</template>
<script>

View File

@ -1,25 +1,23 @@
<template>
<article>
<page-title :title="pageTitle" />
<h1>{{ application.name }}<br>
<template lang="pug">
article
page-title(:title="pageTitle")
h1.
{{ application.name }}
#[br]
<small><small>
<a v-if="application.active || application.linkInactive" :href="application.url">{{ application.url }}</a>
<span v-if="!application.active && !application.linkInactive">{{ application.url }}</span>
#[a(v-if="application.active || application.linkInactive" :href="application.url") {{ application.url }}]
#[span(v-if="!application.active && !application.linkInactive") {{ application.url }}]
</small></small>
</h1>
<aside>
<img :src="imageLink">
</aside>
<p v-for="(p, idx) in application.paragraphs" v-bind:key="idx" v-html="p"></p>
<p v-for="(act, idx) in application.activity" v-bind:key="idx" v-bind:act="act">
<strong>{{ act.heading }}</strong> &ndash; <span v-html="act.narrative"></span>
</p>
<p v-for="(p, idx) in application.footnotes" v-bind:key="idx" v-html="p"></p>
<p>
<br>
<router-link :to="{ name: 'ApplicationList' }">&laquo; Back to Web Sites and Applications</router-link>
</p>
</article>
aside: img(:src="imageLink")
p(v-for="(p, idx) in application.paragraphs" v-bind:key="idx" v-html="p")
p(v-for="(act, idx) in application.activity" v-bind:key="idx" v-bind:act="act")
strong {{ act.heading }}
| &nbsp;&ndash;&nbsp;
span(v-html="act.narrative")
p(v-for="(p, idx) in application.footnotes" v-bind:key="idx" v-html="p")
p
br
router-link(:to="{ name: 'ApplicationList' }") &laquo; Back to Web Sites and Applications
</template>
<script>
@ -32,13 +30,13 @@ export default {
return {}
},
computed: {
application: function () {
application () {
return AppData.apps.find(app => app.id === this.$props.app)
},
imageLink: function () {
imageLink () {
return `/static/screenshots/${this.application.id}.png`
},
pageTitle: function () {
pageTitle () {
return `${this.application.name} « Applications`
}
},

View File

@ -1,12 +1,11 @@
<template>
<article>
<page-title title="Applications" />
<h1>Web Sites and Applications</h1>
<h2>Current Projects</h2>
<application-list-item v-for="app in current" v-bind:app="app" v-bind:key="app.id" />
<h2>Past Projects</h2>
<application-list-item v-for="app in past" v-bind:app="app" v-bind:key="app.id" />
</article>
<template lang="pug">
article
page-title(title="Applications")
h1 Web Sites and Applications
h2 Current Projects
application-list-item(v-for="app in current" v-bind:app="app" v-bind:key="app.id")
h2 Past Projects
application-list-item(v-for="app in past" v-bind:app="app" v-bind:key="app.id")
</template>
<script>

View File

@ -1,20 +1,21 @@
<template>
<p>
<span class="app-name" v-html="app.name"></span> &nbsp;~&nbsp;
<router-link :to="{ name: 'Application', params: { app: app.id } }">About</router-link>
<span v-if="app.active"> &nbsp;~&nbsp; <a :href="app.url">Visit</a></span>
<span v-if="!app.active && app.archiveUrl"> &nbsp;~&nbsp; <a :href="app.archiveUrl">Visit</a> <em>(archive)</em></span><br>
<span v-html="app.indexText"></span>
</p>
<template lang="pug">
p
span.app-name(v-html="app.name")
| &nbsp;~&nbsp;
router-link(:to="{ name: 'Application', params: { app: app.id } }") About
span(v-if="app.active") &nbsp;~&nbsp;
a(:href="app.url") Visit
span(v-if="!app.active && app.archiveUrl") &nbsp;~&nbsp;
a(:href="app.archiveUrl") Visit
em &nbsp;(archive)
br
span(v-html="app.indexText")
</template>
<script>
export default {
name: 'application-list-item',
props: ['app'],
data: function () {
return {}
}
props: ['app']
}
</script>

View File

@ -1,134 +1,120 @@
<template>
<article>
<page-title title="Welcome!" />
<h1>Welcome to DJS Consulting!</h1>
<app-sidebar />
<p>
<template lang="pug">
article
page-title(title="Welcome!")
h1 Welcome to DJS Consulting!
app-sidebar
p.
DJS Consulting can develop an interactive web application to fit almost any need.
<router-link to="/applications" title="Web Sites and Applications">View the complete list of our current web
sites and applications!</router-link>
</p>
<h2>Process Automation and User Engagement</h2>
<p>
h2 Process Automation and User Engagement
p.
Computers can be used to augment or automate nearly any process; could you think of generating bank statements,
processing mailing lists, or tracking orders without some form of automation? We develop web-based solutions to
automate <em>your</em> processes, ensuring that your business constraints are satisfied; these systems can run on
the Internet or your private network. For Internet-facing solutions, we engineer solutions that allow them to
interact with you securely, presented in an engaging manner. And, by "engagement," we are not describing intrusive
page pop-ups and other <span class="strike">marketing gimmicks</span> web annoyances; we determine an optimal user
experience for <em>your</em> customers, and tailor the solution to work for both of you.
</p>
<p>Several of our projects fit this description.</p>
<ul>
<li>
<router-link to="/applications/virtual-prayer-room" title="Virtual Prayer Room">Virtual Prayer
Room</router-link> helped the prayer ministry of
<a href="http://www.hoffmantown.org" title="Hoffmantown Church in Albuquerque, NM">Hoffmantown Church</a>
enable their prayer warriors to have access to requests wherever they are, even in their inbox once a day!
</li>
<li>
<router-link to="/applications/tcms" title="TCMS">TCMS</router-link> was an application that helped
organizations such as <a href="http://www.loveincabq.org">Love INC of South Albuquerque</a> connect people with
needs to people who can help fulfill those needs. TCMS sprung from the
<a href="http://hosted.djs-consulting.com/archive/notsoextreme_org" title="Not So Extreme Makeover: Community Edition (Archive)">Not
So Extreme Makeover: Community Edition</a> in Albuquerque, New Mexico during spring break 2008; we not only
developed the public presence, but a private system called
<router-link to="/applications/nsx/" title="NSX &bull; DJS Consulting">NSXapp</router-link> that enabled the
management of the volunteers, families, and things for this massive effort.
</li>
<li>
automate #[em your] processes, ensuring that your business constraints are satisfied; these systems can run on the
Internet or your private network. For Internet-facing solutions, we engineer solutions that allow them to interact
with you securely, presented in an engaging manner. And, by "engagement," we are not describing intrusive page
pop-ups and other #[span.strike marketing gimmicks] web annoyances; we determine an optimal user experience for
#[em your] customers, and tailor the solution to work for both of you.
p Several of our projects fit this description.
ul
li.
#[router-link(:to="{ name: 'Application', params: { app: 'virtual-prayer-room' } }" title="Virtual Prayer Room") Virtual Prayer Room]
helped the prayer ministry of
#[a(href="http://www.hoffmantown.org" title="Hoffmantown Church in Albuquerque, NM") Hoffmantown Church] enable
their prayer warriors to have access to requests wherever they are, even in their inbox once a day!
li.
#[router-link(:to="{ name: 'Application', params: { app: 'tcms' } }" title="TCMS") TCMS] was an application that
helped organizations such as #[a(href="http://www.loveincabq.org") Love INC of South Albuquerque] connect people
with needs to people who can help fulfill those needs. TCMS sprung from the
#[a(href="http://hosted.djs-consulting.com/archive/notsoextreme_org" title="Not So Extreme Makeover: Community Edition (Archive)") Not So Extreme Makeover: Community Edition]
in Albuquerque, New Mexico during spring break 2008; we not only developed the public presence, but a private
system called #[router-link(:to="{ name: 'Application', params: { app: 'nsx' } }" title="NSX") NSXapp] that
enabled the management of the volunteers, families, and things for this massive effort.
li.
We continue to offer
<router-link to="/applications/prayertracker" title="PrayerTracker &bull; DJS Consulting">PrayerTracker</router-link>,
#[router-link(:to="{ name: 'Application', params: { app: 'prayertracker' } }" title="PrayerTracker DJS Consulting") PrayerTracker],
a free-to-use web application that helps Sunday School classes (or other small groups) generate a prayer request
list; it provides a central place for list management and continuity.
</li>
</ul>
<h2>Information Publicizing <small><em>(including WordPress)</em></small></h2>
<p>
h2
| Information Publicizing&nbsp;
small: em (including WordPress)
p.
In the early days of the World Wide Web, it was known as the "information superhighway." From its inception, the
web's primary goal is information. The open nature of the Internet allows anyone, anywhere to say anything,
provided they can connect a machine to the network. In fact, there are software products to handle everything
except creating the content; all you have to bring is the ability to form a coherent thought, and type that
thought into a box. <a href="https://wordpress.org" title="WordPress">WordPress</a> is one of the most popular
<abbr title="Web Log">blog</abbr>ging platforms in use today; it allows authors to concentrate on the content of
thought into a box. #[a(href="https://wordpress.org" title="WordPress") WordPress] is one of the most popular
#[abbr(title="Web Log") blog]ging platforms in use today; it allows authors to concentrate on the content of
their websites, rather than forcing authors to turn into programmers.
</p>
<h3>Custom-Built Sites</h3>
<ul>
<li>
We developed and maintained the site for <a href="http://www.emeraldmountainchristianschool.org">Emerald
Mountain Christian School</a> for 9 years, where they had information about the type of curriculum they teach,
the school's 40+-year history, a calendar of events, and how to get more information.
</li>
<li>
We built and maintained the site for <a href="http://www.summershome.org">Photography by Michelle</a>, which had
h3 Custom-Built Sites
ul
li.
We developed and maintained the site for
#[a(href="http://www.emeraldmountainchristianschool.org") Emerald Mountain Christian School] for 9 years, where
they had information about the type of curriculum they teach, the school's 40+-year history, a calendar of
events, and how to get more information.
li.
We built and maintained the site for #[a(href="http://www.summershome.org") Photography by Michelle], which had
information, prices, and samples of the photographer's work, as well as the ability for customers to view proofs
and make photo selections online.
</li>
<li>
The sites for <a href="//bayvista.org" title="Bay Vista Baptist Church">Bay Vista Baptist Church</a> and
<a href="//olivetbaptist.org" title="Olivet Baptist Church">Olivet Baptist Church</a> utilize a "static site
li.
The sites for #[a(href="//bayvista.org" title="Bay Vista Baptist Church") Bay Vista Baptist Church] and
#[a(href="//olivetbaptist.org" title="Olivet Baptist Church") Olivet Baptist Church] utilize a "static site
generator," where the entire site is generated from source files, then served. It requires no back-end database,
which means that the server can send them as fast as its clients can take them. These two sites even have a
generated podcast feed! Adding content to these types of sites requires a bit more technical knowledge beyond
"typing text in a box," but it is a great way to build ultra-fast, scalable web sites.
</li>
<li>
This site is a single-page application (SPA) utilizing the <a href="//vuejs.org">Vue.js</a> JavaScript
framework. The application pages are generated based on an internal data set, and the other pages are simple
text components. Its bundling means that the initial page is small, and after the initial load, it runs entirely
in the browser or on a phone or tablet. Sites that reference external data sets would still need to access the
li.
This site is a single-page application (SPA) utilizing the #[a(href="//vuejs.org") Vue.js] JavaScript framework.
The application pages are generated based on an internal data set, and the other pages are simple text
components. Its bundling means that the initial page is small, and after the initial load, it runs entirely in
the browser or on a phone or tablet. Sites that reference external data sets would still need to access the
Internet to retrieve data, but this is much more efficient than having to download the entire page every single
click.
</li>
</ul>
<h3>WordPress Design, Customization, and Support</h3>
<ul>
<li>
We helped <router-link to="/applications/cassy-fiano" title="Cassy Fiano">Cassy Fiano</router-link> and
<a href="http://melissablogs.com" title="Dr. Melissa Clouthier &bull; Information Pollination">Dr.Melissa
Clouthier</a> both move their blogs from Blogspot to their own domains.
</li>
<li>
We migrated <router-link to="/applications/liberty-pundits" title="Liberty Pundits">Liberty
Pundits</router-link> from a custom blog platform to WordPress, and set up and maintained their server, which
routinely cleared 100,000 hits per day in its prime.
</li>
<li>
For <a href="//www.futilitycloset.com" title="Futility Closet">Futility Closet</a>, we moved their site from a
shared hosting platform to its own <abbr title="Virtual Private Server">VPS</abbr>, to enable it to handle its
click. (It's even #[a(href="https://github.com/danieljsummers/djs-consulting.com") open source] if you want to
see how we did it.)
h3 WordPress Design, Customization, and Support
ul
li.
We helped
#[router-link(:to="{ name: 'Application', params: { app: 'cassy-fiano' } }" title="Cassy Fiano") Cassy Fiano]
and #[a(href="http://melissablogs.com" title="Dr. Melissa Clouthier | Information Pollination") Dr.Melissa Clouthier]
both move their blogs from Blogspot to their own domains.
li.
We migrated
#[router-link(:to="{ name: 'Application', params: { app: 'liberty-pundits' } }" title="Liberty Pundits") Liberty Pundits]
from a custom blog platform to WordPress, and set up and maintained their server, which routinely cleared
100,000 hits per day in its prime.
li.
For #[a(href="//www.futilitycloset.com" title="Futility Closet") Futility Closet], we moved their site from a
shared hosting platform to its own #[abbr(title="Virtual Private Server") VPS], to enable it to handle its
ever-increasing traffic.
</li>
<li>
li.
TCMS and NSXapp both used WordPress as their front end, which also provided a public web presence that the
customers could update themselves.
</li>
</ul>
<p>
On our <a href="//techblog.djs-consulting.com" title="DJS Consulting Tech Blog">tech blog</a> you can browse the
<a href="//techblog.djs-consulting.com/category/wordpress" title="WordPress - DJS Consulting Tech Blog">WordPress</a>
p.
On our #[a(href="//techblog.djs-consulting.com" title="DJS Consulting Tech Blog") tech blog] you can browse the
#[a(href="//techblog.djs-consulting.com/category/wordpress" title="WordPress | DJS Consulting Tech Blog") WordPress]
category for information on plug-ins, and you'll find that the themes on all of the WordPress blogs linked on the
right have been customized.
</p>
<h2>Web Services</h2>
<p>
h2 Web Services
p.
A web service is a way of using the Internet to provide or accept information that makes sense to computers; this
allows other sites or applications to consume information from, or provide information to, your service. This
enables communication between applications, without having to establish any communication channels other than the
ones that web browsers already use. It isn't the best fit for every application, but when it is useful, it is
<em>very</em> useful.
</p>
<p>
#[em very] useful.
p.
Photography by Michelle has a web service that a desktop application utilizes to create the online proof sets
right from the computer where the images reside. We also
<a href="//techblog.djs-consulting.com/2010/4040-web-service.html" title="40/40 Web Service">wrote a service</a>
for the 2010 <a href="http://erlc.com/4040/" title="40/40 Prayer Vigil - Ethics and Religious Liberty Commission of the Southern Baptist Convention">40/40
Prayer Vigil</a>, which was utilized by several sites to display the current day's (or hour's) prayer focus, and
<a href="//techblog.djs-consulting.com/2012/4040-web-service-for-2012.html" title="40/40 Web Service for 2012">wrote
one for 2012</a> as well. <em>(As the ERLC does not host these any more, this service is no longer active.)</em>
</p>
<h2>Legacy Data Sharing</h2>
<p>
#[a(href="//techblog.djs-consulting.com/2010/4040-web-service.html" title="40/40 Web Service") wrote a service]
for the 2010
#[a(href="http://erlc.com/4040/" title="40/40 Prayer Vigil | Ethics and Religious Liberty Commission of the Southern Baptist Convention") 40/40 Prayer Vigil],
which was utilized by several sites to display the current day's (or hour's) prayer focus, and
#[a(href="//techblog.djs-consulting.com/2012/4040-web-service-for-2012.html" title="40/40 Web Service for 2012") wrote one for 2012]
as well. #[i (As the ERLC does not host these any more, this service is no longer active.)]
h2 Legacy Data Sharing
p.
Our background in mainframe applications gives us a knowledgeable perspective on retrieving information from
older, &ldquo;legacy&rdquo; systems. This data can be migrated to a more modern relational or document database,
where a web application can retrieve the information; in some cases, the data can even be exposed as a web service
@ -136,32 +122,24 @@
without having to move their day-to-day system from its current environment. While we currently have no active
projects along these lines, our developers have done them in the past for other organizations; sadly, none can be
linked publicly.
</p>
<h2>Why Web-Based?</h2>
<p>
h2 Why Web-Based?
p.
Developing a web-based solution has many advantages, whether that application can be used just on a local, private
network (an intranet), or on the Internet.
</p>
<ul>
<li>
ul
li.
The application is available from any computer connected to the network &mdash; your home computer, your mobile
phone or tablet, a shared comptuer in a library - wherever!
</li>
<li>
li.
There is no special software to install &mdash; every computer and mobile device has a web browser on it, and we
ensure our solutions work on today's most popular web browsers, including Microsoft&reg; Edge, Mozilla Firefox,
and Google Chrome.
</li>
<li>
li.
Web-based solutions are easy to implement in a step-by-step fashion, so your most critical needs can be
addressed and deployed first. Enhancements are generally easy to do as well.
</li>
</ul>
<p>
p.
We'd be happy to discuss your information technology needs, and how we may be able to help you. Just
<a href="mailto:daniel@djs-consulting.com">e-mail us</a> and let us know what we can do for you!
</p>
</article>
#[a(href="mailto:daniel@djs-consulting.com") e-mail us] and let us know what we can do for you!
</template>
<script>
@ -170,37 +148,9 @@ import PageTitle from './PageTitle.vue'
export default {
name: 'home',
data: function () {
return {
toggleExamples: function (e) {
e.preventDefault()
const el = document.getElementById('test')
if (el.style.height === '0px') {
el.style.height = 'auto'
const hite = el.clientHeight
console.log('height = ' + hite)
el.style.height = '0'
window.requestAnimationFrame(function () {
el.style.overflow = 'visible'
el.style.height = hite + 'px'
setTimeout(function () { el.style.overflow = 'visible' }, 1000)
})
} else {
el.style.height = '0'
setTimeout(function () { el.style.overflow = 'hidden' }, 1000)
}
}
}
},
components: {
AppSidebar,
PageTitle
}
}
</script>
<style>
.examples {
transition: all 1s ease;
}
</style>

View File

@ -193,9 +193,6 @@ import PageTitle from '@/components/PageTitle.vue'
export default {
name: 'averatec',
data: function () {
return {}
},
components: {
PageTitle
}

View File

@ -1,26 +1,21 @@
<template>
<article>
<page-title title="Linux Resources" />
<h1>Linux Resources</h1>
<p>We at DJS Consulting love Linux! Below are the resources we provide.</p>
<p>
&raquo; <router-link to="/linux/installing-wbel4-rhel4-on-an-averatec-6200-laptop" title="Installing WBEL4 (RHEL4) on an Averatec 6200 Laptop - DJS Consulting Linux Resources">Installing
Linux on an Averatec 6200 Laptop</router-link>
</p>
<p>
&raquo; <router-link to="/linux/xine-rpms-for-el-x86_64-architecture" title="xine RPMs for EL / x86_64 Architecture - DJS Consulting Linux Resources">xine
RPMs for the x86_64 EL Architecture</router-link>
</p>
<p>
&raquo; <a href="//hosted.djs-consulting.com/software" title="DJS Consulting Software Repository">DJS Consulting
Software Repository</a>
</p>
<p>
&raquo; <a href="//techblog.djs-consulting.com/category/linux" title="Linux - DJS Consulting Tech Blog">Linux
posts</a> on the <a href="//techblog.djs-consulting.com" title="DJS Consulting Tech Blog">DJS Consulting Tech
Blog</a>
</p>
</article>
<template lang="pug">
article
page-title(title="Linux Resources")
h1 Linux Resources
p We at DJS Consulting love Linux! Below are the resources we provide.
p.
&raquo;
#[router-link(:to="{ name: 'Averatec' }" title="Installing WBEL4 (RHEL4) on an Averatec 6200 Laptop - DJS Consulting Linux Resources") Installing Linux on an Averatec 6200 Laptop]
p.
&raquo;
#[router-link(:to="{ name: 'XineRPMs' }" title="xine RPMs for EL / x86_64 Architecture - DJS Consulting Linux Resources") xine RPMs for the x86_64 EL Architecture]
p.
&raquo;
#[a(href="//hosted.djs-consulting.com/software" title="DJS Consulting Software Repository") DJS Consulting Software Repository]
p.
&raquo;
#[a(href="//techblog.djs-consulting.com/category/linux" title="Linux - DJS Consulting Tech Blog") Linux posts]
on the #[a(href="//techblog.djs-consulting.com" title="DJS Consulting Tech Blog") DJS Consulting Tech Blog]
</template>
<script>
@ -28,9 +23,6 @@ import PageTitle from '@/components/PageTitle.vue'
export default {
name: 'linux',
data: function () {
return {}
},
components: {
PageTitle
}

View File

@ -1,20 +1,16 @@
<template>
<article>
<page-title title="xine RPMs « Linux Resources" />
<h1>xine RPMs for EL / x86_64 Architecture</h1>
<p>
The xine RPMs are now distributed through the <a href="//techblog.djs-consulting.com">DJS Consulting Tech
Blog</a>. Information about the RPMs can be found in the
<a href="//techblog.djs-consulting.com/2005/about-the-xine-rpms.html" title="About the xine RPMs">About the xine
RPMs</a> post there, including how you can use RSS or Atom feeds to be notified of updated builds.
</p>
<p>
<template lang="pug">
article
page-title(title="xine RPMs « Linux Resources")
h1 xine RPMs for EL / x86_64 Architecture
p.
The xine RPMs are now distributed through the #[a(href="//techblog.djs-consulting.com") DJS Consulting Tech Blog].
Information about the RPMs can be found in the
#[a(href="//techblog.djs-consulting.com/2005/about-the-xine-rpms.html" title="About the xine RPMs") About the xine RPMs]
post there, including how you can use RSS or Atom feeds to be notified of updated builds.
p.
You can also
<a href="//techblog.djs-consulting.com/category/hosted-64-bit-software/xine-rpms" title="xine RPMs">view the list
of available RPMs</a> or simply <a href="//hosted.djs-consulting.com/software/xine" title="xine RPMs">browse the
available xine files</a>.
</p>
</article>
#[a(href="//techblog.djs-consulting.com/category/hosted-64-bit-software/xine-rpms" title="xine RPMs") view the list of available RPMs]
or simply #[a(href="//hosted.djs-consulting.com/software/xine" title="xine RPMs") browse the available xine files].
</template>
<script>
@ -22,9 +18,6 @@ import PageTitle from '@/components/PageTitle.vue'
export default {
name: 'xine-rpms',
data: function () {
return {}
},
components: {
PageTitle
}

View File

@ -1,7 +1,6 @@
<template>
<aside>
<sidebar-category v-for="category in cats" v-bind:category="category" v-bind:key="category.id" />
</aside>
<template lang="pug">
aside
sidebar-category(v-for="category in cats" v-bind:category="category" v-bind:key="category.id")
</template>
<script>
@ -10,7 +9,7 @@ import SidebarCategory from './SidebarCategory.vue'
export default {
name: 'app-sidebar',
data: function () {
data () {
return { cats: AppData.categories }
},
components: {

View File

@ -1,23 +1,18 @@
<template>
<div>
<p>
<strong class="sidebar-name">{{ app.name }}</strong><br>
<span v-if="!app.noAboutLink">
<router-link :to="{ name: 'Application', params: { app: app.id } }">About</router-link> &bull;
</span>
<a :title="app.name" :href="app.url">Visit</a>
</p>
<div class="sidebar-description" v-html="app.frontPageText"></div>
</div>
<template lang="pug">
div
p
strong.sidebar-name {{ app.name }}
br
span(v-if="!app.noAboutLink").
#[router-link(:to="{ name: 'Application', params: { app: app.id } }") About] &bull;
a(:title="app.name" :href="app.url") Visit
.sidebar-description(v-html="app.frontPageText")
</template>
<script>
export default {
name: 'sidebar-app',
props: ['app'],
data: function () {
return {}
}
props: ['app']
}
</script>

View File

@ -1,10 +1,7 @@
<template>
<div>
<p class="sidebar-head">
{{ category.name }}
</p>
<sidebar-app v-for="app in appsForCat(category.id)" v-bind:app="app" v-bind:key="app.id" />
</div>
<template lang="pug">
div
p.sidebar-head {{ category.name }}
sidebar-app(v-for="app in appsForCat(category.id)" v-bind:app="app" v-bind:key="app.id")
</template>
<script>