vue_crud 0.1.9.9 → 0.1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40d52197d5a622260d03585e2cfb9c75cae50a7f
4
- data.tar.gz: af620b33a8f9ffe73b440b73a19d619d8006e2cf
3
+ metadata.gz: abae5940ab3389b7e2048b209e5fab59f7887d1b
4
+ data.tar.gz: 0e8044954b536c4535835c0dbb7cf1e223f35730
5
5
  SHA512:
6
- metadata.gz: f0bee3dbd0cf666c8bbc37ea95c8980c4e6e1b37f345bad8386ccf51a9645680dae60705a47ea2febc449ff37d4b7d5d40454f28d285952d4515aa962f32cca0
7
- data.tar.gz: df17eebc41a7c88f32b1f02dd131b21ecb6d83f7f02a1a77550e30ab8efe6b9ea4e1e94d8dc847a0ccd7ee7fb929cf0da3ef8595c80a40879547b9d8ff99beee
6
+ metadata.gz: 4baf2d67fb5fa2ccc416fc60947d6ea5345a09732e1b1251d2a03f9bb0c6227e2e1537d6288ac026addca6156b66160e64b78820d833d359b40dc3c880e83fcd
7
+ data.tar.gz: b67c9f5ce30ecc5cb0e5a6148c263aabd31b7d37a2405a11340beacc2c4e2a96b51cb2305df78cc1419e09c186ca5eada222424d8b67ded207965a185741639d
@@ -146,7 +146,7 @@ $(document).ready(function() {
146
146
  </script>
147
147
  <!-- NOTE: Templates -->
148
148
  <script type="text/x-template" id="models-table">
149
- <tr>
149
+ <tr :class="{'is_deleted': is_deleted}">
150
150
  <td v-for="(attribute, i) in info.model_attributes" v-if="attribute.visible" :class="{'sort-here': i == 0, highlight: attribute.model_prefix + '.' + attribute.name == selected_attribute}">
151
151
  <p v-if="attribute.model_prefix">
152
152
  <span v-if="attribute.type != 'img'">
@@ -170,12 +170,19 @@ $(document).ready(function() {
170
170
  </p>
171
171
  </td>
172
172
  <td style="position: relative;">
173
- <a @click="updateModel(false)" onclick="return false" class="ui orange right corner label" v-show="modified" title="您有尚未儲存的變更">
173
+ <a @click="restoreModel" onclick="return false" class="ui red right corner label" v-show="is_deleted" title="您已刪除,點擊復原">
174
+ <i class="repeat icon"></i>
175
+ </a>
176
+ <a @click="restoreModel" onclick="return false" class="ui red right corner label" v-show="is_restore_failed" title="復原失敗">
177
+ <i class="warning circle icon"></i>
178
+ </a>
179
+ <a @click="updateModel" onclick="return false" class="ui orange right corner label" v-show="modified" title="您有尚未儲存的變更">
174
180
  <i class="save icon"></i>
175
181
  </a>
176
182
  <a class="ui green right corner label" v-show="is_success" title="儲存成功">
177
183
  <i class="check icon"></i>
178
184
  </a>
185
+
179
186
  <!-- NOTE: Custom action -->
180
187
  <div class="inline-block custom_action"></div>
181
188
  <div class="ui animated fade blue button" @click="openModal('編輯')" tabindex="0">
@@ -237,8 +244,10 @@ $(document).ready(function() {
237
244
  </div>
238
245
  </div>
239
246
  <div class="extra content">
240
- <div class="ui orange right ribbon label" v-show="modified">您有尚未儲存的變更,<a href="#" @click="updateModel(false)" onclick="return false" class="save_now">立即儲存</a></div>
247
+ <div class="ui red right ribbon label" v-show="is_deleted">您已刪除,點擊<a href="#" @click="restoreModel" onclick="return false" class="save_now">復原</a></div>
248
+ <div class="ui orange right ribbon label" v-show="modified">您有尚未儲存的變更,<a href="#" @click="updateModel" onclick="return false" class="save_now">立即儲存</a></div>
241
249
  <div class="ui teal right ribbon label" v-show="is_success">儲存成功</div>
250
+ <div class="ui red right ribbon label" v-show="is_restore_failed">復原失敗</div>
242
251
  <div class="ui divider"></div>
243
252
  <!-- NOTE: Custom action -->
244
253
  <div class="inline-block custom_action"></div>
@@ -1,3 +1,3 @@
1
1
  module VueCrud
2
- VERSION = "0.1.9.9"
2
+ VERSION = "0.1.10.0"
3
3
  end
@@ -83,6 +83,7 @@ function vueCRUD_init(params = {}) {
83
83
  Vue.directive('sortable', {
84
84
  inserted: function (el) {
85
85
  if(options.sortable) {
86
+ filter: '.is_deleted';
86
87
  var sortable = new Sortable(el, {
87
88
  onUpdate: function (evt) {
88
89
  event_hub.$emit('updateSort');
@@ -205,7 +206,9 @@ function vueCRUD_init(params = {}) {
205
206
  errors: {},
206
207
  modified: false,
207
208
  deleteMode: false,
208
- is_success: false
209
+ is_success: false,
210
+ is_deleted: false,
211
+ is_restore_failed: false
209
212
  }
210
213
  },
211
214
  watch: {
@@ -250,6 +253,14 @@ function vueCRUD_init(params = {}) {
250
253
  }.bind(this));
251
254
  event_hub.$emit('openModal');
252
255
  },
256
+ restoreModel: function() {
257
+ if(confirm("Are you sure?") == true) {
258
+ event_hub.$emit('restoreCreate', this.model);
259
+ }
260
+ else {
261
+
262
+ }
263
+ },
253
264
  deleteModel: function () {
254
265
  var that = this;
255
266
  that.deleteMode = true;
@@ -258,7 +269,20 @@ function vueCRUD_init(params = {}) {
258
269
  method: 'DELETE',
259
270
  url: that.info.url_prefix + '/' + that.model.id + options.suffix + location.search,
260
271
  success: function(res) {
261
- $(that.$el).remove();
272
+ that.is_deleted = true;
273
+ event_hub.$on('toggleRestoreSuccess', function() {
274
+ that.deleteMode = false;
275
+ that.is_deleted = false;
276
+ that.is_success = true;
277
+ sleep(1500).then(() => {
278
+ that.is_success = false;
279
+ });
280
+ }.bind(this));
281
+ event_hub.$on('toggleRestoreFail', function() {
282
+ that.is_deleted = false;
283
+ that.is_restore_failed = true;
284
+ alert('復原失敗,請記錄資料並重新建立');
285
+ }.bind(this));
262
286
  },
263
287
  error: function(res) {
264
288
  that.deleteMode = false;
@@ -352,6 +376,10 @@ function vueCRUD_init(params = {}) {
352
376
  event_hub.$on('update_progress', function(progress) {
353
377
  this.progress = progress;
354
378
  }.bind(this));
379
+ event_hub.$on('restoreCreate', function(model) {
380
+ this.model = model;
381
+ this.restoreModel();
382
+ }.bind(this));
355
383
  $('#form-progress').change(function(){
356
384
  event_hub.$emit('update_progress', $(this).val());
357
385
  });
@@ -404,9 +432,6 @@ function vueCRUD_init(params = {}) {
404
432
  setTimeout(function () {
405
433
  that.is_calculating = false
406
434
  }, 500)
407
- // TODO: Order by sort after refresh, now computed will not wait for
408
- // TODO: the component to finish done the update ajax
409
- //.sort((a, b) => a.sort > b.sort ? 1 : -1)
410
435
  return result.slice(
411
436
  that.pageStart,
412
437
  that.countOfPage + that.pageStart
@@ -437,6 +462,22 @@ function vueCRUD_init(params = {}) {
437
462
  this.currentPage = idx;
438
463
  updateQueryStringParam('p', this.currentPage);
439
464
  },
465
+ restoreModel: function () {
466
+ var that = this;
467
+ $.ajax({
468
+ method: 'POST',
469
+ data: {
470
+ model: that.model,
471
+ },
472
+ url: that.info.url_prefix + options.suffix + location.search,
473
+ success: function(res) {
474
+ event_hub.$emit('toggleRestoreSuccess');
475
+ },
476
+ error: function(res) {
477
+ event_hub.$emit('toggleRestoreFail');
478
+ }
479
+ });
480
+ },
440
481
  createModel: function () {
441
482
  var that = this;
442
483
  $.ajax({
@@ -465,21 +506,3 @@ function vueCRUD_init(params = {}) {
465
506
  }
466
507
  })
467
508
  }
468
- // $(document).ready(function() {
469
- // // $(document).delegate('[data-modal]', 'click', function(event) {
470
- // // var target = $(this).data('modal');
471
- // // $(target).modal({
472
- // // observeChanges: true,
473
- // // transition: 'fade down',
474
- // // onShow: function() {
475
- // // $(this).find('select.ui.dropdown').dropdown();
476
- // // $(this).find('.ui.checkbox').checkbox();
477
- // // if(typeof modalOpen !== "undefined") modalOpen(this);
478
- // // },
479
- // // onHide: function() {
480
- // // event_hub.$emit('cancel_customMode');
481
- // // if(typeof modalClose !== "undefined") modalClose(this);
482
- // // }
483
- // // }).modal('show');
484
- // // });
485
- // });
@@ -1,5 +1,16 @@
1
- #vue_crud .ui.cards > .card > .extra a.save_now {
2
- color: rgb(33, 133, 208);
1
+ #vue_crud a.save_now {
2
+ color: white !important;
3
+ opacity: 1 !important;
4
+ text-decoration: underline !important;
5
+ }
6
+ #vue_crud .ui.feed > .event > .content .summary img {
7
+ width: 100% !important;
8
+ height: auto !important;
9
+ }
10
+ #vue_crud .is_deleted {
11
+ opacity: 0.7;
12
+ }
13
+ #vue_crud .is_deleted:hover {
3
14
  opacity: 1;
4
15
  }
5
16
  #vue_crud .card .progress {
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vue_crud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9.9
4
+ version: 0.1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Donald Chiang
@@ -213,6 +213,7 @@ files:
213
213
  - vendor/assets/stylesheets/vue_crud.css
214
214
  - vue_crud-0.1.9.7.gem
215
215
  - vue_crud-0.1.9.8.gem
216
+ - vue_crud-0.1.9.9.gem
216
217
  - vue_crud.gemspec
217
218
  homepage: http://www.mynet.com.tw
218
219
  licenses: