Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <script src="https://code.jquery.com/jquery.min.js"></script>
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/mithril/0.2.0/mithril.js"></script>
  <meta charset="utf-8">
  <title>Mithril test</title>
</head>
<body></body>
</html>
 
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
var TweetBox = (function() {
  function TweetBox() {
    this.text = m.prop('');
    this.photoAdded = m.prop(false);
    
    this.view = __bind(this.view, this);
    this.overflowAlert = __bind(this.overflowAlert, this);
    this.remainingCharacters = __bind(this.remainingCharacters, this);
    this.togglePhoto = __bind(this.togglePhoto, this);
  }
  TweetBox.prototype.togglePhoto = function() {
    return this.photoAdded(!this.photoAdded());
  };
  TweetBox.prototype.remainingCharacters = function() {
    if (this.photoAdded()) return 140 - 23 - this.text().length;
    return 140 - this.text().length;
  };
  TweetBox.prototype.overflowAlert = function() {
    if (this.remainingCharacters() >= 0) return;
    var photoAdjust = this.photoAdded() ? 23 : 0;
    var beforeOverflowText = this.text().substring(140 - 10 - photoAdjust, 140 - photoAdjust);
    var overflowText = this.text().substring(140 - photoAdjust);
    
    return m('.alert.alert-warning', [
      m('strong', 'Oops! Too Long:'), 
      m.trust('&nbsp;...'), 
      m('span', beforeOverflowText), 
      m('strong.bg-danger', overflowText)
    ]);
  };
  TweetBox.prototype.view = function() {
    return m(".well.clearfix", [
      this.overflowAlert(), 
      m('textarea.form-control', {
        oninput: m.withAttr('value', this.text)
      }, this.text()), 
      m('br'), 
      m('span', this.remainingCharacters()), 
      m('button.btn.btn-primary.pull-right', {
        disabled: this.text().length === 0 && !this.photoAdded()
      }, "Tweet"), 
      m('button.btn.btn-default.pull-right', {
        onclick: this.togglePhoto
      }, this.photoAdded() ? "✓ Photo Added" : "Add Photo")
    ]);
  };
  return TweetBox;
})();
m.mount(document.body, new TweetBox);
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
ciscoheatpro
0viewers