Procházet zdrojové kódy

viewSkeletonRender / viewSkeletonUnrender

Adam Shaw před 7 roky
rodič
revize
fa6aca9cfd
3 změnil soubory, kde provedl 40 přidání a 17 odebrání
  1. 27 15
      src/View.ts
  2. 13 0
      src/component/DateComponent.ts
  3. 0 2
      src/list/ListView.ts

+ 27 - 15
src/View.ts

@@ -178,29 +178,39 @@ export default abstract class View extends DateComponent {
   }
 
 
-  // Date Rendering
+  // Skeleton Rendering
   // -----------------------------------------------------------------------------------------------------------------
 
 
-  // if dateProfile not specified, uses current
-  renderDates(dateProfile: DateProfile) {
-    super.renderDates(dateProfile)
-
-    this.title = this.computeTitle(dateProfile)
-    this.addScroll({ isDateInit: true })
-    this.startNowIndicator() // shouldn't render yet because updateSize will be called soon
-    this.triggerRenderedDates()
+  afterSkeletonRender() {
+    this.publiclyTriggerAfterSizing('viewSkeletonRender', [
+      {
+        view: this,
+        el: this.el
+      }
+    ])
   }
 
 
-  unrenderDates() {
-    this.triggerWillRemoveDates()
-    this.stopNowIndicator()
-    super.unrenderDates()
+  beforeSkeletonUnrender() {
+    this.publiclyTrigger('viewSkeletonDestroy', [
+      {
+        view: this,
+        el: this.el
+      }
+    ])
   }
 
 
-  triggerRenderedDates() {
+  // Date Rendering
+  // -----------------------------------------------------------------------------------------------------------------
+
+
+  afterDatesRender() {
+    this.title = this.computeTitle(this.dateProfile)
+    this.addScroll({ isDateInit: true })
+    this.startNowIndicator() // shouldn't render yet because updateSize will be called soon
+
     this.publiclyTriggerAfterSizing('datesRender', [
       {
         view: this,
@@ -210,13 +220,15 @@ export default abstract class View extends DateComponent {
   }
 
 
-  triggerWillRemoveDates() {
+  beforeDatesUnrender() {
     this.publiclyTrigger('datesDestroy', [
       {
         view: this,
         el: this.el
       }
     ])
+
+    this.stopNowIndicator()
   }
 
 

+ 13 - 0
src/component/DateComponent.ts

@@ -375,12 +375,14 @@ export default abstract class DateComponent extends Component {
 
     if (flags.skeleton) {
       this.renderSkeleton()
+      this.afterSkeletonRender()
       renderedFlags.skeleton = true
       dirtySizeFlags.skeleton = true
     }
 
     if (flags.dates && renderState.dateProfile) {
       this.renderDates(renderState.dateProfile)
+      this.afterDatesRender()
       renderedFlags.dates = true
       dirtySizeFlags.dates = true
     }
@@ -457,11 +459,13 @@ export default abstract class DateComponent extends Component {
     }
 
     if ((!flags || flags.dates) && renderedFlags.dates) {
+      this.beforeDatesUnrender()
       this.unrenderDates()
       renderedFlags.dates = false
     }
 
     if ((!flags || flags.skeleton) && renderedFlags.skeleton) {
+      this.beforeSkeletonUnrender()
       this.unrenderSkeleton()
       renderedFlags.skeleton = false
     }
@@ -489,6 +493,10 @@ export default abstract class DateComponent extends Component {
   }
 
 
+  afterSkeletonRender() { }
+  beforeSkeletonUnrender() { }
+
+
   unrenderSkeleton() {
     // subclasses should implement
   }
@@ -504,12 +512,17 @@ export default abstract class DateComponent extends Component {
   }
 
 
+  afterDatesRender() { }
+  beforeDatesUnrender() { }
+
+
   // date-cell content only
   unrenderDates() {
     // subclasses should override
   }
 
 
+
   // Now-Indicator
   // -----------------------------------------------------------------------------------------------------------------
 

+ 0 - 2
src/list/ListView.ts

@@ -95,8 +95,6 @@ export default class ListView extends View {
     this.dayRanges = dayRanges
 
     // all real rendering happens in EventRenderer
-
-    super.renderDates(dateProfile) // important for firing datesRender
   }