// model brick.services.reg('tasksModel', function () { var recordManager = brick.services.get('recordManager') var local = localStorage.getItem('tasksModel'); return new recordManager({ key: 'id', eventPrefix: 'tasksModel', broadcast: true }).init(local && JSON.parse(local) || []); }); //controller brick.reg('tasksCtrl', function (scope) { scope = this; var tasksModel = brick.services.get('tasksModel') var type = 0; var render = function (e, msg) { var model = type ? type === 1 ? tasksModel.get(false, 'complete') : tasksModel.get(true, 'complete') : tasksModel.get(); type === 0 && localStorage.setItem('tasksModel', JSON.stringify(model)); scope.render('task-list', {model:model}); }; scope.on('tasksModel.*', render); scope.add = function (e) { var val = this.value; val && tasksModel.add({name: val, id: +new Date, complete: false}); this.value = ''; }; scope.edit = function (e) { $(this).parent().find(':text').prop('disabled', false).focus(); }; scope.change = function (e) { var parent = $(this).parent(); var id = parent.data('id'); var complete = parent.find(':checkbox').prop('checked'); var name = parent.find(':text').attr('disabled', true).val(); tasksModel.find(id).set({complete: !!complete, name: name}); }; scope.remove = function (e, id) { tasksModel.find(id*1).remove(); }; scope.clear = function (e) { tasksModel.find(true, 'complete').remove(); }; scope.$elm.find('[ic-tabs=b]').on('ic-tabs.change', function (e, msg) { type = msg.activeTab.index() * 1; render(); }); });
[ic-tabs=a] { border-bottom: solid 1px #D6D6D6; } [ic-tabs=a] span { display: inline-block; padding: 0.5em 2em; margin: 0 3px; border-radius: 0.3em 0.3em 0 0; border: solid 1px #D6D6D6; margin-bottom: -1px; } [ic-tabs=a] span.active { border-bottom: solid 1px #fff; } [ic-tabs=b] { padding: 15px 0; } [ic-tabs=b] .active { color: red; } .complete { text-decoration: line-through; } [ic-ctrl=tasksCtrl] li { position: relative; list-style: none;; border-bottom: 1px solid #ededed; } [ic-ctrl=tasksCtrl] [type=text] { width: 76%; padding: 0.5em 2%; border: none; background: transparent; min-width: 20em; padding: 0 0.5em; border-radius: .2em; height: 36px; line-height: 36px; border: solid 1px #ccd1d9; } [ic-ctrl=tasksCtrl] li [type=text] { border: solid 1px transparent; } [ic-ctrl=tasksCtrl] li [type=text]:focus { border: solid 1px #ccd1d9; } [ic-ctrl=tasksCtrl] button { margin-left: 0.5em; position: absolute; top: 6px; right: 0; }