So using the following template:
- <form enctype="multipart/form-data" novalidate="novalidate" method="post" class="form-horizontal" action="/conta/Plati/ExecutaSelectieDosare">
- <div class="modal-header">
- <button aria-hidden="true" data-dismiss="modal" class="close" type="button">×</button>
- <h3>Selectati dosare de platit</h3>
- </div>
- <div class="model-body overflow">
- <section>
- {{#if Errors.length}}
- <div class="alert alert-block alert-error">
- {{#each Errors}}
- <p>{{Message}}</p>
- {{/each}}
- </div>
- {{/if}}
- <input type="hidden" value="{{Id}}" name="SelectieId" data-val-required="Trebuie aleasa o selectie de plati" data-val-number="Campul de identificare a selectie trebuie sa fie format dintr-un numar" data-val="true">
- {{#each DosareSelectate}}
- <input type="hidden" name="Dosare[0].DosarId" value="{{DosarId}}"/>
- <input type="hidden" name="Dosare[0].EsteFinal" value="{{IsSelected}}">
- <input type="hidden" name="Dosare[0].Suma" value='{{Suma}}' data-val-required="E necesara o suma!" data-val-range-min="1" data-val-range-max="{{SumaMaxima}}" data-val-range="Suma trebuie sa fie mai mare decat 0" data-val-number="Suma trebuie sa fie un numar." data-val="true">
- {{/each}}
- <div class="control-group required ">
- <label class="control-label" for="SumaExecutata">Suma</label>
- <div class="controls">
- <input type="text" value="{{Suma}}" readonly="readonly" name="SumaExecutata" data-val-required="E necesara o suma!" data-val-range-min="1" data-val-range-max="{{SumaMaxima}}" data-val-range="Suma trebuie sa fie mai mare decat 0" data-val-number="The field Suma must be a number." data-val="true">
- <span data-valmsg-replace="true" data-valmsg-for="SumaExecutata" class="field-validation-valid help-inline"></span>
- </div>
- </div>
- <div>
- <table class="table table-hover table-condensed">
- <thead>
- <tr>
- <th>Numar Dosar</th>
- <th>Numar Polita</th>
- <th>Data Propunere</th>
- <th>Banca</th>
- <th>Cont</th>
- <th>Titular</th>
- <th>CNP</th>
- <th>DataMaxPlata</th>
- <th>Valoare</th>
- <th><button class="btn btn-mini" type="button">Ales</button></th>
- <th>Suma executata</th>
- <th><button type="button" class="btn btn-mini">Final</button></th>
- </tr>
- </thead>
- <tbody>
- {{#each Dosare}}
- <tr>
- <td>{{NumarDosar}}</td>
- <td>{{NumarPolita}}</td>
- <td>{{DataPropunere}}</td>
- <td>{{Banca}}</td>
- <td>{{Cont}}</td>
- <td>{{Titular}}</td>
- <td>{{CNPCUI}}</td>
- <td>{{DataMaxPlata}}</td>
- <td>{{Valoare}}</td>
- <td>
- <input type="checkbox" can-value='IsSelected'/ >
- </td>
- <td>
- <input type="text" name="Dosare[0].Suma" can-value='Suma' {{#IsSelected}} disabled="disabled" {{/IsSelected}} class="input-small" data-val-required="E necesara o suma!" data-val-range-min="1" data-val-range-max="{{SumaMaxima}}" data-val-range="Suma trebuie sa fie mai mare decat 0" data-val-number="Suma trebuie sa fie un numar." data-val="true">
- {{#IsSelected}}
- <span data-valmsg-replace="true" data-valmsg-for="Dosare[0].Suma" class="field-validation-valid help-inline"></span>
- {{/IsSelected}}
- </td>
- <td><input type="checkbox" name="Dosare[0].EsteFinal" value="true" {{#IsSelected}} disabled="disabled" {{/IsSelected}}></td>
- </tr>
- {{/each}}
- </tbody>
- </table>
- <ul class="pager">
- <li class="{{#unless CanPrev}}disabled{{/unless}}"><a href="#" can-click="Prev">Previous</a></li>
- <li class="{{#unless CanNext}}disabled{{/unless}}"><a href="#" can-click="Next">Next</a></li>
- </ul>
- </div>
- </section>
- </div>
- <div class="modal-footer">
- <button class="btn btn-success" id="submitExecutie" type="submit" {{#if Errors.length}} disabled="disabled" {{/if}}>Salvati selectie</button>
- <button data-dismiss="modal" class="btn" type="reset">Inapoi</button>
- </div>
- </form>
- (function ($, can) {
- var DosareDauna = can.Model.extend({
- findAll: "/conta/Plati/GetDosareForSelectie"
- }, {});
- can.Component.extend({
- tag: "executadosare",
- template: can.view("selecteazaDosare"),
- init: function() {
- },
- scope: {
- Count: Infinity,
- Offset: 0,
- Limit: 25,
- Prev: function () {
- //todo
- },
- Next: function () {
- //todo
- },
- CanNext: function () {
- return this.attr('Offset') < this.attr('Count') - this.attr('Limit');
- },
- CanPrev: function () {
- return this.attr('Offset') > 0;
- },
- ToateDosarele: can.compute( function () {
- var self = this;
- var id = self.attr('id');
- dosareDeferred = DosareDauna.findAll({ id: 26 }),
- dosareDeferred.then(function (dosare) {
- self.attr('Count', dosare.length);
- });
- return dosareDeferred;
- }),
- Dosare : can.compute( function(){
- var self = this;
- var dosare = can.Deferred();
- self.attr('ToateDosarele').then(function (toateDosarele) {
- var lazyDosare = [];//def.resolve({ animals: [ 'pig', 'cow' ] })
- toateDosarele.forEach(function (element, index, list) {
- if (index >= self.attr('Offset') && index < (self.attr('Offset') + self.attr('Limit'))) {
- lazyDosare.push(element);
- }
- });
- dosare.resolve( lazyDosare );
- });
- return dosare;
- }),
- DosareSelectate: can.compute(function(){
- var self = this;
- var selectate = can.Deferred();
- self.attr('ToateDosarele').then(function (toateDosarele) {
- var lazyDosare = [];
- toateDosarele.forEach(function (element, index, list) {
- if (element.attr('IsSelected') === true) {
- lazyDosare.push(element);
- }
- });
- selectate.resolve(lazyDosare);
- });
- return selectate; // [1, 4, 9]
- }),
- Errors: [],
- }
- });
- }(jQuery, can));