Skip to content

Instantly share code, notes, and snippets.

@joshmccall221
Forked from toranb/components.number-count.js
Last active March 23, 2018 22:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joshmccall221/91c5355ba0db34f4cbe88e66f11c6621 to your computer and use it in GitHub Desktop.
Save joshmccall221/91c5355ba0db34f4cbe88e66f11c6621 to your computer and use it in GitHub Desktop.
CustomBoxes
import Ember from 'ember';
import hbs from 'htmlbars-inline-precompile';
import { connect } from 'ember-redux';
const stateToComputed = st => {
const {state} = st;
const {list} = state;
const listString = list.map(i=>`
<div style="box-shadow: 4px 4px 8px 4px rgba(0,0,0,0.2);transition: 0.3s;width: 80%;">
<div style="padding: 20px 16px;">
<h4><b>Program:</b> <a href=${i.ProgramLink} target="_blank" rel="noopener">${i.Program}</a></h4>
Site Coordinator E-mail: <a href="mailto:${i.CordinatorEmail}">${i.CordinatorEmail}</a>
</div>
</div>
</br>
`).join('');
console.log(' \n\n\n\ stateToComputed', list.Program);
const retState = {
state: {
code:listString,
...state
}
};
console.log('\n\n\n list', {state}, {retState});
return retState
};
const dispatchToActions = dispatch => {
return {
add: () => dispatch({type: 'ADD'}),
new: (...args) => {
//console.log('\n\n\n args', {args})
dispatch({type: 'new', args})
},
button: () => dispatch({type: 'button'})
};
};
const NumbersComponent = Ember.Component.extend({
layout: hbs`
<table style="width:100%">
<tr>
<th>Progam</th>
<th>Progam Link</th>
<th>Cordinator</th>
<th>Cordinator Email</th>
</tr>
{{log 'state' state}}
{{#each state.list as |st index| }}
<tr>
<td>{{st.Program}}</td>
<td>{{st.ProgramLink}}</td>
<td>{{st.Cordinator}}</td>
<td>{{st.CordinatorEmail}}</td>
</tr>
{{/each}}
<tr>
<td>
<input id='Program' placeholder='Program' value={{state.Program}} oninput={{action "new" }} >
</td>
<td>
<input id='ProgramLink' placeholder='Program Link' value={{state.ProgramLink}} oninput={{action "new" }} >
</td>
<td>
<input id='Cordinator' placeholder='Cordinator' value={{state.Cordinator}} oninput=
{{action "new" }} >
</td>
<td>
<input id='CordinatorEmail' placeholder='Cordinator Email' value={{state.CordinatorEmail}} oninput={{action "new" }} >
</td>
<td>
<button onclick={{action "button"}}>add</button>
</td>
</tr>
</table>
<h2>Copy and Paste:</h2>
<pre>
{{state.code}}
</pre>
<h2>Preview:</h2>
{{#each state.list as |i index| }}
<div style="box-shadow: 4px 4px 8px 4px rgba(0,0,0,0.2);transition: 0.3s;width: 80%;">
<div style="padding: 20px 16px;">
<h4><b>Program:</b> <a href={{i.ProgramLink}} target="_blank" rel="noopener">{{i.Program}}</a></h4>
Site Coordinator E-mail: <a href="mailto:{{i.CordinatorEmail}}">{{i.CordinatorEmail}}</a>
</div>
</div>
{{/each}}
`
});
export default connect(stateToComputed, dispatchToActions)(NumbersComponent);
import { combineReducers } from 'redux';
const initialState = {
Program: '',
ProgramLink:'',
Cordinator:'',
CordinatorEmail:'',
list: [
{
Program:'Capitol View Elementary',
ProgramLink:'http://capitolview.dmschools.org/',
Cordinator:'capitolview@everybodywinsiowa.org',
CordinatorEmail:'capitolview@everybodywinsiowa.org'
},
{
Program:'Carver Community School',
ProgramLink:'https://carver.dmschools.org/',
Cordinator:'carver@everybodywinsiowa.org',
CordinatorEmail:'carver@everybodywinsiowa.org'
},
{
Program:'Cattell Elementary',
ProgramLink:'http://cattell.dmschools.org/',
Cordinator:'cattell@everybodywinsiowa.org',
CordinatorEmail:'cattell@everybodywinsiowa.org'
},
{
Program:'Central Presbyterian Church',
ProgramLink:'http://dmcpc.org/',
Cordinator:'cpctutoring@everybodywinsiowa.org',
CordinatorEmail:'cpctutoring@everybodywinsiowa.org'
},
{
Program:'Children &amp; Family Urban Movement (Breakfast)',
ProgramLink:'http://cfum.org/',
Cordinator:'powerbreakfast@everybodywinsiowa.org',
CordinatorEmail:'powerbreakfast@everybodywinsiowa.org'
},
{
Program:'Children &amp; Family Urban Movement (After School)',
ProgramLink:'http://cfum.org/',
Cordinator:'cfumafterschool@everybodywinsiowa.org',
CordinatorEmail:'cfumafterschool@everybodywinsiowa.org'
},
{
Program:'Crestview School of Inquiry',
ProgramLink:'https://www.wdmcs.org/schools/crestview/',
Cordinator:'crestview@everybodywinsiowa.org',
CordinatorEmail:'crestview@everybodywinsiowa.org'
},
{
Program:'Downtown School',
ProgramLink:'http://downtownschool.dmschools.org/',
Cordinator:'downtown@everybodywinsiowa.org',
CordinatorEmail:'downtown@everybodywinsiowa.org'
},
{
Program:'Edmunds Elementary',
ProgramLink:'http://edmunds.dmschools.org/',
Cordinator:'edmunds@everybodywinsiowa.org',
CordinatorEmail:'edmunds@everybodywinsiowa.org'
},
{
Program:'Emerson Elementary',
ProgramLink:'https://www.indianola.k12.ia.us/school/emerson-elementary/',
Cordinator:'emerson@everybodywinsiowa.org',
CordinatorEmail:'emerson@everybodywinsiowa.org'
},
{
Program:'Findley Elementary',
ProgramLink:'http://findley.dmschools.org/',
Cordinator:'findley@everybodywinsiowa.org',
CordinatorEmail:'findley@everybodywinsiowa.org'
},
{
Program:'Findley Elementary (John Deere Financial Power Breakfast)',
ProgramLink:'http://findley.dmschools.org/',
Cordinator:'findleyjdf@everybodywinsiowa.org',
CordinatorEmail:'findleyjdf@everybodywinsiowa.org'
},
{
Program:'Greenwood Elementary',
ProgramLink:'https://greenwood.dmschools.org/',
Cordinator:'greenwood@everybodywinsiowa.org',
CordinatorEmail:'greenwood@everybodywinsiowa.org'
},
{
Program:'Hillside Elementary',
ProgramLink:'http://www.wdmcs.org/schools/hillside/',
Cordinator:'hillside@everybodywinsiowa.org',
CordinatorEmail:'hillside@everybodywinsiowa.org'
},
{
Program:'Hubbell Elementary',
ProgramLink:'https://hubbell.dmschools.org/',
Cordinator:'hubbell@everybodywinsiowa.org',
CordinatorEmail:'hubbell@everybodywinsiowa.org'
},
{
Program:'King Elementary',
ProgramLink:'http://king.dmschools.org/',
Cordinator:'king@everybodywinsiowa.org',
CordinatorEmail:'king@everybodywinsiowa.org'
},
{
Program:'Lakewood Elementary',
ProgramLink:'https://www.norwalkschools.org/schools/lakewood-elementary-school/',
Cordinator:'lakewood@everybodywinsiowa.org',
CordinatorEmail:'lakewood@everybodywinsiowa.org'
},
{
Program:'Lincoln Elementary',
ProgramLink:'http://www.pellaschools.org/schools/lincoln-elementary',
Cordinator:'lincoln@everybodywinsiowa.org',
CordinatorEmail:'lincoln@everybodywinsiowa.org'
},
{
Program:'Lovejoy Elementary',
ProgramLink:'http://lovejoy.dmschools.org/',
Cordinator:'lovejoy@everybodywinsiowa.org',
CordinatorEmail:'lovejoy@everybodywinsiowa.org'
},
{
Program:'McKinley Elementary',
ProgramLink:'http://mckinley.dmschools.org/',
Cordinator:'http://mckinley.dmschools.org',
CordinatorEmail:'http://mckinley.dmschools.org'
},
{
Program:'Monroe Elementary',
ProgramLink:'http://monroe.dmschools.org/',
Cordinator:'monroe@everybodywinsiowa.org',
CordinatorEmail:'monroe@everybodywinsiowa.org'
},
{
Program:'Moore Elementary (Lunch)',
ProgramLink:'https://moore.dmschools.org/',
Cordinator:'moore@everybodywinsiowa.org',
CordinatorEmail:'moore@everybodywinsiowa.org'
},
{
Program:'Moore Elementary (After School)',
ProgramLink:'https://moore.dmschools.org/',
Cordinator:'mooreafterschool@everybodywinsiowa.org',
CordinatorEmail:'mooreafterschool@everybodywinsiowa.org'
},
{
Program:'Oakridge Neighborhood',
ProgramLink:'http://oakridgeneighborhood.org/',
Cordinator:'oakridge@everybodywinsiowa.org',
CordinatorEmail:'oakridge@everybodywinsiowa.org'
},
{
Program:'Oviatt Elementary School',
ProgramLink:'https://www.norwalkschools.org/schools/oviatt-elementary-school/',
Cordinator:'oviatt@everybodywinsiowa.org',
CordinatorEmail:'oviatt@everybodywinsiowa.org'
},
{
Program:'Pella Christian Grade School',
ProgramLink:'http://www.pellachristian.net/',
Cordinator:'pellachristian@everybodywinsiowa.org',
CordinatorEmail:'pellachristian@everybodywinsiowa.org'
},
{
Program:'Perry Elementary',
ProgramLink:'http://www.perry.k12.ia.us/',
Cordinator:'perry@everybodywinsiowa.org',
CordinatorEmail:'perry@everybodywinsiowa.org'
},
{
Program:'River Woods Elementary',
ProgramLink:'http://riverwoods.dmschools.org/',
Cordinator:'riverwoods@everybodywinsiowa.org',
CordinatorEmail:'riverwoods@everybodywinsiowa.org'
},
{
Program:'St. Theresa Catholic School',
ProgramLink:'http://sainttheresaiowa.org/school/',
Cordinator:'sttheresas@everybodywinsiowa.org',
CordinatorEmail:'sttheresas@everybodywinsiowa.org'
},
{
Program:'South Union Elementary',
ProgramLink:'http://southunion.dmschools.org/',
Cordinator:'southunion@everybodywinsiowa.org',
CordinatorEmail:'southunion@everybodywinsiowa.org'
},
{
Program:'Terrace Elementary',
ProgramLink:'https://www.ankenyschools.org/terrace',
Cordinator:'terrace@everybodywinsiowa.org',
CordinatorEmail:'terrace@everybodywinsiowa.org'
},
{
Program:'Urban Dreams',
ProgramLink:'https://urbandreams.org/',
Cordinator:'urbandreams@everybodywinsiowa.org',
CordinatorEmail:'urbandreams@everybodywinsiowa.org'
},
{
Program:'Walnut Street School',
ProgramLink:'http://walnutstreet.dmschools.org/',
Cordinator:'walnutstreet@everybodywinsiowa.org',
CordinatorEmail:'walnutstreet@everybodywinsiowa.org'
},
{
Program:'Whittier Elementary',
ProgramLink:'http://www.indianola.k12.ia.us/elementary/Whittier/',
Cordinator:'whittier@everybodywinsiowa.org',
CordinatorEmail:'whittier@everybodywinsiowa.org'
},
{
Program:'Wilder Elementary',
ProgramLink:'https://www.indianola.k12.ia.us/school/wilder-elementary/',
Cordinator:'wilder@everybodywinsiowa.org',
CordinatorEmail:'wilder@everybodywinsiowa.org'
},
{
Program:'Willard Elementary',
ProgramLink:'https://willard.dmschools.org/',
Cordinator:'willard@everybodywinsiowa.org',
CordinatorEmail:'willard@everybodywinsiowa.org'
},
{
Program:'Windsor Elementary',
ProgramLink:'http://windsor.dmschools.org/',
Cordinator:'windsor@everybodywinsiowa.org',
CordinatorEmail:'windsor@everybodywinsiowa.org'
},
]
}
const state = ((state, action) => {
if(action.type === 'ADD') {
return state + 1;
}
if(action.type === 'new') {
const {args} = action;
const input = args[0];
const id = input.target.id;
const value = input.target.value;
console.log('\n\n\nnew', {state}, {input}, {id}, {value})
const retState = {
...state,
...{[id]:value}
}
console.log('\n\n\nnew', {retState}, {input}, {id}, {value});
return retState;
}
if(action.type === 'button') {
const retState = {
list: [
...state.list,
{
Program: state.Program,
ProgramLink: state.ProgramLink,
Cordinator: state.Cordinator,
CordinatorEmail: state.CordinatorEmail
}
],
Program: '',
ProgamLink:'',
Cordinator:'',
CordinatorEmail:'',
};
console.log('\n\n\n button', {retState}, {action})
return retState;
}
return state || initialState;
});
export default combineReducers({
state
});
<h1>Programs Builder</h1>
<br>
<br>
{{number-count}}
{
"version": "0.12.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-redux": "3.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment