<!DOCTYPE html>
<html>
<head>
<link href="//cdn.jsdelivr.net/picnicss/4.1.1/picnic.min.css" rel="stylesheet">
<link rel="stylesheet" href="style.css">
<meta charset="utf-8">
<title>Mag.JS</title>
</head>
<body>
<nav>
<h1>Hello Mag.JS!</h1>
<a target="_tab" href="https://github.com/magnumjs/mag.js">GitHub</a>
</nav>
<article class="card">
<header>
<h2>Phone Gallery</h2>
</header>
<footer>
<phone-list id="app">
<div class="container-fluid">
<div class="row">
<div class="col-md-2 third">
<!--Sidebar content-->
<p>
Search:
<input name="searchText">
</p>
<p>
Sort by:
<select name="orderBy">
<option value="name">Alphabetical</option>
<option value="age">Newest</option>
</select>
</p>
</div>
<div class="col-md-10">
<!--Body content-->
<ul class="phones">
<li>
<span>MOTOROLA XOOM™</span>
<p>The Next, Next Generation tablet.</p>
</li>
</ul>
</div>
</div>
</div>
</phone-list>
</footer>
</article>
<script src="//rawgit.com/magnumjs/mag.js/master/mag-latest.min.js"></script>
<script src="//rawgit.com/magnumjs/mag.js/master/dist/mag.addons.0.22.min.js"></script>
<script src="app.js"></script>
</body>
</html>
var app = {}
app.controller = function() {
this.phones = [{
name: 'Nexus S',
snippet: 'Fast just got faster with Nexus S.',
age: 1
}, {
name: 'Motorola XOOM™ with Wi-Fi',
snippet: 'The Next, Next Generation tablet.',
age: 2
}, {
name: 'MOTOROLA XOOM™',
snippet: 'The Next, Next Generation tablet.',
age: 3
}];
this.searchText = '';
this.input = this.select = {
_oninput: mag.noop
}
this.orderBy = 'age';
this.searchFor = (phone) => {
if (this.searchText) {
return ~phone.name.indexOf(this.searchText) || ~phone.snippet.indexOf(this.searchText)
}
return 1;
}
this.sortByAge = (a, b) => {
return parseFloat(a.age) - parseFloat(b.age);
}
this.sortByName = (a, b) => {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
}
}
app.view = function(state) {
state.li = state.phones
.filter(state.searchFor)
.sort(state.orderBy == 'age' ? state.sortByAge : state.sortByName)
.map(function(phone) {
return {
span: phone.name,
p: phone.snippet
}
})
}
mag.module("app", app)
li:empty,
.hide {
display: none;
}
a {
display: block;
}
a:after {
content: " \bb";
}
.mainButton {
font-size: 1.5em;
}
nav a {
float: right;
margin-top: -50px;
}
body {
background: #fff;
text-align: left;
width: 90%;
max-width: 960px;
margin: 0 auto;
padding: 20px 0 0;
}
nav {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 3em;
padding: 0 .6em;
background: #fff;
box-shadow: 0 0 0.2em rgba(17, 17, 17, 0.2);
z-index: 10000;
transition: all .3s;
transform-style: preserve-3d;
}
header {
font-weight: bold;
position: relative;
border-bottom: 1px solid #eee;
padding: .6em .8em;
}
footer {
padding: .8em;
}
article {
top: 100px;
}
.card {
max-width: 100%;
display: block;
position: relative;
box-shadow: 0;
border-radius: .2em;
border: 1px solid #ccc;
overflow: hidden;
text-align: left;
background: #fff;
margin-bottom: .6em;
padding: 6px;
transition: all .3s ease;
}
#Mag.JS
## plunk boilerplate of "Things"
Basic Mag.JS boilerplate to count and create a list of things dynamically.
From: https://docs.angularjs.org/tutorial/step_06