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", "version": "1.0.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "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": { "acorn-jsx": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
@ -104,7 +119,6 @@
"version": "0.1.4", "version": "0.1.4",
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
"integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
"dev": true,
"requires": { "requires": {
"kind-of": "3.2.2", "kind-of": "3.2.2",
"longest": "1.0.1", "longest": "1.0.1",
@ -120,8 +134,7 @@
"amdefine": { "amdefine": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
"dev": true
}, },
"ansi-escapes": { "ansi-escapes": {
"version": "1.4.0", "version": "1.4.0",
@ -235,6 +248,11 @@
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true "dev": true
}, },
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
},
"asn1": { "asn1": {
"version": "0.2.3", "version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
@ -1496,7 +1514,6 @@
"version": "0.1.3", "version": "0.1.3",
"resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
"integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
"dev": true,
"requires": { "requires": {
"align-text": "0.1.4", "align-text": "0.1.4",
"lazy-cache": "1.0.4" "lazy-cache": "1.0.4"
@ -1542,6 +1559,14 @@
"supports-color": "4.2.1" "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": { "chokidar": {
"version": "1.7.0", "version": "1.7.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
@ -1657,7 +1682,6 @@
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
"integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
"dev": true,
"requires": { "requires": {
"center-align": "0.1.3", "center-align": "0.1.3",
"right-align": "0.1.3", "right-align": "0.1.3",
@ -1667,8 +1691,7 @@
"wordwrap": { "wordwrap": {
"version": "0.0.2", "version": "0.0.2",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
"dev": true
} }
} }
}, },
@ -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": { "constants-browserify": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
@ -2455,8 +2494,7 @@
"decamelize": { "decamelize": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
"dev": true
}, },
"deep-eql": { "deep-eql": {
"version": "0.1.3", "version": "0.1.3",
@ -2591,6 +2629,11 @@
"isarray": "1.0.0" "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": { "dom-converter": {
"version": "0.1.4", "version": "0.1.4",
"resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
@ -3767,8 +3810,7 @@
"function-bind": { "function-bind": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz",
"integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E="
"dev": true
}, },
"generate-function": { "generate-function": {
"version": "2.0.0", "version": "2.0.0",
@ -3890,8 +3932,7 @@
"graceful-readlink": { "graceful-readlink": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
"integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
"dev": true
}, },
"growl": { "growl": {
"version": "1.9.2", "version": "1.9.2",
@ -3978,7 +4019,6 @@
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
"integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
"dev": true,
"requires": { "requires": {
"function-bind": "1.1.0" "function-bind": "1.1.0"
} }
@ -4469,8 +4509,7 @@
"is-buffer": { "is-buffer": {
"version": "1.1.5", "version": "1.1.5",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
"integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw="
"dev": true
}, },
"is-builtin-module": { "is-builtin-module": {
"version": "1.0.0", "version": "1.0.0",
@ -4502,6 +4541,22 @@
"is-primitive": "2.0.0" "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": { "is-extendable": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@ -4604,12 +4659,25 @@
"integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
"dev": true "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": { "is-property": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
"dev": true "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": { "is-resolvable": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz",
@ -4794,6 +4862,11 @@
"nopt": "3.0.6" "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": { "js-tokens": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", "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": { "karma": {
"version": "1.7.0", "version": "1.7.0",
"resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz",
@ -5097,7 +5179,6 @@
"version": "3.2.2", "version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": { "requires": {
"is-buffer": "1.1.5" "is-buffer": "1.1.5"
} }
@ -5114,8 +5195,7 @@
"lazy-cache": { "lazy-cache": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
"integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
"dev": true
}, },
"lcid": { "lcid": {
"version": "1.0.0", "version": "1.0.0",
@ -5507,8 +5587,7 @@
"longest": { "longest": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
"dev": true
}, },
"loose-envify": { "loose-envify": {
"version": "1.3.1", "version": "1.3.1",
@ -6095,8 +6174,7 @@
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
"dev": true
}, },
"object-component": { "object-component": {
"version": "0.0.3", "version": "0.0.3",
@ -6475,8 +6553,7 @@
"path-parse": { "path-parse": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
"integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
"dev": true
}, },
"path-to-regexp": { "path-to-regexp": {
"version": "0.1.7", "version": "0.1.7",
@ -8555,6 +8632,14 @@
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
"dev": true "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": { "proto-list": {
"version": "1.2.4", "version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
@ -8620,6 +8705,180 @@
"randombytes": "2.0.5" "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": { "punycode": {
"version": "1.4.1", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
@ -9031,8 +9290,7 @@
"repeat-string": { "repeat-string": {
"version": "1.6.1", "version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
"dev": true
}, },
"repeating": { "repeating": {
"version": "2.0.1", "version": "2.0.1",
@ -9120,7 +9378,6 @@
"version": "1.3.3", "version": "1.3.3",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz",
"integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=",
"dev": true,
"requires": { "requires": {
"path-parse": "1.0.5" "path-parse": "1.0.5"
} }
@ -9145,7 +9402,6 @@
"version": "0.1.3", "version": "0.1.3",
"resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
"integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
"dev": true,
"requires": { "requires": {
"align-text": "0.1.4" "align-text": "0.1.4"
} }
@ -9968,6 +10224,11 @@
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
"dev": true "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": { "toposort": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz", "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz",
@ -10068,7 +10329,6 @@
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
"integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
"dev": true,
"optional": true "optional": true
}, },
"ultron": { "ultron": {
@ -10255,8 +10515,7 @@
"void-elements": { "void-elements": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
"integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
"dev": true
}, },
"vue": { "vue": {
"version": "2.4.2", "version": "2.4.2",
@ -10666,8 +10925,23 @@
"window-size": { "window-size": {
"version": "0.1.0", "version": "0.1.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
"integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
"dev": true },
"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": { "wordwrap": {
"version": "1.0.0", "version": "1.0.0",
@ -10756,8 +11030,6 @@
"version": "3.10.0", "version": "3.10.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
"integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
"dev": true,
"optional": true,
"requires": { "requires": {
"camelcase": "1.2.1", "camelcase": "1.2.1",
"cliui": "2.1.0", "cliui": "2.1.0",
@ -10768,9 +11040,7 @@
"camelcase": { "camelcase": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
"integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
"dev": true,
"optional": true
} }
} }
}, },

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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