Trigger Handler based on Chris Aldridge's Lightweight Apex Trigger Framework
See Chris' original blog post: Lightweight Apex Trigger Framework
Simple trigger framework for bulkifying triggers and allowing for the encapsulation of complex logic.
Trigger Handler based on Chris Aldridge's Lightweight Apex Trigger Framework
See Chris' original blog post: Lightweight Apex Trigger Framework
Simple trigger framework for bulkifying triggers and allowing for the encapsulation of complex logic.
When using the vue-webpack-boilerplate, you will have only a production build by default (besides dev and test setups). My team often has at least another environment we call "staging" where the client can test new features before we move them to production. Oftentimes, these environments will have env-specific config values, like a different API URL.
With the changes outlined below, you can create a separate config per environment. This assumes you've created a Vue.js project with vue-webpack-boilerplate.
npm run build staging
it will build your project with the config values specific to your staging environment.
You can easily add any number of other environments and build them the same way.
npm run build
or npm run build production
will still build your production environment.import Vue from 'vue' | |
import _ from 'lodash' | |
import { compare, stringify } from 'utils/query' | |
import store from 'app/store' | |
/** | |
* Car loader service | |
* | |
* Removes responsibility of loading cars from the results store | |
* |
const cors = require('cors')({origin: true}); | |
exports.sample = functions.https.onRequest((req, res) => { | |
cors(req, res, () => { | |
res.send('Passed.'); | |
}); | |
}); |
<html> | |
<head> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.js"></script> | |
</head> | |
<body> | |
<div id="app"> | |
<label>Name</label> <input type="text" id="name" v-model="newBook.name" /> <br /> | |
<label>Author</label> <input type="text" id="author" v-model="newBook.author" /> <br /> | |
<label>Pages</label> <input type="text" id="author" v-model="newBook.totalPages" /> <br /> |
Whether you're developing a web application with native-ish UI, or just a simple modal popup overlay that covers the viewport, when it comes to making things work on iDevices in Mobile Safari, you're in for a decent amount of pain and suffering. Making something "100% height" is not as easy as it seems.
This post is a collection of Mobile Safari's gotchas and quirks on that topic, some with solutions and fixes, some without, in good parts pulled from various sources across the internets, to have it all in one place. Things discussed here apply to iOS8, iOS9 and iOS10.
Screen real estate on smartphones is limited, so Mobile Safari collapses the browser chrome (address bar and optional tab bar at the top, and tool bar at the bottom) when the user scrolls down. When you want to make something span exactly the height of the viewport, or pin something to the bottom of the screen, this can get tricky because the viewport changes size (or
Salesforce's Apex triggers allow you to trigger tray workflows in real-time, based on events that occur in Salesforce. Events include things like:
Salesforce doesn't support webhooks out of the box, so we'll need to add some Apex code to your Salesforce account to notify tray at the right time.
Can't share the complete code because the app's closed source and still in stealth mode, but here's how I'm using React Router and Redux in a large app with server rendering and code splitting on routes.
addReducers()
callback available to the getComponents()
method of
each React Router route. Each route is responsible for adding any Redux
reducers it needs when it's loaded. (This isn't really necessary on the{ | |
"rules": { | |
".read": true, | |
"articles": { | |
"$article": { | |
"title": { | |
".write": "auth != null", | |
".validate": "newData.isString() && newData.val() != ''" | |
}, | |
"url": { |
// Not all API methods are implemented in this proof | |
// See https://www.firebase.com/docs/web/api/query/ | |
var FirebaseQueryWrapper = (function() { | |
function FirebaseQueryWrapper(url) { | |
this.ref = new Firebase(url); | |
this.parms = {}; | |
} | |
var proto = FirebaseQueryWrapper.prototype; |